010 BAZY DANYCH Prof. dr hab. Marek Wisła
Baza danych pojęcie sięgające wieków Dane pewien zasób ludzie od zawsze próbują gromadzić dane i wnioskować (uzyskiwać informacje) na ich podstawie komputery tylko ułatwiają przetwarzanie danych
Baza danych Zbiór danych opisujący pewien wybrany fragment rzeczywistości będziemy nazywać bazą danych. Bazy danych posiadają cztery podstawowe cechy: dane odzwierciedlają rzeczywistość w sposób z nią zgodny (aspekt semantyczny), dane są zorganizowane w logiczny sposób, zgodnie z tzw. modelem danych (aspekt składniowy), na danych można wykonywać określone operacje (aspekt operacyjny), baza jest projektowana, tworzona i utrzymywana przez grupę użytkowników (aspekt pragmatyczny). Struktura danych i powiązania między nimi są opisane przez tzw. schemat bazy danych.
Baza danych Każda baza danych posiada: źródło danych użytkowników zainteresowanych zawartością bazy związek z reprezentowaną rzeczywistością
SZBD Baza danych jest zarządzana przez tzw. System zarządzania bazą danych, w skrócie SZBD (ang. DBMS). SZBD i bazę danych będziemy dalej nazywać systemem bazy danych. System Bazy Danych = Baza Danych + SZBD
Funkcje SZBD Definiowanie bazy danych: określanie typów i struktury danych oraz wprowadzanie ograniczeń (warunków spójności) Konstruowanie bazy danych: wypełnianie bazy danymi i zapamiętywanie danych na nośnikach obsługiwanych przez SZBD Manipulowanie bazą danych: generowanie (optymalnych) zapytań do bazy, wyszukiwanie informacji, uaktualnianie danych obejmujące modyfikowanie, dołączanie i usuwanie danych; zestawienia i raporty Udostępnianie bazy danych jednocześnie wielu użytkownikom, zapewnienie spójności danych (transakcje) Ochronę bazy danych: ograniczanie możliwości uzyskania nieautoryzowanego dostępu, zapewnienie możliwości tworzenia kopii bezpieczeństwa i odzyskiwania danych Konserwowanie bazy danych: dbanie o pracę bazy: Indeksowanie, zmniejszanie bazy
Twórcy i użytkownicy baz danych Analityk/projektant systemów SZBD - programista systemów SZBD Analityk bazy danych - projektant bazy danych Programista bazy danych twórca aplikacji Administrator bazy danych Użytkownik końcowy Obsługa techniczna (infrastruktura)
Płaskie pliki Przed wprowadzeniem komercyjnych systemów baz danych, istniały systemy będące niczym innym, jak zbiorami płaskich plików (ang. flat files). Nazwa płaski plik wiąże się z faktem, iż pliki nie były ze sobą połączone, więc nie istniała możliwość stworzenia relacji pomiędzy danymi. Idealnym nośnikiem dla przechowywania płaskich plików jest taśma magnetyczna. Przechowywanie danych na taśmie jest kilkaset razy tańsze, niż wykorzystywanie w tym celu pamięci dyskowej, a dodatkowo taśma, podobnie jak płaski plik, posiada strukturę liniową. Płaskie pliki są nadal wykorzystywane przez niektóre przedsiębiorstwa do przechowywania dużych ilości danych, które są bardzo rzadko zmieniane i używane.
Flat File Model http://en.wikipedia.org/wiki/flat_file_database
Flat file model
Przykład płaskiego pliku
BDAM Metoda bezpośredniego dostępu BDAM (Basic Direct Access Method) - metoda wykorzystująca algorytm mieszający (ang. hashing algorithm) w celu określenia adresu konkretnego rekordu na dysku. Algorytm na podstawie dostarczonego klucza, będącego zazwyczaj częścią przechowywanego rekordu, generuje unikalny adres dyskowy, lokalizujący rekord. W metodzie BDAM po raz pierwszy nastąpiło oddzielenie metod dostępu fizycznego od metod dostępu logicznego. Oznacza to, iż rekord może zostać wyszukany na podstawie klucza, a użytkownik nie musi się interesować, gdzie fizycznie rekord znajduje się na dysku
BDAM http://pl.wikipedia.org/wiki/plik:dysk_schemat_pl.svg
Wady i zalety BDAM Koszt związany z ilością wykorzystywanej przestrzeni dyskowej. Rekordy są rozproszone po całym dysku, a wolna przestrzeń pomiędzy nimi nie może zostać wykorzystana do innych celów, gdyż w przyszłości nowy rekord może zostać tam przyporządkowany przez algorytm mieszający. Pomimo problemów związanych z wykorzystaniem przestrzeni dyskowej i unikalnością kluczy, metoda BDAM pozostaje nadal jednym z najszybszych sposobów do przechowywania i przetwarzania informacji.
ISAM Metoda indeksowanego dostępu Działanie tej metody opiera się na tworzeniu pliku z indeksami. W najprostszej postaci indeks składa się z dwóch pól. Pierwsze pole jest symbolicznym kluczem, natomiast drugie pole zawiera adres dyskowy powiązanego z tym kluczem rekordu. W większości systemów, plik z indeksami jest przechowywany jako całkowicie oddzielny plik. W celu odszukania rekordu, system przeszukuje indeks w celu odnalezienia klucza, a następnie pobiera rekord z określonej pozycji na dysku (a nie taśmie!).
ISAM - przykład
Model hierarchiczny Grupowanie danych w formie kolejnych poziomów drzewa danych - często przedstawiany jest poprzez model rodzicpotomek. Rodzic posiada pewną liczbę potomków, potomkowie mogą mieć swoich potomków itd. Dane (najczęściej w formie pojedynczego rekordu) są powiązane z innymi danymi w tym samym drzewie (z innymi rekordami). Model budowany jest przeważnie w formie indukcyjnej tzn. dane są grupowane od ogółu do szczegółu. Wyszukiwanie danych polega na kolejnym zagłębianiu się w coraz to głębsze, kolejne poziomy danych.
Model hierarchiczny Wadą modelu hierarchicznego jest brak możliwości budowania relacji pomiędzy rekordami różnych drzew danych. Zakłada się podstawowe warunki integralności danych: każdy rekord (z wyjątkiem pierwszego rodzica - korzenia drzewa) musi posiadać jednego rodzica. Jeżeli usunięty zostaje dany rekord oznacza to, że usunięte zostają również wszystkie wywodzące się z niego rekordy potomkowie.
Model hierarchiczny Dane A Dane B
CODASYL 60 W latach sześćdziesiątych powstało kilka systemów zarządzania bazami danych, wykorzystujących sieciowy system zarządzania bazą danych, stworzony przez organizację CODASYL (Conference On Data Systems Languages). Specyfikacje wydane przez CODASYL nazywały stworzony model sieciowym modelem danych. Model ten stał się podstawą dla wielu późniejszych systemów, jak na przykład wprowadzonego w 1970 roku IDMS firmy Cullinet.
CODASYL Specyfikacje CODASYL zawierały definicje schematu bazy danych, języka kontroli urządzeń DMCL (Device Media Control Language) oraz języka manipulacji danymi DML (Data Manipulation Language). W skład specyfikacji wchodził także opis fizycznej struktury plików z danymi. Logiczna struktura bazy danych definiowana była za pomocą języka definiowania danych DDL (Data Definition Language).
CODASYL W sieciowym modelu danych CODASYL dane posiadają wewnętrzne identyfikatory (lub adresy), zaś związki semantyczne pomiędzy danymi reprezentowane są poprzez powiązania referencyjne lub wskaźnikowe. Struktura danych tworzy więc graf, czyli sieć. Model sieciowy jest bardzo złożony i skomplikowany w użyciu. Sieciowe bazy danych są bardzo trudne w nawigacji. Implementacja strukturalnych zmian w bazach tego typu jest niezwykle trudna.
Model sieciowy Możliwe jest powiązanie dowolnych danych z każdymi innymi. Każde powiązanie jest zdefiniowane za pomocą wskaźnika (z danego rekordu wskazujemy inny rekord) - w przypadku małych baz danych liczba wskaźników jest również niewielka, co umożliwia szybkie wyszukiwanie informacji. W przypadku dużych baz danych wielka liczba wskaźników znacznie ogranicza szybkość wyszukiwania informacji, co jest istotną wadą modelu.
Model sieciowy http://dervish.wsisiz.edu.pl/~colszews/bd3/wyklad_3.pdf
Różnice Zasadnicza różnica pomiędzy modelem hierarchicznym i sieciowym polega na tym, że w modelu sieciowym dany rekord może mieć dowolną liczbę powiązanych z nim rekordów lub nie posiadać ich wcale. Natomiast w modelu hierarchicznym każdy rekord musi posiadać albo rodzica albo potomka.
Relacyjne bazy danych W roku 1970 dr Edgar Ted Codd z firmy IBM zaprezentował relacyjny model danych. Dane mają być przechowywane w prostych plikach liniowych, które to pliki nazywane są relacjami bądź tabelami. Jedną z największych zalet modelu relacyjnego w stosunku do poprzedników jest jego prostota. Zamiast konieczności poznawania mnóstwa komend języka DML, model relacyjny wprowadził język SQL w celu ułatwienia dostępu do danych i ich modyfikacji.
Relacyjne bazy danych Tabele są dwuwymiarowymi tablicami składającymi się z wierszy i kolumn. Wiersze nazywane są czasami krotkami (ang. tuples), natomiast kolumny atrybutami. Rekord jest wierszem tabeli, a pole jest kolumną w wierszu tabeli. Dla każdego atrybutu określony jest zbiór dopuszczalnych jego wartości, zwany dziedziną tego atrybutu Tabela posiada zawsze pole lub kilka pól, tworzące dla niej klucz główny (ang. primary key). W relacyjnych bazach danych tabele są niezależne, w przeciwieństwie do modeli hierarchicznego i sieciowego, gdzie występują połączenia wskaźnikowe. Tabele relacyjne mogą zawierać tylko jeden typ rekordu, natomiast każdy rekord posiada stałą liczbę wyraźnie nazwanych pól.
Relacyjne bazy danych - zalety Relacyjne bazy danych wprowadziły następujące ulepszenia w stosunku do hierarchicznych i sieciowych baz danych: Prostota. Podejście bazujące na tabelach z wierszami i kolumnami jest niezwykle proste i łatwe do zrozumienia. Końcowi użytkownicy mają prosty model danych. Złożone diagramy, wykorzystywane w przypadku hierarchicznych i sieciowych baz danych, nie występują w przypadku relacyjnych baz danych.
Relacyjne bazy danych - zalety Niezależność danych Niezależność danych pozwala na modyfikowanie struktury danych bez wpływu na istniejące programy. Jest to możliwe głównie dlatego, że tabele nie są ze sobą połączone na sztywno. Do tabel mogą być dodawane kolumny, tabele mogą być dołączane do bazy danych, a nowe relacje mogą być tworzone bez konieczności wprowadzania istotnych zmian do tabel. Relacyjne bazy danych dostarczają dużo wyższy poziom niezależności danych, niż hierarchiczne i sieciowe bazy danych.
Relacyjne bazy danych - zalety Deklaratywny język dostępu do danych. Dzięki wykorzystaniu języka SQL, użytkownik określa jedynie warunki odnośnie poszukiwanych danych, system natomiast zajmuje się pobraniem danych spełniających żądanie. Nawigacja w bazie danych jest ukryta przed użytkownikiem końcowym, w odróżnieniu od języka DML w systemie CODASYL, gdzie użytkownik musi znać wszelkie szczegóły określające ścieżkę dostępu do danych.
Klucze Klucz może zostać utworzony na podstawie jednego lub kilku pól tabeli. Klucz główny musi jednoznacznie identyfikować wiersz w tabeli i nie może zawierać wartości NULL. Klucz obcy (ang. foreign key), którego wartością jest wartość pewnego klucza głównego innej tabeli, pozwala na łączenie tabel między sobą.
Historia RDM 1971-1975 Zażarta walka ideologiczna pomiędzy zwolennikami RDM a zwolennikami koncepcji sieciowych baz danych opartych o propozycję grupy DBTG komitetu CODASYL. Walka toczy się o pieniądze rzędu 100 miliardów dolarów w skali 20 lat. 1971-1985 Intensywny rozwój teorii związanych z RDM. RDM stał się ulubionym konikiem grup teoretycznych na całym świecie (kilka tysięcy publikacji). 1975-2000 Intensywny rozwój technologii opartych o RDM. Powstały m.in. bazy DB2, Oracle, Ingres, dbase, następnie Informix, Progress, Sybase, MS SQL i wiele innych.
Historia RDM 1975 Pierwsze publikacje na temat języka Sequel, poprzednika SQL, autorów z IBM (Chamberlin). 1986 Pierwszy standard języka SQL zaaprobowany przez ANSI. Wykazuje liczne odstępstwa od RDM. 1989, 1992 Następne standardy SQL. 1987 E.F.Codd, sfrustrowany odstępstwami od RDM, publikuje słynne 12 reguł prawdziwego systemu relacyjnego. Żaden z istniejących systemów nie jest prawdziwym systemem relacyjnym. Ma rację, ale nikt tym się nie przejmuje. Prawdziwego systemu relacyjnego chyba już nigdy nie będzie. 1985-2006 Intensywna krytyka wad RDM. Świat naukowy zredukował swoje zainteresowanie RDM praktycznie do zera. Świat komercyjny rozbudowuje systemy bez jakiejkolwiek troski o ideologię RDM.
Podstawowe założenia RDM Relacje i ich kolumny posiadają nazwy. Nazwy kolumn są określane jako atrybuty. Każda relacja posiada wyróżniony atrybut lub grupę atrybutów określną jako klucz. Wartość klucza w unikalny sposób identyfikuje krotkę relacji. Jakakolwiek inna identyfikacja krotki (np. wewnętrzny identyfikator) jest niewidoczna dla użytkownika. Manipulacja relacjami odbywa się w sposób makroskopowy przy pomocy operatorów algebry relacji lub innego tego rodzaju języka. Przetwarzanie krotka po krotce jest niedozwolone.
Przykład relacji Towary Relacja Atrybuty Krotka Kod Opis Cena Typ Magazyn Waga KOMP_ DELL Dell 2500,00 S 01 2,5 Dziedzina {S,Z,V}
RDM
SZBD model obiektowy Model obiektowy danych opiera się na założeniach programowania obiektowego tzn. na sposobie modelowania rzeczywistości poprzez parametry i operacje (metody) Nie tworzy się opisu obiektu rzeczywistego, lecz jego model (klasę) obejmujący wszystkie te elementy, które go charakteryzują (parametry i operacje (inaczej: własności i metody)) Obiekt jest jednostkowym wystąpieniem elementu z określonej klasy. Podstawową relacją pomiędzy klasami (obiektami) jest dziedziczenie, Określenie klasy A jako dziedziczącej z klasy B należy tłumaczyć jako rozszerzenie liczby własności oraz metod klasy A o te, które zostały zdefiniowane w klasie B.