Postacie normalne
Plan wykładu Zależności funkcyjne Cel normalizacji Pierwsza postać normalna Druga postać normalna Trzecia postać normalna Postać normalna Boyca - Codda
Pojęcie zależności funkcyjnej Definicja 1: Niech U będzie skończonym zbiorem atrybutów relacji R. Zależnością funkcyjną nazywamy każdy zapis postaci: X Y gdzie: X, Y U Mówimy wówczas, że Y zależy funkcyjnie od X lub że X determinuje funkcyjnie Y
Spełnienie zależności funkcyjnej Definicja 2: Niech dana będzie relacja R(U) i niech: X, Y U Mówimy, że w R spełniona jest zależność funkcyjna: X Y co zapisujemy: R X Y jeśli dla każdych dwóch krotek: zachodzi: r 1[ X ] r2[ X ] r1[ Y ] r2[ Y r 1, r ] 2 R
Spełnienie zależności funkcyjnej - przykład Egzamin NrStud Nazwisko Przedmiot Ocena 10 Kowalski Algebra 3 10 Kowalski Analiza 4 11 Nowak Algebra 3 12 Wróbel Algebra 3 Egza min NrStud Nazwisko Czy zachodzi zależność odwrotna? Egzamin NrStud,Przedmiot Nazwisko Egzamin Przedmiot Ocena (?)
Domknięcie zbioru atrybutów względem zależności funkcyjnych Zbiór: X { AU : X A} nazywamy domknięciem zbioru X względem zbioru zależności funkcyjnych. Twierdzenie: X Y Y X
Wyznaczanie domknięcia - przykład Dany niech będzie zbiór zależności F F = {A->B, B->C, C->A} Obliczamy domknięcie atrybutu A względem zbioru F. 1) A+ = {A} 2) Na podstawie A->B mamy A+ = {AB} 3) Na podstawie B->C mamy A+ = {ABC}
Wyznaczanie domknięcia - przykład Dany niech będzie zbiór zależności F: F = {AB->C, C->A, BC->D, ACD->B, D->EG, BE->C, CG->BD, CE->AG} Obliczamy domknięcie atrybutów BD względem zbioru F. 1) BD+ = {BD} 2) Na podstawie D->EG mamy BD + = {BDEG} 3) Na podstawie BE->C mamy BD + = {BCDEG} 4) Na podstawie CE->AG mamy BD + = {ABCDEG}
Cele normalizacji Normalizacja jest jednym z etapów projektowania. Eliminowanie redundancji i anomalii. Redundancja danych występuje wtedy, gdy te same dane są zapisane w bazie wiele razy. Mogą występować następujące anomalie: Anomalia dołączania: Nie można dołączyć danych, bo nie istnieją inne dane z nimi związane; Anomalia aktualizacji: Dane zmieniają się w jednym miejscu, ale pozostają nieaktualne w drugim; Anomalia usuwania: Usunięcie krotki z danymi powoduje usunięcie danych innego rodzaju.
Pojęcie klucza Dany niech będzie schemat relacyjny: R = (U, F). K U Zbiór atrybutów nazywamy kluczem schematu R wtedy i tylko wtedy, gdy spełnione są następujące warunki: 1) Jednoznaczna identyfikalność 2) Minimalność X U F K U F ( X K) Z warunku 1) wynika, że: K U
Właściwości klucza Klucz posiada minimalną liczbę atrybutów. Atrybuty relacji należące do klucza nazywamy atrybutami kluczowymi. Atrybuty relacji nie należące do klucza nazywamy atrybutami niekluczowymi. Żaden atrybut należący do klucza nie może przyjmować wartości NULL. Przy normalizacji badane są zależności funkcyjne pomiędzy atrybutami kluczowymi a niekluczowymi oraz zależności pomiędzy atrybutami niekluczowymi.
Pierwsza postać normalna 1PN Relacja jest w pierwszej postaci normalnej, jeśli wartości atrybutów poszczególnych krotek są wartościami atomowymi.
Przykład relacji nie będącej w 2PN Egzamin NrStud Nazwisko Wydział Przedmiot Ocena 10 Kowalski PPT Algebra 3 10 Kowalski PPT Analiza 4 11 Nowak IZ Algebra 3 12 Wróbel Chemiczny Algebra 3 Zależności funkcyjne: NrStud Nazwisko,Wydzial NrStud, Przedmiot Ocena Klucz: {NrStud, Przedmiot} Atrybuty kluczowe: {NrStud, Przedmiot} Atrybuty niekluczowe: {Nazwisko, Wydział, Ocena} Atrybut Ocena zależy od całego klucza Atrybuty: Nazwisko, Wydział zależą od części klucza. To jest źródłem anomalii
Egzamin Anomalie występujące w przypadku braku 2PN NrStud Nazwisko Wydział Przedmiot Ocena 10 Kowalski PPT Algebra 3 10 Kowalski PPT Analiza 4 11 Nowak IZ Algebra 3 12 Wróbel Chemiczny Algebra 3 13 Przybylski Chemiczny NULL NULL Anomalia dołączania: Dodanie studenta, który jeszcze nie zdał żadnego egzaminu jest niemożliwe, gdyż atrybut kluczowy Przedmiot przyjąłby wtedy wartość NULL.
Egzamin Anomalie występujące w przypadku braku 2PN NrStud Nazwisko Wydział Przedmiot Ocena 10 Kowalski PPT Algebra 3 10 Kowalski PPT Analiza 4 11 Nowak IZ Algebra 3 12 Wróbel Chemiczny Algebra 3 Anomalia usuwania: Usunięcie krotki o zdanym egzaminie Nowaka powoduje usunięcie wszystkich danych związanych z Nowakiem (jeśli to był jego jedyny egzamin)
Egzamin Anomalie występujące w przypadku braku 2PN NrStud Nazwisko Wydział Przedmiot Ocena 10 Kowalski PPT Algebra 3 10 Kowalski PPT Analiza 4 11 Nowak IZ Algebra 3 12 Wróbel Chemiczny Algebra 3 Redundancja danych: Pewne dane zapisane są w bazie kilka razy. Jeśli więc Kowalski zmieni wydział, wówczas trzeba to zmienić w kilku miejscach.
Druga postać normalna (2PN) Definicja pełnej zależności funkcyjnej. Niech X i Y będą rozłącznymi zbiorami atrybutów. Mówimy, że Y jest w pełni funkcyjnie zależny od X lub że istnieje pełna zależność funkcyjna z X do Y, jeśli Y jest zależnie funkcyjny od X i nie jest zależny od żadnego właściwego podzbioru X. Definicja 2PN. Schemat relacyjny R=(U,F) jest w 2PN jeśli każdy niekluczowy atrybut jest w pełni funkcyjnie zależny od każdego klucza tego schematu. W związku z tym schemat relacyjny, którego klucz jest jednoargumentowy jest w 2PN.
Sprowadzenie do 2PN - algorytm Dany niech będzie schemat relacyjny: R = (U, F) Jeśli istnieje niepełna zależność funkcyjna: X Schemat R jest podzielony na dwa schematy: AF R ( X, F1) i R2 (( U X ) X, 2) 1 F X U - zbiór wszystkich atrybutów zależnych od X F1 zawiera wszystkie te ZF ze zbioru F+, których atrybuty zawarte są w X+. Podobnie jest dla F2. Jeśli R1 i R2 nie są w 2PN, algorytm jest powtarzany.
Sprowadzenie do 2PN Egzamin NrStud Nazwisko Wydział Przedmiot Ocena 10 Kowalski PPT Algebra 3 10 Kowalski PPT Analiza 4 11 Nowak IZ Algebra 3 12 Wróbel Chemiczny Algebra 3 Niepełna zależność funkcyjna od klucza: NrStud Nazwisko Zgodnie z algorytmem: R bo NrStud, Przedmiot 1 ( X, F1) i R2 (( U X ) X, F 2 ) Nazwisko Mamy: X ={NrStud}, X+ = {NrStud, Nazwisko, Wydział}
Sprowadzenie do 2PN Z relacji Egzamin powstają dwie : Ocena i Student Ocena NrStud Przedmiot Ocena 10 Algebra 3 10 Analiza 4 11 Algebra 3 12 Algebra 3 Student NrStud Nazwisko Wydzial 10 Kowalski PPT 11 Nowak IZ 12 Wróbel Chemiczny Każda z tych relacji jest w 2PN.
Wnioski 2PN Jeśli klucz jest jednoargumentowy, to schemat jest w 2PN. Proces sprowadzania do 2PN nie jest jednoznaczny dla jednego schematu może istnieć wiele równoważnych projekcji w 2PN.
Wykonawca Anomalie występujące w przypadku braku 3PN IdWykon Nazwa IdProj Koszt 10 IBM 20 200000 11 Intel 20 200000 12 Mac 21 400000 13 SAP 22 500000 Zależności funkcyjne: IdWykon Nazwa,IdProj, IdProj Koszt Koszt
Wykonawca Anomalie występujące w przypadku braku 3PN IdWykon Nazwa IdProj Koszt 10 IBM 20 200000 11 Intel 20 200000 12 Mac 21 400000 13 SAP 22 500000 Relacja jest w 2PN, bo występuje klucz jednoargumentowy, ale występuje redundancja i anomalia. Przyczyną jest zależność: IdProj Koszt
Wykonawca Anomalie występujące w przypadku braku 3PN IdWykon Nazwa IdProj Koszt 10 IBM 20 200000 11 Intel 20 200000 12 Mac 21 400000 13 SAP 22 500000 NULL NULL 23 700000 Anomalia dołączania: Aby wprowadzić dane projektu, należałoby mieć wykonawcę tego projektu.
Tranzytywne zależności funkcyjne Definicja. Atrybut A jest tranzytywnie zależny od klucza K w schemacie relacyjnym R = (U, F), jeśli istnieje zbiór atrybutów X nie będący kluczem i taki, że: A X i X AF Oczywiście z zależności tranzytywnej wynika zależność zwykła. Tak więc atrybut A jest zależny od K także w zwykłym sensie. Należność tranzytywną można zobrazować w sposób następujący: K X A
Definicja 3PN Schemat relacyjny R=(U,F) jest w 3PN jeśli jest w 2PN i żaden niekluczowy atrybut nie jest tranzytywnie zależny od żadnego klucza relacji.
Sprowadzenie do 3PN - algorytm Dany niech będzie schemat relacyjny: R = (U, F) Jeśli istnieje tranzytywna zależność funkcyjna: X Schemat R jest podzielony na dwa schematy: R ( X, F1) i R2 (( U X ) X, 2) 1 F AF X U - zbiór wszystkich atrybutów zależnych od X F1 zawiera wszystkie te ZF ze zbioru F+, których atrybuty zawarte są w X+. Podobnie jest dla F2. Jeśli R1 i R2 nie są w 3PN, algorytm jest powtarzany.
Sprowadzenie do 3PN Wykonawca IdWykon Nazwa IdProj Koszt 10 IBM 20 200000 11 Intel 20 200000 12 Mac 21 400000 13 SAP 22 500000 W wyniku działania algorytmu mamy: X = IdProj, X+ = {IdProj, Koszt}
Sprowadzenie do 3PN Z relacji Wykonawca powstają dwie : Projekt i Wykonanie Projekt IdProj Koszt 20 200000 21 400000 22 500000 Wykonanie IdWykon Nazwa IdProj 10 IBM 20 11 Intel 20 12 Mac 21 13 SAP 22 Każda z tych relacji jest w 3PN
PNBC Postać Normalna Boyce a Codda Definicja. Mówimy, że schemat relacyjny R = (U, F) jest w PNBC, jeśli dla każdej nietrywialnej zależności X->A należącej do F, X jest nadkluczem. 1) Nietrywialna oznacza, że A nie należy do X 2) Nadklucz oznacza, że X zawiera klucz
Sprowadzenie do PNBC - algorytm Dany niech będzie schemat relacyjny: R = (U, F) Jeśli istnieje nietrywialna zależność funkcyjna: X AF taka, że X nie jest nadkluczem, wówczas schemat R jest podzielony na dwa schematy: X U R ( X, F1) i R2 (( U X ) X, 2) 1 F - zbiór wszystkich atrybutów zależnych od X F1 zawiera wszystkie te ZF ze zbioru F+, których atrybuty zawarte są w X+. Podobnie jest dla F2. Jeśli R1 i R2 nie są w PNBC, algorytm jest powtarzany.
PNBC - Przykład Kody Ulica Miasto Kod Kołłątaja Poznań 80-288 Rydla Kraków 12-333 Rydla Poznań 80-900 Słoweńska Warszawa 22-111 Zależności funkcyjne: Miasto, Ulica Kod Miasto Kod Klucze: {Miasto, Ulica} {Ulica, Kod}
PNBC - Przykład Kody Ulica Miasto Kod Kołłątaja Poznań 80-288 Rydla Kraków 12-333 Rydla Poznań 80-900 Słoweńska Warszawa 22-111 Rozpatrzmy klucz: {Miasto, Ulica} Występuje 3PN. Nie zachodzi PNBC, gdyż: Kod Miasto Zależność jest nietrywialna, a atrybut Kod nie jest nadkluczem.
Sprowadzenie do PNBC Z relacji Wykonawca powstają dwie : Kod1 i Kod2 Kod1 Miasto Kod Poznań 80-288 Kraków 12-333 Poznań 80-900 Warszawa 22-111 Kod2 Ulica Kod Kołłątaja 80-288 Rydla 12-333 Rydla 80-900 Słoweńska 22-111
Podsumowanie Decyzja czy pozostawić relację w 3PN czy w PNBC powinna być przemyślana. Praktyka pokazuje, ze 3PN jest najlepszym rozwiązaniem Projektowanie obiektowe z reguły od razu daje w rezultacie postać 3PN W niektórych przypadkach korzystniejsze jest pozostawienie relacji w niższych postaciach (1PN lub 2PN).
Dziękuję