Plan wykładu Model relacyjny Obiekty relacyjne Integralność danych relacyjnych Algebra relacyjna 1 Wstęp do modelu relacyjnego Od tego się zaczęło... E. F. Codd, A Relational Model of Data for Large Shared Data Banks, CACM 13, no. 6, June 1970. niezależność danych relacyjne obiekty danych normalizacja operatory relacyjne redundancja i spójność Postulaty Codda 1. Postulat informacyjny 2. Postulat dostępu 3. Postulat wartości NULL 4. Postulat słownika danych 5. Postulat pełnego języka danych 6. Postulat modyfikowania bazy danych przez perspektywy 7. Postulat modyfikowania danych 8. Fizyczna niezależność danych 9. Logiczna niezależność danych 10. Niezależność więzów spójności 11. Niezależność dystrybucyjna 12. Zabezpieczanie przed operacjami na niższych poziomach abstrakcji 1
Model relacyjny Model relacyjny to sposób prezentacji oraz manipulowania danymi, dotyczący: struktury danych jako relacji; integralności danych zachowanej poprzez klucze główne, obce, zawężenie dziedziny, unikalność, ograniczanie wartości pustych; operowania danymi poprzez selekcję, projekcję, złączenia i operacje na zbiorach. 2 Obiekty relacyjne Obiekty relacyjne Relacja R - tabela Krotka t - wiersz Atrybut A - kolumna Liczebność relacji m - liczba krotek w tabeli Stopień relacji n - liczba atrybutów Klucz główny K - jednoznaczny identyfikator tabeli Dziedzina D - zbiór dopuszczalnych wartości atrybutu Schemat relacji R(A 1, A 2,..., A n) Baza danych - zbiór relacji Schemat bazy danych - zbiór schematów relacji Dziedzina Dziedzina Dziedzina D (ang. domain) to zbiór wartości skalarnych tego samego typu. Dziedzina atrybutu Każdy atrybut A wywodzi się z dokładnie jednej dziedziny D. Relacja Relacja Relacja r(r) o schemacie R(A 1, A 2,..., A n ) na zbiorze dziedzin {D 1, D 2,..., D n } jest zbiorem krotek r = {t 1, t 2,..., t m } postaci t =< v 1, v 2,..., v n >, będących uporządkowaną listą, gdzie v i, dla 0 < i n należy do zbioru D i {NULL}, n jest stopniem relacji R, zaś m jej liczebnością. Każda relacja ma właściwe sobie znaczenie, które formalnie można przedstawić w postaci predykatu bądź funkcji logicznej. Predykat dla danej relacji stanowi kryterium zgody na jej uaktualnienie. 2
Rodzaje relacji Wyróżniamy relacje: nazwane, podstawowe, pochodne, perspektywy, perspektywy materializowane (migawki), wyniki zapytań, wyniki pośrednie. Własności obiektów relacyjnych Własności obiektów relacyjnych: nie istnieją podwójne krotki (powtarzające się), krotki nie są uporządkowane (ich kolejność nie ma znaczenia), atrybuty nie są uporządkowane (jw.), wszystkie wartości atrybutów są atomowe, w ramach bazy danych dziedziny mają jednoznaczne nazwy, w ramach bazy danych relacje nazwane mają jednoznaczne nazwy, w ramach relacji atrybuty posiadaja jednoznaczne nazwy. 3 Integralność danych relacyjnych Integralność danych relacyjnych Reguły integralności pomagają SZBD nadzorować poprawność danych wprowadzanych do bazy. Mogą one dotyczyć pojedynczego atrybutu bądź całej relacji. Wyróżniamy ograniczenia: klucze kandydujące, klucze główne (PRIMARY KEY), klucze alternatywne, klucze obce (FOREIGN KEY), unikalność (UNIQUE), zawężenie dziedziny (CHECK), wartość niepusta (NOT NULL). 3
Klucz kandydujący Klucz kandydujący Niech R będzie relacją. Klucz kandydujący w relacji R jest podzbiorem K zbioru atrybutów relacji R posiadającym własność jednoznaczności i nieredukowalności. Klucz kandydujący zawierający więcej niż jeden atrybut nazywa się kluczem złożonym, zaś zawierający dokładnie jeden atrybut - kluczem prostym. Klucze kandydujące zapewniają mechanizmy adresowania na poziomie krotek. Klucz główny i alternatywny W sytuacji, w której relacja posiada wiele kluczy kandydujących, jeden z nich powinien być wybrany jako klucz główny, pozostałe zaś określa się mianem kluczy alternatywnych. Klucz obcy Klucz obcy Niech R 2 będzie relacją. Klucz obcy relacji R 2 jest to podzbiór F K zbioru atrybutów R 2, taki że istnieje relacja R 1 (relacje R 1 i R 2 nie muszą być różne) z kluczem kandydującym CK oraz w każdej chwili każda wartość F K w aktualnej wartości relacji R 2 jest taka sama jak wartość CK w pewnej krotce aktualnej wartości relacji R 1. Wartość klucza obcego stanowi referencję do krotki docelowej zawierającej wartość odpowiadającego mu klucza kandydującego. Klucze na przykładzie 4
Ograniczenia atrybutu Na każdy atrybut relacji można narzucić ograniczenia dotyczące: dziedziny (określenie typu), niepowtarzalności wartości (UNIQUE), nie dopuszczania wartości pustej (NOT NULL), dowolny warunek logiczny ograniczający dziedzinę (CHECK). Integralność Integralność referencyjna Integralność referencyjna zapewnia, że baza nie zawiera żadnych niedopuszczalnych wartości klucza obcego i narzuca je poprzez tzw. więzy referencyjne. Integralność encji Żaden składnik klucza głównego relacji podstawowej nie może akceptować wartości pustej. Integralność atrybutu Wartości atrybutu są pobierane z odpowiedniej dziedziny. 4 Algebra relacyjna Zarys algebry relacyjnej Podstawowe operatory algebry relacynej: Rzut rzut (projekcja), restrykcja (selekcja), suma, przecięcie, różnica, iloczyn kartezjański, złączenie. Rzut (projekcja) Daje w wyniku relację złożoną z tych wszystkich wartości wskazanych atrybutów, które pozostały po usunięciu z relacji pozostałych atrybutów. 5
Rzut Notacja: π <atrybuty> (< nazwa relacji >) Właściwości: operacja nie jest komutatywna. Składanie operacji projekcji możliwe jest jedynie wtedy kiedy lista1 lista2: π <lista1> (π <lista2> (R)) = π <lista1> (R) Przykład: Nazwiska i płace z relacji pracownicy w języku SQL: π nazwisko,placa (pracownicy) SELECT nazwisko, placa FROM pracownicy; Restrykcja Restrykcja (selekcja) Daje w wyniku relację składajacą się ze wszystkich krotek, które spełniają określone warunki. Restrykcja Notacja: σ <warunki> (< nazwa relacji >) Warunek restrykcji ma postać < atrybut >< operator relacyjny >< literal > lub < atrybut >< operator relacyjny >< atrybut > Warunki są łączone operatorami logicznymi AND lub OR Właściwości: operacja jest komutatywna. Przykład: Pracownicy z działu 10 w języku SQL: σ <war1> (σ <war2> (R)) = σ <war2> (σ <war1> (R)) σ id dzialu=10 (pracownicy) SELECT * FROM pracownicy WHERE id_dzialu=10; 6
Rzut i restrykcja Złożenie operacji: Nazwiska i płace pracowników z działu 10 w języku SQL: π nazwisko,placa (σ id dzialu=10 (pracownicy)) SELECT nazwisko, placa FROM pracownicy WHERE id_dzialu=10; Operacje na zbiorach Suma Operacje sumy, przecięcia i różnicy są operacjami na zbiorach,będą wykonalne dla dwóch relacji jeżeli występuje zgodność typów - kompatybilność relacji. Dwie relacje: R(A 1, A 2,..., A n ) i S(B 1, B 2,..., B n ) są kompatybilne, jeżeli mają ten sam stopień i jeżeli D(A i ) = D(B i ) dla 1 i n. Suma dwóch relacji zgodnych typów R i S jest relacją zawierającą wszystkie krotki relacji R i S. Suma jest operacją komutatywną R S = S R. Suma - SQL WHERE id_dzialu=20 UNION WHERE id_dzialu=30; 7
Przecięcie Przecięcie dwóch relacji zgodnych typów R i S jest relacją zawierającą wszystkie krotki należące zarówno do relacji R jak i S. Przecięcie jest operacją komutatywną R S = S R. Przecięcie - SQL WHERE id_dzialu=20 INTERSECT WHERE id_dzialu=30; Różnica Różnica dwóch relacji zgodnych typów R i S jest relacją zawierającą wszystkie krotki należące do relacji R, a nie należące do relacji S. Różnica nie jest operacją komutatywną R S S R. 8
Różnica - SQL WHERE id_dzialu=20 MINUS WHERE id_dzialu=30; Iloczyn kartezjański Iloczyn kartezjański dwóch relacji R (o stopniu n R i liczebności m R ) oraz relacji S (o stopniu n S i liczebności m S ) jest relacją o stopniu n R + n S i liczebności m R m S zawierającą konkatenację wszystkich krotek należących do relacji R z wszystkimi krotkami należacymi do relacji S. Notacja: R S. Iloczyn kartezjański - SQL SELECT * FROM pracownicy CROSS JOIN dzialy; stary zapis: SELECT * FROM pracownicy, dzialy; 9
θ-złączenie θ-złączenie dwóch relacji R i S (o różnych nazwach atrybutów), dla dowolnego operatora porównania θ, stanowi restrykcję wykonaną na iloczynie kartezjańskim obu relacji, dla spełnionego warunku A R θb S, gdzie A R należy do zbioru atrybutów relacji R, zaś B S do relacji S. θ-złączenie Notacja: R <warunek zlaczenia> S lub R θ S Warunek złączenia: A R θb S, gdzie A R należy do zbioru atrybutów relacji R, zaś B S do relacji S θ {=,, <,, >, } Wśród θ-złączeń wyróżniamy równościowe, nierównościowe oraz złączenia zwrotne θ-złączenie - SQL SELECT * FROM pracownicy JOIN dzialy ON (pracownicy.id_dzialu = dzialy.id_dzialu); SELECT * FROM pracownicy JOIN dzialy USING(id_dzialu); stary zapis: 10
SELECT * FROM pracownicy, dzialy WHERE pracownicy.id_dzialu = dzialy.id_dzialu; Złączenie naturalne Złączenie naturalne dwóch relacji R i S (posiadający podzbiór o tych samych nazwach i typach atrybutów), stanowi restrykcję wykonaną na iloczynie kartezjańskim obu relacji, dla wszystkich A R = A S, gdzie A R należy do zbioru atrybutów relacji R, zaś A S do relacji S oraz posiadają te same nazwy i dziedziny w obu relacjach. Notacja: R S. Atrybuty złączenia nie powtarzają się w relacji wynikowej, SELECT * FROM pracownicy NATURAL JOIN dzialy; Zastosowania algebry relacyjnej Zadaniem algebry relacyjnej jest tworzenie wyrażeń, które mogą być wykorzystywane do definiowania: zakresu wydobywania danych, zakresu aktualizacji, relacji pochodnych, zasad bezpieczeństwa, wymagań stabilności, reguł integralności. 5 Źródła Źródła W wykładzie wykorzystano materiały: C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000 http://wazniak.mimuw.edu.pl/index.php?title=bazy_danych emotikony z http://www.smileycentral.com/ 11