/ModelRelacyjny
Spis treści
TI:WTBD/ModelRelacyjny
Jest najważniejszym z tzw. klasycznych modeli danych, zarówno ze względu na rozległość zastosowań, jak i na w miarę solidne podstawy teoretyczne.
Model relacyjny (jego podstawy teoretyczne) wywodzi się z prac EF Codd'a (1970). Pierwsze implementacje stworzono w MIT (wczesne lata 1970-te) i w U.C. Berkeley (Ingres; 1974). Pierwszą wersję Oracle opartą na SQL wprowadzono na rynek w 1979; wkrótce potem swoje produkty wprowadził IBM.
- Inne modele danych zaliczane do klasycznych to model hierarchiczny i model sieciowy. Ich praktyczne znaczenie jest współcześnie niewielkie, chociaż można powiedzieć, że popularność XML jest w jakimś sensie odrodzeniem modelu hierarchicznego.
- Zdecydowana większość systemów bazodanowych stosowanych w biznesie i administracji opartych jest (przynajmniej nominalnie) na relacyjnych SZBD.
Najbardziej rozpowszechnione obecnie SZBD, oparte na zasadach modelu relacyjnego i na języku SQL, to: Oracle, Microsoft SQL Server, IBM ~DB2, Sybase -- produkty komercyjne; PostgreSQL, MySQL -- produkty Open Source; SQLite -- biblioteka implementująca bazę relacyjną wbudowaną w aplikację, kod Public Domain: występuje pewnie w największej liczbie egzemplarzy (jest wbudowana praktycznie w każdy smartfon).
Definicja danych
- Relacja
- Pojęcie relacji pochodzi z teorii mnogości, która jest zresztą formalną podstawą modelu relacyjnego.
Przypomnijmy: relacja to podzbiór iloczynu kartezjańskiego dwu lub więcej dziedzin, a więc podzbiór zbioru wszystkich krotek uporządkowanych, gdzie k-ty element pochodzi z k-tej dziedziny.
W ramach modelu relacyjnego, synonimem relacji jest tabela, ale to nie jest to samo co tabela w języku potocznym.
- baza
- jest zbiorem relacji
- każda relacja jest określona przez swoją nazwę
- kolumny
- każda kolumna (pozycja w krotce) ma swoją nazwę, jednoznaczną w ramach danej relacji, i swoją dziedzinę - to razem określa kolumnę (posługujemy się nazwami kolumn zamiast pozycji w krotce)
- kolumny relacji (zwane też atrybutami) tworzą zbiór nieuporządkowany
- wiersze tabeli
- (krotki należące do relacji) również tworzą zbiór nieuporządkowany
- pola
- każde pole (przecięcie wiersza z kolumną) zawiera wartość atomową z dziedziny danej kolumny. Lub też wartość specjalną NULL, oznaczającą że wartość jest nieokreślona lub nieznana. Definicja dziedziny kolumny może wykluczać występowanie NULL.
- klucz główny
- każda relacja zawiera klucz główny: kolumnę lub zbiór kolumn, o wartościach różnych od NULL, których podanie jednoznacznie wyznacza wiersz. W szczególności, wiersze się nie powtarzają.
- klucz obcy
- jest podstawowym mechanizmem ustanawiania związków pomiędzy relacjami: klucz obcy wiążący tabelę B z tabelą A to kolumna lub grupa kolumn z tabeli B, o dziedzinie ewent. dziedzinach pokrywających się z dziedzinami kolumny lub kolumn tworzących klucz główny tabeli A, z dodatkowym warunkiem, że wartości pól klucza obcego występują jako wartości klucza głównego w tabeli A.
Operacje na danych
Są definiowane teoriomnogościowo. Argumentami każdej operacji są relacje (jedna lub dwie; dwie pierwsze operacje poniżej są 1-argumentowe, a pozostałe -- 2-argumentowe); wynikiem również jest zawsze relacja (czasami używa się określenia zbiór wynikowy dla podkreślenia, że nie chodzi o jedną z relacji wchodzących w skład definicji danych w bazie (schematu danych), a o wynik operacji).
- selekcja
- wybór podzbioru wierszy relacji
- rzut
- wybór podzbioru kolumn relacji
- iloczyn kartezjański
- relacja, której zbiór wierszy stanowi iloczyn kartezjański zbiorów wierszy relacji - czynników iloczynu (a kolumny - to suma zbiorów kolumn relacji-czynników)
- równozłączenie
- gdy w iloczynie kartezjańskim występują jako czynniki dwie relacje, z których każda posiada kolumnę o tej samej dziedzinie, co odp. kolumna w drugiej relacji, to równozłączenie uzyskuje się z iloczynu kartezjańskiego poprzez selekcję za pomocą warunku równości pól w tychże kolumnach
- złączenie naturalne
- złączenie naturalne powstaje z równozłączenia poprzez rzut, redukujący do jednej kolumny dwie kolumny, które na mocy warunku równozłączenia mają równe wartości dla każdego wiersza
- złączenie zewnętrzne
- złączenie zewnętrzne (lewostronne) powstaje z równozłączenia, jeżeli zbiór wierszy je tworzących uzupełnimy w taki sposób, że dla każdego wiersza lewego czynnika, który nie jest reprezentowany w równozłączeniu, dodamy do równozłączenia wiersz, gdzie pola kolumn pochodzących z prawego czynnika wypełnimy wartościami NULL. Analogicznie tworzy się złączenie prawostronne i obustronne
- suma
- relacja składająca się z sumy teoriomnogościowej wiersszy dwóch relacji, o identycznych (co do nazw i dziedzin) zestawach kolumn
- przecięcie
- jw. ale iloczyn teoriomnogościowy
- różnica
- jw. ale różnica teoriomnogościowa
Integralność danych
Do zdefiniowania co jest poprawnym stanem bazy, w modelu relacyjnym używa się następujących narzędzi:
- Integralność encji
- (warunek klucza głównego) klucz główny nigdy nie jest NULL, a jego wartości się nie powtarzają
- integralność referencyjna
- warunek klucza obcego -- klucz obcy przyjmuje jedynie takie wartości, które występują w odp. kolumnie tabeli powiązanej. Zmiana danych w tabeli powiązanej mogłaby potencjalnie prowadzić do naruszenia tego warunku (zbiór dozwolonych wartości klucza obcego ulega zmianie), czyli niepoprawnego stanu bazy. Aby do tego nie dopuścić, stosuje się jedną z 3 reguł:
- Restricted: operacja zmieniająca dane, prowadząca do unieważnienia wartości klucza obcego, nie może być wykonana
- Cascades: operacja zmieniająca dane, prowadząca do unieważnienia wartości klucza obcego, pociąga za sobą usunięcie wierszy, której wskutek jej wykonania naruszałyby warunek klucza obcego
- Nullifies: wartości klucza obcego, które stałyby się nieważne, ulegają zastąpieniu przez NULL
- integralność dodatkowa (warunki CHECK)
- w zasadzie dowolne warunki (wyrażenia logiczne), których prawdziwość jest sprawdzana jako warunek wykonania operacji zmieniającej dane w tabeli