/ModelRelacyjny

Z Brain-wiki

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