Modele baz danych

advertisement
Modele baz danych
I. Hierarchiczny model danych
Hierarchiczny model danych jest pewnym rozszerzeniem modelu prostego, opartego na
rekordach składających się z pól i zgrupowanych w plikach. W schemacie hierarchicznym
wprowadza się typy rekordów i związki nadrzędny-podrzędny pomiędzy nimi.
Definicja danych
Typ rekordu to nazwana struktura danych, złożona ze zbioru nazwanych pól; każde pole
służy do zapisu pojedynczego atrybutu obiektu opisywanego przez rekord, i charakteryzuje
się określonym typem danych, np. liczba całkowita, napis, data, itp. Na ogół jedno z pól
danego typu rekordu wyróżnia się jako klucz, tj. unikalny identyfikator rekordu wśród
rekordów danego typu (często przydzielany dość arbitralnie, podobnie jak np. nr albumu
studenta lub nr PESEL w ewidencji ludności) oraz zakłada się uporządkowanie rekordów wg.
wartości jednego z pól (zwykle klucza, choć niekoniecznie).
Relacja nadrzędny-podrzędny: typy rekordów tworzą strukturę drzewa, tj. każdy typ
rekordu (z wyjątkiem najwyższego w hierarchii, tzw. korzenia -- root) związany jest z
dokładnie jednym typem nadrzędnym. Zarazem każdy określony rekord typu podrzędnego
jest związany z określonym rekordem właściwego typu nadrzędnego.
Państwo
Język
Waluta
Banknot
Rys. 1 Diagram hierarchicznego modelu danych
Moneta
Operowanie danymi
Typowe operacje na danych w tym modelu to wyszukiwanie rekordów określonego typu,
podrzędnych względem danego rekordu, i spełniających warunki dotyczące zawartości
określonych pól; usuwanie lub dodawanie rekordów i edycja ich pól. Realizowane są poprzez
funkcje lub procedury pisane w językach programowania o charakterze zazwyczaj
proceduralnym, np. C.
Integralność danych
Podstawowe warunki integralności wynikają z samej definicji struktury danych modelu:

Każdy rekord (z wyjątkiem korzenia) musi być powiązany z rekordem nadrzędnym
właściwego typu; a więc np. usunięcie rekordu nadrzędnego wiąże się z usunięciem
wszystkich względem niego podrzędnych. Nie można wstawić rekordu bez
powiązania go z rekordem nadrzędnym.

Zawartość każdego pola rekordu musi odpowiadać typowi danych z definicji danego
typu rekordu.
Itp.
Widać, że model hierarchiczny ma wiele wspólnego ze strukturą systemu plików.
II. Sieciowy model danych
Sieciowy model danych w ogólnym zarysie niewiele odbiega od hierarchicznego. W miejsce
związku nadrzędny-podrzędny pomiędzy rekordami wprowadza się w nim tzw. typ kolekcji
(set), który jest złożonym typem danych pola zawierającym odniesienia do innych rekordów
określonego typu. Tzn. określenie typu kolekcji polega na podaniu typu rekordu-,,właściciela''
i typu rekordów-elementów kolekcji (oraz ew. klucza porządkowania elementów).
Operowanie danymi ma też charakter proceduralny: typowe operacje to wyszukiwanie
rekordu na podstawie zawartości pól i/lub przynależności do danego wystąpienia typu
kolekcji, i dokonywanie modyfikacji bieżącego rekordu.
Warunki integralności danych, poza oczywistymi już więzami dotyczącymi zgodności
zawartości pól rekordu z określeniem typu rekordu i unikalności pól kluczowych, mogą być
formułowane w terminach wymogu przynależności rekordu do jakiegoś wystąpienia
określonego typu kolekcji.
Państwo
Język
Waluta
Banknot
Moneta
Rys. 2 Diagram sieciowego modelu danych
III.
Relacyjny model danych
Relacyjny model danych został opracowany przez E. F. Codda w latach 70-80, i od mniej
więcej połowy lat 80 stał się podstawą architektury większości popularnych SZBD.
Naszkicuję tu dość pobieżnie teoretyczne zasady modelu. Należy przy tym pamiętać, że w
realnych implementacjach teoria ta bywa traktowana dość luźno tzn. jej zasady niekoniecznie
są w pełni przestrzegane czy implementowane. Stąd omówienie to będzie raczej
powierzchowne, ze względów praktycznych skupimy się w dalszym ciągu wykładu raczej na
realnych implementacjach modelu poprzez język SQL.
Definicja danych
Model relacyjny oparty jest na tylko jednej podstawowej strukturze danych -- relacji. Pojęcie
relacji można uważać za pewną abstrakcję intuicyjnego pojęcia tabeli, zbudowanej z wierszy i
kolumn, w której na przecięciu każdej kolumny z każdym wierszem występuje określona
wartość. Baza danych jest zbiorem relacji, o następujących własnościach:

