Śledź nas na:



Modele danych - bazy danych

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:

    • 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;

    • 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;

    • 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.



Zobacz także