Zapisz jako PDF
Transkrypt
Zapisz jako PDF
Spis treści 1 TI:WTBD/ModelRelacyjny 1.1 Definicja danych 1.2 Operacje na danych 1.3 Integralność danych 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