Każda relacja w bazie danych jest jednoznacznie określona przez swoją nazwę.

Każda kolumna w relacji ma jednoznaczną nazwę (w ramach tej relacji).

Kolumny relacji tworzą zbiór nieuporządkowany. Kolumny nazywane bywają również
atrybutami.

Wszystkie wartości w danej kolumnie muszą być tego samego typu. Zbiór możliwych
wartości elementów danej kolumny nazywany bywa też jej dziedziną.

Również wiersze relacji tworzą nieuporządkowany zbiór; w szczególności, nie ma
powtarzających się wierszy. Wiersze relacji nazywa się też encjami.

Każde pole (przecięcie wiersza z kolumną) zawiera wartość atomową z dziedziny
określonej przez kolumnę. Brakowi wartości odpowiada wartość specjalna NULL,
zgodna z każdym typem kolumny (chyba, że została jawnie wykluczona przez
definicję typu kolumny).

Każda relacja zawiera klucz główny -- kolumnę (lub kolumny), której wartości
jednoznacznie identyfikują wiersz (a więc w szczególności nie powtarzają się).
Wartością klucza głównego nie może być NULL.
Do wiązania ze sobą danych przechowywanych w różnych tabelach używa się kluczy obcych.
Klucz obcy to kolumna lub grupa kolumn tabeli, o wartościach z tej samej dziedziny co klucz
główny tabeli z nią powiązanej.
Np. baza danych instytucji składającej się z wielu zakładów może zawierać tabele zakłady i pracownicy:
tabela zakłady zawiera m. in. kolumny kod_zakladu (klucz główny), nazwa, adres, kierownik,...; a
tabela pracownicy: kolumny nr_prac (klucz główny), nazwisko, zakład, pokój, telefon,
email,...; kolumna zakłady.kierownik może być kluczem obcym odnoszącym się do kolumny
pracownicy.nr_prac; zaś kolumna pracownicy.zakład - kluczem obcym odnoszącym się do
zakłady.kod_zakładu, etc. Unika się w ten sposób powielania tych samych danych w różnych tabelach,
co m. in. ułatwia utrzymanie zgodności pomiędzy zawartością bazy danych a stanem faktycznym.
Operacje na danych
W teoretycznym opisie modelu relacyjnego operacje na danych definiuje się w terminach tzw.
algebry relacyjnej. Operatory algebry relacyjnej mają za argumenty jedną lub więcej relacji, a
wynikiem ich działania zawsze jest też relacja.
Selekcja. Selekcja jest operacją jednoargumentową, określoną przez warunek dotyczący
wartości kolumn danej relacji. Wynikiem jej jest relacja zawierające te wszystkie encje
(wiersze) wyjściowej relacji, których atrybuty spełniają dany warunek.
Rzut. Rzut to operacja jednoargumentowa określona przez podzbiór zbioru kolumn danej
relacji, dająca w wyniku tabelę składającą się z tychże kolumn wyjściowej relacji.
Iloczyn kartezjański. Argumentami są dwie relacje, wynikiem -- relacja, ktorej wiersze są
zbudowane ze wszystkich par wierszy relacji wyjściowych. Operacja o znaczeniu raczej
teoretycznym.
Równozłączenie. Argumentami są dwie relacje, posiadające kolumny o tych samych
dziedzinach np. klucz główny jednej z nich i klucz obcy drugiej. Wynikiem jest tabela
otrzymana z iloczynu kartezjańskiego relacji wyjściowych poprzez selekcję za pomocą
warunku równości tych ,,wspólnych'' atrybutów.
Złączenie naturalne. Powstaje z równozłączenia dwóch tabel poprzez rzutowanie usuwające
powtarzające się kolumny złączenia. Rzeczywiście jest to operacja bardziej ,,naturalna''
aniżeli równozłączenie.
Złączenia zewnętrzne. Tu sprawa się komplikuje. Złączenia zewnętrzne tworzone są
podobnie jak złączenie naturalne, lecz z pozostawieniem w tabeli wynikowej także wierszy,
dla których nie zachodzi równość atrybutów złączenia: w przypadku złączenia lewostronnego
złączenie naturalne uzupełnia się o wiersze z pierwszego argumentu nie posiadające
odpowiednika (wierszu o równym atrybucie złączenia) w drugim argumencie; ,,brakujące''
atrybuty przyjmują wartość NULL. W złączeniu prawostronnym robi się to samo, ale
względem drugiego argumentu. Wreszcie złączenie obustronne obejmuje obydwie tabele
wyjściowe tą samą operacją.
Suma. Suma jest operatorem działającym na dwóch zgodnych relacjach (to jest o tych
samych kolumnach), produkującym relację której wiersze są sumą teoriomnogościową
wierszy z relacji wyjściowych.
Przecięcie. Przecięcie znowu wymaga dwóch zgodnych tabel, wynikiem jest tabela
zawierająca wiersze wspólne dla obu argumentów.
Różnica. Różnica jest określona dla dwóch zgodnych relacji i odpowiada dokładnie różnicy
teoriomnogościowej zbiorów wierszy tabel wyjściowych.
Algebra relacyjna może być uważana za proceduralny język zapytań modelu relacyjnego. To
znaczy, że dowolna informacja jaka jest do uzyskania z relacyjnej bazy danych może być
wydobyta za pomocą ciągu operacji algebry relacyjnej.
W praktyce w programowaniu aplikacji opartych na relacyjnych bazach danych nie korzysta
się na ogół z języka proceduralnego, lecz z deklaratywnego języka opartego na tzw. rachunku
relacyjnym (na ogół jest to SQL). Różnica polega na tym, że w języku proceduralnym
formułuje się sekwencję kroków prowadzących do pożądanego wyniku, natomiast język
deklaratywny służy do sformułowania tego, jaki wynik chcemy otrzymać. Oczywiście
zapytanie sformułowane w języku deklaratywnym musi zostać przełożone na pewną
procedurę aby mogło być wykonane -- jest to zadaniem implementacji DBMS. Bez
znajomości żargonu algebry relacyjnej trudno jest jednak chociażby zrozumieć dokumentację
systemów zarządzania baz danych (czy nawet opisy składni SQL).
Integralność danych
Model relacyjny dostarcza dodatkowych, specyficznych dla siebie postaci reguł integralności:

