Zaleznosci funkcyjne

Transkrypt

Zaleznosci funkcyjne
Zależności funkcyjne
Plan wykładu
• Pojęcie zależności funkcyjnej
• Dopełnienie zbioru zależności funkcyjnych
• Postać minimalna zbioru zależności
funkcyjnych
• Domknięcie atrybutu relacji względem
zależności funkcyjnych
• Pojęcie klucza
• Rozkładalność schematów relacyjnych
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:
r1, r 2  R
zachodzi:
r1[ X ]  r 2[ X ]  r1[Y ]  r 2[Y ]
Spełnienie zależności funkcyjnej przykład
Egzamin
NrStud
Nazwisko
Przedmiot
Ocena
10
10
11
12
Kowalski
Kowalski
Nowak
Wróbel
Algebra
Analiza
Algebra
Algebra
3
4
3
3
Egza min  NrStud  Nazwisko
Czy zachodzi zależność odwrotna?
Egzamin NrStud,Przedmiot  Nazwisko
Egzamin Przedmiot  Ocena (?)
Wyprowadzenie zależności
funkcyjnych
Mając zadany zbiór ZF (zależności
funkcyjnych):
F  {X 1  A1, X 2  A2,..., Xn  An}
Chcemy wiedzieć, czy zależność:
Y B
spełniona jest w każdej relacji R, w której
spełnione są wszystkie zależności ze zbioru F
Wyprowadzenie zależności
funkcyjnych - przykład
Przykładowo mając dany ZF:
F  {A  B, B  C}
łatwo dowieść z definicji, że spełniona jest
również zależność:
AC
Wyprowadzanie zależności
funkcyjnych przez wnioskowanie
• Problem: Zadany jest zbiór zależności
funkcyjnych F nad zbiorem atrybutów U. Należy
wyznaczyć zbiór wszystkich zależności
funkcyjnych będący konsekwencją zbioru F. Taki
zbiór będziemy oznaczać F+
• Reguły wyprowadzania dla zależności
funkcyjnych zostały zaproponowane przez
Armstronga i nazywane są aksjomatami
Armstronga.
Aksjomaty Armstronga
Niech dany będzie zbiór zależności funkcyjnych F nad
zbiorem atrybutów U.
Niech : X, Y, Z  U
Wówczas:
F1 (zwrotnosc) : Y  X  X  Y
F2(poszerzalnosc) : X  Y  XZ  YZ
F3(przechodniosc) : X  Y  Y  Z  X  Z
Aksjomaty Armstronga cd
Z aksjomatów Armstronga można wyprowadzić
następujące reguły:
F4 (pseudoprzechodnosc): X  Y  YW  Z  XW  Z
F5(addytywnosc): X  Y  X  Z  X  YZ
F6(dekompozycyjnosc): X  YZ  X  Y  X  Z
Zbiór F+ może być generowany przez różne zbiory
zależności funkcyjnych.
Można mówić o minimalnym generatorze F+
Zależności funkcyjne – przykład
wnioskowania
Niech: U = {P, I, O, E, G, S}
P – przedmiot egzaminu
Zbiór zależności funkcyjnych:
I – numer indeksu
F = {P ->GS, GS -> P, PI->O,
O – ocena z egzaminu
GI->PS, PGS->E}
E – numer identyfikacyjny egzaminatora
G – godzina egzaminu
Zależności pochodne:
S – sala egzaminu
P->G, P->S, GSI->O GI->E
Postać minimalna zależności
funkcyjnych
• Postać minimalna to najmniejszy zbiór
zależności funkcyjnych, z których można
wyprowadzić wszystkie zależności
funkcyjne.
Postać minimalna zależności
funkcyjnych cd.
• Zbiór zależności F jest minimalny jeżeli:
– Prawa strona każdej zależności w F jest pojedynczym
atrybutem (gwarancja, że żaden atrybut po prawej
stronie nie jest redundantny);
– Nie istnieje takie X->A w F taka, że zbiór F – {X->A} jest
równoważny z F (gwarancja, że nie ma redundantnych
zależności w F);
– Nie istnieje takie X->A w F oraz taki podzbiór Z
zawierający się w X, że: F  {X  A}  {Z  A}
jest równoważny z F (gwarancja, że nie ma
redundantnych atrybutów po lewej stronie)
Postać minimalna zależności
funkcyjnych - przykład
Dany niech będzie zbiór zależności F
F = {A->B, B->A, B->C, A->C, C->A}
Jaka jest postać minimalna F?
Można wyeliminować: B->A oraz A->C,
gdyż: B->C i C->A dają B->A
oraz A->B i B->C dają A->C
F’ = {A->B, B->C, C->A}
Postać minimalna zależności
funkcyjnych – przykład cd
Dany niech będzie zbiór zależności F
F = {A->B, B->A, B->C, A->C, C->A}
Jaka jest postać minimalna F?
Można wyeliminować: B->C,
gdyż: B->A i A->C dają B->C
F” = {A->B, B->A, A->C, C->A}
Domknięcie zbioru atrybutów
względem zależności funkcyjnych
Zbiór:
X   {A U : X  A}
nazywamy domknięciem zbioru X względem zbioru
zależności funkcyjnych.
Twierdzenie:
X Y Y  X 
Wyznaczanie domknięcia
Problem:
Dany jest zbiór zależności funkcyjnych F oraz zbiór atrybutów X. Dla X
wyznaczyć zbiór atrybutów X+ zależnych funkcyjnie od X.
Metoda:
•Rozpoczynamy przyjmując, że: X+ = X
•Indukcja: Poszukujemy wszystkie te zależności funkcyjne, których lewe strony
są podzbiorami bieżącego zbioru X+ i do X+ dołączamy wszystkie atrybuty
należące do prawych stron tych zależności.
Jeśli na przykład:
Y  B, Y  X  to X   X   {B}
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}
Pojęcie klucza
Dany niech będzie schemat relacyjny:
R = (U, F).
Zbiór atrybutów K  U nazywamy kluczem schematu R
wtedy i tylko wtedy, gdy spełnione są następujące warunki:
K U  F
X  U  F   ( X  K )
1) Jednoznaczna identyfikalność
2) Minimalność
Z warunku 1) wynika, że:
K U
Postać minimalna zależności
funkcyjnych – przykład cd
Dany niech będzie zbiór zależności F
F = {AB->C, B->A, A->B}
Problem: Jaka jest postać minimalna F?
Eliminujemy A z AB->C. Wtedy mamy:
F’= {B->C, B->A, A->B}
Dowód wynika to z faktu, że B jest kluczem relacji, gdyż:
B+ = {ABC}.
W związku z tym C jest zależne od B, a więc można zamiast AB->C napisać
B->C. Wtedy bowiem z B->C mamy AB->AC, a z tego AB->A i AB->C.
Na tej samej zasadzie można wyeliminować B z AB->C. Wówczas:
F”= {A->C, B->A, A->B}
Rozkładalność schematów
relacyjnych
• Wyróżniamy trzy rodzaje rozkładalności:
– Rozkładalność bez straty danych
– Rozkładalność bez straty zależności
– Rozkładalność bez straty danych i zależności
Rozkładalność bez straty danych
Mówimy, że schemat relacyjny R = (U, F)
jest rozkładalny bez straty danych na dwa
schematy R[X] i R[Y] wtedy i tylko wtedy
gdy:
1)
2)
X Y  U
R  R[ X ]  R[Y ]
Twierdzenie o rozkładalności
Dany niech będzie schemat relacyjny R=(U,F) i
niech XYZ=U i Y  Z   . Jeśli:
X Y  F
Wówczas R jest rozkładalny bez straty danych na
R[XY] oraz R[XZ]
Zastosowanie twierdzenia o
rozkładalności - przykład
Egzamin
NrStud
Nazwisko
Przedmiot
Ocena
10
10
11
12
Kowalski
Kowalski
Nowak
Wróbel
Algebra
Analiza
Algebra
Algebra
3
4
3
3
Można rozłożyć według zależności:
Egza min  NrStud  Nazwisko
Zastosowanie twierdzenia o
rozkładalności - przykład
Można rozłożyć według zależności:
Egza min  NrStud  Nazwisko
Ocena
Student
NrStud
Przedmiot Ocena
NrStud
Nazwisko
10
Algebra
3
10
Kowalski
10
Analiza
4
11
Nowak
11
Algebra
3
12
Wróbe;
12
Algebra
3
Testowanie rozkładu bez straty
danych
•
Dany jest schemat relacyjny R = (A1, …, An), zbiór zależności funkcyjnych F oraz
dekompozycja na relacje R1, …, Rk.
Problem:
• Należy sprawdzić, czy dekompozycja jest bez straty danych.
Metoda:
• Konstruujemy tabelę zawierającą n kolumn i k wierszy. Kolumna j odpowiada
atrybutowi Aj, a wiersz i odpowiada relacji Ri. W wiersz i oraz kolumnę j należy
wstawić symbol aj jeżeli Aj jest w Ri. W przeciwnym wypadku należy wstawić
symbol bij.
• Dla każdej zależności funkcyjnej X->Y należy znaleźć te same symbole w tabeli
dla atrybutu X. Jeśli się je znajdzie należy zmodyfikować w tym wierszu symbole
dla atrybutu Y w taki sposób, żeby miały te same wartości. I tak jeśli w którymś z
wierszy jest aj, to należy zmienić wszystkie pozostałe na aj. Jeśli bij, to należy
zmienić na bij.
• Jeśli w wyniku poprzedniego kroku tabela nie jest już dalej modyfikowana,
wówczas jeśli istnieje w niej wiersz w którym występuje wiersz a1,…ak wówczas
rozkład jest bez straty danych. W przeciwnym przypadku rozkład jest ze stratą
danych.
Testowanie rozkładu bez straty danych
Rozważmy rozkład relacji R = (SAIP) na R1 = (SA) i R2 = (SIP)
Zakładamy następujące zależności funkcyjne: S->A, SI->P
Tabela inicjująca wygląda następująco:
S
A
I
P
a1
a2
b13
b14
a1
b22
a3
a4
Zastosowanie S->A: Skoro w S w obydwu wierszach jest a1,
wówczas zmieniamy w A wartość w drugim wierszu b22 na a2.
Mamy więc:
S
A
I
P
a1
a2
b13
b14
a1
a2
a3
a4
Wiersz drugi zawiera wartości a1,…a4, a więc rozkład jest bez
straty danych
Następny wykład
Postacie normalne