Bazy danych 2. Algebra relacji Zależności funkcyjne P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2011/12
Relacyjne systemy baz danych... zdominowały rynek. Systemy nierelacyjne maja status eksperymentalny lub sa stosowane w specjalnych kontekstach. W relacyjnym systemie baz danych istnieje jedna struktura, służaca do przechowywania danych: tabela. Wiersze tabeli nazywa się krotkami, kolumny tabeli nazywa się atrybutami. Przecięcie kolumny i wiersza nosi nazwę składowej krotki. Copyright c 2010-12 P. F. Góra 2 2
Tabela Tabela stanowi zbiór krotek. Krotka stanowi uporzadkowany zbiór atrybutów. Intuicja kryjaca się za słowem tabela może być mylaca, gdyż skoro tabela w systemie relacyjnym jest zbiorem, kolejność krotek nie ma znaczenia. W tabeli (w zasadzie!) nie moga wystapić dwie takie same krotki. W terminologii angielskiej tabele dość często nazywa się relacjami. Stad bierze się nazwa relacyjny system baz danych, zaś program utrzymujacy i obsługujacy taki system nazywa się Relational DataBase Management System, w skrócie RDBMS. Copyright c 2010-12 P. F. Góra 2 3
Więzy Więzy to pewne ograniczenia nakładane na dane. Typowymi więzami sa Klucze, czyli zbiory atrybutów jednoznacznie identyfikujacych krotkę (patrz niżej). Więzy jednoznaczności jakiś atrybut musi być powiazany z co najwyżej jednym innym atrybutem (być może z innej tabeli). Więzy integralności referencyjnej jakiś atrybut musi być powiazany z dokładnie jednym innym atrybutem (być może z innej tabeli). Obiekt wskazywany przez więz integralności referencyjnej musi istnieć. Więzy domenowe, więzy zakresu. Copyright c 2010-12 P. F. Góra 2 4
Dane a metadane Tabela to obiekt abstrakcyjny. Ma swoje atrybuty i więzy. Zbiór wszystkich takich projektów tabel nazywa się schematem bazy danych. Schemat, wraz z informacjami o użytkownikach i ich uprawnieniach, stanowi metadane ( dane o danych ). Schemat tabeli w zasadzie w czasie normalnego użytkowania nie zmienia się w czasie. Zbiór wszystkich krotek danej tabeli ( zawartość tabeli ) może się zmieniać w czasie. Zbiór taki nazywa się instancja tabeli. Instancję istniejac a teraz, w tym właśnie momencie, nazywa się instancja bieżac a. Copyright c 2010-12 P. F. Góra 2 5
Dwanaście zasad Codda dla RDBMS 1. Informacje sa reprezentowane logicznie w tabelach. 2. Dane sa logicznie dostępne przez podanie nazwy tabeli, wartości klucza i nazwy kolumny. 3. Wartości NULL sa traktowane w jednolity sposób jako brakujace informacje. Nie moga być traktowane jako puste łańcuchy czy zera. 4. Metadane sa umieszczone w bazie danych tak, jak zwykłe dane. 5. Język obsługi danych ma możliwość definiowania danych i widoków (perspektyw), więzów integralności, przeprowadzania autoryzacji, obsługi transakcji i manipulacji danymi. 6. Widoki reaguja na zmiany swoich tabel bazowych. Zmiana w widoku powoduje zmianę w tabeli bazowej. Copyright c 2010-12 P. F. Góra 2 6
7. Istnieja pojedyncze operacje pozwalajace na wyszukanie, wstawienie, uaktualnienie i usunięcie danych. 8. Operacje użytkownika sa logicznie oddzielone od fizycznych danych i metod dostępu. 9. Operacje użytkownika pozwalaja na zmianę schematu bazy danych bez konieczności tworzenia bazy od nowa. 10. Więzy sa umieszczone w metadanych, nie w zewnętrznej aplikacji. 11. Język manipulacji danymi powinien działać bez względu na to jak i gdzie sa rozmieszczone fizyczne dane oraz nie powinien wymagać zmian, gdy fizyczne dane sa centralizowane lub rozpraszane. 12. Operacje na pojedynczych rekordach przeprowadzane w systemie podlegaja tym samym zasadom i więzom, co operacje na zbiorach danych. Copyright c 2010-12 P. F. Góra 2 7
Dziesiata zasada Codda Jeśli modelowany fragment rzeczywistości zawiera jakieś ograniczenia, powinny one się znaleźć w samym projekcie bazy danych, nie w aplikacji obsługujacej tę bazę. Dlaczego ograniczenia umieszczamy w metadanych, nie w aplikacji? Bo osoba piszaca aplikację może nie wiedzieć o tych ograniczeniach, może nie uznać je za istotne i może nie umieścić ich w swoim projekcie. Bo osoba piszaca kolejna aplikację może nie umieścić ich w swoim projekcie (z powodów jak wyżej). Bo doświadczenie uczy, że jeśli ograniczenia nie sa wbudowane w projekt bazy, prędzej czy później zdarzy się jakieś nieszczęście... Copyright c 2010-12 P. F. Góra 2 8
Zasady projektowania baz danych Dokładność projekt powinien odpowiadać specyfikacji, tabele powinny odzwierciedlać świat rzeczywisty. Unikanie redundancji bo zajmuje się zbyt wiele miejsca i ryzykuje się, że nie wszystkie wystapienia danej informacji będa uaktualnione. Prostota tylko tyle elementów, ile naprawdę potrzeba. Dobór właściwych elementów nie wszystko modelujemy jako atrybuty! Projekt ma odpowiadać rzeczywistości, nie widzimisię lub (na ogół błędnej) intuicji projektanta. Copyright c 2010-12 P. F. Góra 2 9
Algebra relacji Podstawowe operacje na tabelach: Działania teoriomnogościowe: Suma mnogościowa (unia) Przecięcie (iloczyn) zbiorów Różnica zbiorów \ Iloczyn kartezjański Rzutowanie π Selekcja σ Przemianowanie ρ Złaczenie Copyright c 2010-12 P. F. Góra 2 10
Wynikiem każdej operacji jest tabela, można więc tworzyć operacje złożone. Algebra relacji jest domknięta! Copyright c 2010-12 P. F. Góra 2 11
Operacje teoriomnogościowe Schematy obu tabel wejściowych musza mieć identyczne zbiory atrybutów Zanim zostanie obliczona suma mnogościowa, przecięcie lub różnica zbiorów, należy uporzadkować atrybuty obu tabel tak, aby kolejnośc atrybutów była taka sama. Copyright c 2010-12 P. F. Góra 2 12
Uwaga na wielozbiory! Tabele w modelu relacyjny powinny być zbiorami (krotki nie moga się powtarzać), ale niekiedy nie sa jeśli dopuszczamy powtórzenia krotek, czyli zbiory zastępujemy wielozbiorami, zmieniaja się definicje operacji mnogościowych. Suma R S krotka w wyniku występuje tyle razy, ile występuje w R plus tyle razy, ile występuje w S. Uwaga: jeśli nawet R i S sa zbiorami, R S może być wielozbiorem! Iloczyn R S krotka w wyniku występuje tyle razy, ile wynosi minimum jej wystapień w R i S. Różnica R\S krotka w wyniku występuje tyle razy, ile występuje ona w R minus tyle razy, ile występuje ona w S, ale nie mniej niż 0 razy. Copyright c 2010-12 P. F. Góra 2 13
Przykład R = {A, B, B}, S = {A, B, C, C} R S = {A, A, B, B, B, C, C} R S = {A, B} R\S = {B} Wielozbiory pojawiaja się (i to dość często) jako tabele wynikowe pewnych zapytań. Tabele te moga być tabelami wejściowymi kolejnych zapytań... Copyright c 2010-12 P. F. Góra 2 14
Selekcja σ C R Wybierz z tabeli R tylko te wiersze, które spełniaja warunek wyboru C. W warunku wyboru moga pojawiać się operatory logiczne! Schemat wyjściowej tabeli jest taki sam, jak tabeli wejściowej. Jeśli R jest zbiorem, nie ma duplikatów. W praktyce duplikaty niekiedy się pojawiaja; w SQL rozróżnienie SELECT( ) vs SELECT(DISTINCT ) Copyright c 2010-12 P. F. Góra 2 15
Rzutowanie π A1,A 2,...(R) Utwórz nowa tabelę, która zawiera tylko te kolumny tabeli R, które wymienione sa na liście rzutowania A 1, A 2,... Schemat tabeli wyjściowej zawiera tylko kolumny występujace na liście rzutowania. W formalizmie matematycznym operator rzutowania eliminuje duplikaty W praktyce (SQL) eliminowania duplikatów trzeba zażadać explicite. Copyright c 2010-12 P. F. Góra 2 16
Przemianowanie ρ S(A1,A 2,...,A n ) (R) W wyniku operacji ρ S(A1,A 2,...,A n )(R) z tabeli R otrzymujemy tabelę S, majac a tyle samo atrybutów, co R. Nowymi nazwami atrybutów staja się A 1, A 2,..., A n. Kolejność atrybutów zostaje zachowana. Jeśli chcemy tylko zmienić nazwę samej tabeli, bez zmiany nazw atrybutów, piszemy ρ S (R). Copyright c 2010-12 P. F. Góra 2 17
Iloczyn kartezjański R S każda krotka (wiersz) z R zostaje połaczona z każda krotka (wierszem) S Schemat wyniku ma po jednym atrybucie (kolmnie) na każdy atrybut R i po jednym atrybucie na każdy atrybut S. Nazwy atrybutów sa, o ile to możliwe, dziedziczone. Jeżeli wystapi a jakieś konflikty w nazwach kolumn, trzeba je rozwiazać przez przemianowanie przed dokonaniem iloczynu kartezjańskiego. Copyright c 2010-12 P. F. Góra 2 18
Złaczenie wewnętrzne R C S... zwane także złaczeniem warunkowym lub złaczeniem Θ (theta). Złaczenie wewnętrzne jest podzbiorem iloczynu kartezjańskiego tabel. R C S = σ C (R C) Z iloczynu kartezjańskiego R S wybieramy tylko te krotki, które spełniaja warunek C. Warunek C może być złożony! (Na ogół) znacznie mniej krotek, niż w iloczynie kartezjańskim. Schemat wyniku taki, jak schemat iloczynu kartezjańskiego. Copyright c 2010-12 P. F. Góra 2 19
Złaczenie równościowe (equijoin): złaczenie warunkowe, w którym warunek C zawiera wyłacznie równości pomiędzy atrybutami łaczonych tabel. Jeżeli złacze- nie równościowe zachodzi po atrybutach (kolumnach) o takich samych nazwach, schemat wyniku jest podobny do schematu iloczynu kartezjańskiego, ale zawiera tylko jedno wystapienie każdego atrybutu, dla którego zażadano równości. Złaczenie naturalne to złaczenie równościowe po wszystkich powtarzajacych się nazwach atrybutów (kolumn). Złaczenie wewnętrzne, będace podzbiorem iloczynu kartezjańskiego, nie jest operacja elementarna, ale jest tak ważne dla relacyjnych systemów baz danych, że otrzymało własna nazwę. Istnieja także specjalne algorytmy konstruowania złaczeń. W zdecydowanej większości przypadków złaczenia wewnętrznego nie implementuje się z definicji, to znaczy przez konstrukcję iloczynu kartezjańskiego, z którego później wybierany jest odpowiedni podzbiór. Copyright c 2010-12 P. F. Góra 2 20
Zależności funkcyjne Definicja: Mówimy, że atrybut B jest zależny funkcyjnie od atrybutów A 1,..., A n, co zapisujemy A 1, A 2,..., A n B, wtedy, gdy dwie krotki zgodne w atrybutach A 1,..., A n musza być zgodne w atrybucie B. Zależności funkcyjne sa matematycznym modelem więzów jednoznaczności w modelu relacyjnym baz danych. Zależności funkcyjne należa do schematu bazy. Nie można o nich wnioskować jedynie na podstawie instancji (faktycznych wystapień) tabel. Copyright c 2010-12 P. F. Góra 2 21
X Y X Y Z x y z 1 x y z 2 jeżeli sa zgodne tutaj...... to musza być zgodne tutaj Na przykład spodziewamy się, że w osobowej bazie danych obowiazuje zależność funkcyjna PESEL Nazwisko. Jeżeli dwie krotki maja taki sam numer PESEL, musza odnosić się do osób majacych to samo Nazwisko. Copyright c 2010-12 P. F. Góra 2 22
Jeżeli zachodzi A 1, A 2,..., A n B 1 A 1, A 2,..., A n B 2... A 1, A 2,..., A n B m piszemy w skrócie A 1, A 2,..., A n B 1, B 2,..., B m Copyright c 2010-12 P. F. Góra 2 23
Zależności trywialne Zależność funkcyjna A 1, A 2,..., A n B nazywam trywialna, jeśli atrybut B jest równy któremuś atrybutowi A 1,2,...,n. Jeśli przyjmiemy skrótowy zapis zależności z wieloczłonowa prawa strona, zależność jest Trywialna, jeśli zbiór złożony z atrybutów B jest podzbiorem zbioru złożonego z atrybutów A Nietrywialna, jeśli co najmniej jeden B nie jest A Całkowicie nietrywialna, jeśli żadnen B nie jest A. Copyright c 2010-12 P. F. Góra 2 24
Reguły wnioskowania (aksjomaty Armstronga) zwrotność: Jeżeli {B 1, B 2,..., B m } {A 1, A 2,..., A n }, to A 1, A 2,..., A n B 1, B 2,..., B m. rozszerzenie: Jeżeli A 1, A 2,..., A n B 1, B 2,..., B m, to A 1, A 2,..., A n, C 1, C 2,..., C k B 1, B 2,..., B m, C 1, C 2,..., C k dla dowolnych C 1, C 2,..., C k. przechodniość: Jeżeli A 1, A 2,..., A n B 1, B 2,..., B m oraz B 1, B 2,..., B m C 1, C 2,..., C k, to A 1, A 2,..., A n C 1, C 2,..., C k. Copyright c 2010-12 P. F. Góra 2 25
Dodatkowe reguły wnioskowania Można udowodnić, że poniższe reguły wniokowania wynikaja wprost z aksjomatów Armstronga: Relacja zwrotna: X X Rozszerzanie: jeżeli X Y, wtedy X, Z Y Sumowanie: jeżeli X Y oraz X Z, wtedy X Y, Z Rozkład: jeżeli X Y oraz Z Y, to X Z Przechodniość: jeżeli X Y oraz Y Z, to X Z Pseudoprzechodniość: jeżeli X Y oraz Y, Z W, to X, Z W. Copyright c 2010-12 P. F. Góra 2 26
Domknięcia Niech {A 1, A 2,..., A n } będzie pewnym zbiorem atrybutów, S niech będzie zbiorem zależności funkcyjnych. Domknięciem zbioru {A 1, A 2,..., A n } nad S nazywamy taki zbiór atrybutów B, że jeśli jego elementy spełniaja wszystkie zależności funkcyjne z S, to spełniaja także zależność A 1, A 2,..., A n B, a zatem zależność A 1, A 2,..., A n B wynika z S. Domknięcie oznaczam cl{a 1, A 2,..., A n }. Mówiac niezbyt ściśle, domknięcie to zbiór wszystkich atrybutów determinowanych, w sensie zależności funkcyjnych, przez atrybuty zbioru wyjściowego. Copyright c 2010-12 P. F. Góra 2 27
Algorytm obliczania domknięcia 1. Na poczatku X oznacza zbiór {A 1, A 2,..., A n }. 2. Znajdujemy wszystkie zależności funkcyjne postaci B 1, B 2,..., B m C, gdzie B i należa do X, a C nie należy. Dołaczamy C do X. 3. Powtarzamy krok 2 tak długo, jak długo do X można dołaczyć jakiś nowy atrybut. Ponieważ X może się tylko rozszerzać, zaś zbiór atrybutów jest skończony, po skończonej liczbie kroków nastapi moment, w którym do X nie da się niczego dołaczyć. 4. W tym momencie X = cl{a 1, A 2,..., A n }. Copyright c 2010-12 P. F. Góra 2 28
Powyżej przedstawiony algorytm jest poprawny i intuicyjnie prosty, ale nie jest efektywny może być algorytmem kwadratowym (w czasie) w najgorszym przypadku. Znacznie rozsadniej jest tak uporzadkować zależności funkcyjne, aby każda była używana ( odpalana ) dokładnie w tym momencie, w którym wszystkie atrybuty jej lewej strony znajda się w kandydacie X. Dla dużych baz (i tabel) domknięć nie oblicza się ręcznie! software, który to robi. Istnieje specjalny Copyright c 2010-12 P. F. Góra 2 29
Przykład Rozważmy zbiór atrybutów {A, B, C, D, E, F }. Załóżmy, że w tym zbiorze zachodza zależności A, B C, B, C A, D, D E, C, F B. Obliczmy cl{a, B}. X = {A, B}. Wszystkie atrybuty poprzednika zależności A, B C sa w X, więc do X dołaczamy C. X = {A, B, C}. Lewa strona zależności B, C A, D jest w X, A jest już w X, więc do X dołaczamy D. X = {A, B, C, D}. Na mocy zależności D E, dołaczamy do X atrybut E. X = {A, B, C, D, E}. Zleżności C, F B nie możemy wykorzystać, ponieważ F X i nie ma jak dołożyć F do X. Ostatecznie cl{a, B} = {A, B, C, D, E}. Copyright c 2010-12 P. F. Góra 2 30
Bazy zależności funkcyjnych Każdy zbiór zależności funkcyjnych pewnego zbioru atrybutów, z którego można wyprowadzić wszystkie inne zależności funkcyjne zachodzace pomiędzy elementami tego zbioru, nazywam baza zbioru zależności funkcyjnych. Jeśli żaden podzbiór bazy nie jest baza (nie umożliwia wyprowadzenia wszystkich relacji), bazę tę nazywam baza minimalna. Copyright c 2010-12 P. F. Góra 2 31
Przykład Mam atrybuty A, B, C i zależności A B, A C, B A, B C, C A, C B. Można teraz wyprowadzić zależności nietrywialne A, B C, A, C B, B, C A (oraz zależności trywialne). Baza minimalna jest zbiór {A B, B A, B C, C B}. Inna baza minimalna jest A B, B C, C A. Copyright c 2010-12 P. F. Góra 2 32
Po co jemy tę żabę? Copyright c 2010-12 P. F. Góra 2 33
Klucze Mówimy, że zbiór atrybutów {A 1, A 2,..., A n } tworzy klucz pewnej tabeli, jeśli wszystkie pozostałe atrybuty z tej tabeli sa funkcyjnie zależne od wskazanego zbioru. Dwie różne krotki nie moga mieć tych samych kluczy (jeśli maja takie same klucze, musza mieć równe także pozostałe atrybuty, a zatem nie sa różne). Jeżeli przyjmujemy, że tabele sa zbiorami krotek w zabiorze każdy element występuje co najwyżej raz widzimy, że klucz jednoznacznie identyfikuje krotkę. Copyright c 2010-12 P. F. Góra 2 34
Klucz o tej własności, że żaden jego podziór właściwy nie jest kluczem, nazywamy kluczem minimalnym. Terminologia alternatywna: W niej to, co powyżej nazwaliśmy kluczem minimalnym, nazywa się po prostu kluczem, natomiast każdy nadzbiór klucza nazywamy nadkluczem. Copyright c 2010-12 P. F. Góra 2 35
Zauważmy, że zbiór cl{a 1, A 2,..., A n } zawiera wszystkie atrybuty pewnej tabeli wtedy i tylko wtedy, gdy {A 1, A 2,..., A n } jest (nad)kluczem tej tabeli. Sprawdzenie, czy dany zbiór elementów stanowi klucz tabeli, sprowadza się do sprawdzenia, czy wszystkie atrybuty tabeli należa do domknięcia klucza kandydujacego, czy jakiś właściwy podzbiór klucza kandydujacego także nie ma tej właściwości. Obliczanie domknięć nad zadanym zbiorem zależności funkcyjnych jest formalnym narzędziem służacym do identyfikowania kluczy tabel. Copyright c 2010-12 P. F. Góra 2 36