Integralność encji: każda tabela musi posiadać klucz główny, a wartości klucza
głównego muszą być w ramach tabeli unikalne i nie równe NULL. W szczególności,
zapobiega to wystąpieniu w tabeli powtórzeń wierszy.

Integralność referencyjna: każda wartość klucza obcego może być albo równa
jakiejś wartości klucza głównego występującej w tabeli powiązanej, lub (ewentualnie)
NULL. Pociąga to za sobą konieczność określenia reguły postępowania w wypadku
usuwania wiersza z tabeli powiązanej, co mogłoby unieważnić niektóre wartości
kluczy obcych w tabelach do niej się odnoszących. W grę wchodzą trzy postacie takiej
reguły:
o
Restricted: usunięcie wiersza jest zabronione, dopóki nie zostaną usunięte lub
odpowiednio zmodyfikowane wiersze z innych tabel, których wartości kluczy
obcych stałyby się wskutek tej operacji nieważne;
o
Cascades: usunięcie wiersza powoduje automatyczne usunięcie z innych tabel
wszystkich wierszy, dla których wartości kluczy obcych stały się nieważne;
o
Nullifies: nieważne wartości kluczy obcych ulegają zastąpieniu przez NULL.
W praktyce zazwyczaj jest pożądane stosowanie dalszych warunków integralności
(integralność dodatkowa). Na ogół istnieją w DBMS mechanizmy narzucenia takich
warunków, sformułowanych w języku algebry relacyjnej lub zbliżonym.
Download