Bazy danych 2. Zale˙zno´sci funkcyjne Normalizacja baz danych

Transkrypt

Bazy danych 2. Zale˙zno´sci funkcyjne Normalizacja baz danych
Bazy danych
2. Zależności funkcyjne
Normalizacja baz danych
P. F. Góra
http://th-www.if.uj.edu.pl/zfs/gora/
2012/13
Zależności funkcyjne
Definicja: Mówimy, że atrybut B jest zależny funkcyjnie od atrybutów
A1, . . . , An, co zapisujemy A1, A2, . . . , An → B, wtedy, gdy dwie krotki zgodne
w atrybutach A1, . . . , An musza˛ być zgodne w atrybucie B.
• Zależności funkcyjne sa˛ matematycznym modelem wiezó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.
c 2010-12 P. F. Góra
Copyright 2–2
X→Y
X
x
x
Y
y
y
jeżeli sa˛ zgodne tutaj. . .
. . . to musza˛ być zgodne tutaj
Z
z1
z2
Na przykład spodziewamy sie,
˛ że w “osobowej” bazie danych obowiazuje
˛
zależność funkcyjna PESEL → Nazwisko. Jeżeli dwie krotki maja˛ taki sam numer
PESEL, musza˛ odnosić sie˛ do osób majacych
˛
to samo Nazwisko.
c 2010-12 P. F. Góra
Copyright 2–3
Jeżeli zachodzi
A1, A2, . . . , An → B1
A1, A2, . . . , An → B2
...
A1, A2, . . . , An → Bm
piszemy w skrócie
A1, A2, . . . , An → B1, B2, . . . , Bm
c 2010-12 P. F. Góra
Copyright 2–4
Zależności trywialne
• Zależność funkcyjna˛ A1, A2, . . . , An → B nazywam trywialna,
˛ jeśli atrybut
B jest równy któremuś atrybutowi A1,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.
c 2010-12 P. F. Góra
Copyright 2–5
Reguły wnioskowania (aksjomaty Armstronga)
zwrotność: Jeżeli {B1, B2, . . . , Bm} ⊆ {A1, A2, . . . , An}, to
A1, A2, . . . , An → B1, B2, . . . , Bm.
rozszerzenie: Jeżeli A1, A2, . . . , An → B1, B2, . . . , Bm, to
A1, A2, . . . , An, C1, C2, . . . , Ck → B1, B2, . . . , Bm, C1, C2, . . . , Ck dla
dowolnych C1, C2, . . . , Ck .
przechodniość: Jeżeli A1, A2, . . . , An → B1, B2, . . . , Bm oraz
B1, B2, . . . , Bm → C1, C2, . . . , Ck , to A1, A2, . . . , An → C1, C2, . . . , Ck .
c 2010-12 P. F. Góra
Copyright 2–6
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 .
c 2010-12 P. F. Góra
Copyright 2–7
Domkniecia
˛
Niech {A1, A2, . . . , An} bedzie
˛
pewnym zbiorem atrybutów, S niech bedzie
˛
zbiorem zależności funkcyjnych. Domknieciem
˛
zbioru {A1, A2, . . . , An} 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ść A1, A2, . . . , An → B,
a zatem zależność A1, A2, . . . , An → B wynika z S.
Domkniecie
˛
oznaczam cl{A1, A2, . . . , An}.
Mówiac
˛ niezbyt ściśle, domkniecie
˛
to zbiór wszystkich atrybutów determinowanych, w sensie zależności funkcyjnych, przez atrybuty zbioru wyjściowego.
c 2010-12 P. F. Góra
Copyright 2–8
Algorytm obliczania domkniecia
˛
1. Na poczatku
˛
X oznacza zbiór {A1, A2, . . . , An}.
2. Znajdujemy wszystkie zależności funkcyjne postaci B1, B2, . . . , Bm → C,
gdzie Bi 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 sie˛ 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 sie˛ niczego dołaczyć.
˛
4. W tym momencie X = cl{A1, A2, . . . , An}.
c 2010-12 P. F. Góra
Copyright 2–9
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˛ sie˛ w “kandydacie” X.
Dla dużych baz (i tabel) domknieć
˛ nie oblicza sie˛ recznie!
˛
Istnieje specjalny
software, który to robi.
c 2010-12 P. F. Góra
Copyright 2–10
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, wiec
˛ 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, wiec
˛ 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 6∈ X i nie ma jak dołożyć F do X.
Ostatecznie cl{A, B} = {A, B, C, D, E}.
c 2010-12 P. F. Góra
Copyright 2–11
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
˛ pomiedzy
˛
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˛e te˛ nazywam baza˛ minimalna.
˛
c 2010-12 P. F. Góra
Copyright 2–12
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.
c 2010-12 P. F. Góra
Copyright 2–13
Po co jemy te˛ żabe?
˛
c 2010-12 P. F. Góra
Copyright 2–14
Klucze
Mówimy, że zbiór atrybutów {A1, A2, . . . , An} 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 wyste˛
puje co najwyżej raz — widzimy, że klucz jednoznacznie identyfikuje krotk˛e.
c 2010-12 P. F. Góra
Copyright 2–15
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 sie˛ po prostu kluczem, natomiast każdy nadzbiór klucza nazywamy
nadkluczem.
c 2010-12 P. F. Góra
Copyright 2–16
Zauważmy, że zbiór cl{A1, A2, . . . , An} zawiera wszystkie atrybuty pewnej tabeli wtedy i tylko wtedy, gdy {A1, A2, . . . , An} jest (nad)kluczem tej tabeli.
Sprawdzenie, czy dany zbiór elementów stanowi klucz tabeli, sprowadza sie˛ do
sprawdzenia,
• czy wszystkie atrybuty tabeli należa˛ do domkniecia
˛
klucza kandydujacego,
˛
• czy jakiś właściwy podzbiór klucza kandydujacego
˛
także nie ma tej właściwości.
Obliczanie domknieć
˛ nad zadanym zbiorem zależności funkcyjnych jest
formalnym narz˛edziem służacym
˛
do identyfikowania kluczy tabel.
c 2010-12 P. F. Góra
Copyright 2–17
Pierwsza postać normalna
Tabela jest w pierwszej postaci normalnej (1PN),
jeżeli
1. Tabela posiada klucz.
2. Wszystkie składowe krotek sa˛ atomowe.
Można powiedzieć, że pierwsza postać normalna jest warunkiem tego, żeby
w ogóle można było mówić o sytemie relacyjnym. Warunek posiadania klucza
jest równoważny temu, że tabela jest zbiorem krotek .
c 2010-12 P. F. Góra
Copyright 2–18
Atomowość danych
Atomowość danych oznacza, że składowych krotek nie można podzielić. Warunek atomowości uniemożliwia to, żeby składowymi krotek były złożone struktury
danych, takie jak tablice, listy itp.
W zasadzie wymóg atomowości nakazuje dzielić też atrybuty, które można podzielić, na cz˛eści logicznie niepodzielne. Na przykład zamiast atrybutu “Imi˛
e
i Nazwisko”, powinniśmy mieć dwa atrybuty: “Imi˛
e”, “Nazwisko”. Można
sobie jednak wyobrazić sytuacje, w których taki podział byłby niepotrzebny lub
niewskazany∗. O ile zatem pierwsza postać normalna z cała˛ pewnościa˛ wyklucza złożone struktury danych, o tyle interpretacja pojecia
˛
“można podzielić”
może niekiedy zależeć od natury samych danych, które reprezentować ma konstruowana przez nas baza danych.
∗ Rozważmy
na przykład nazwy osobowe z Chin czy Korei.
c 2010-12 P. F. Góra
Copyright 2–19
Anomalie baz danych
• Redundancja — ta sama informacja jest niepotrzebnie przechowywana
w kilku krotkach.
• Anomalia modyfikacji — informacja zostanie zmodyfikowana w pewnych
krotkach, a w innych nie. Która informacja jest wówczas prawdziwa?
• Anomalia usuwania — usuwanie cz˛eści informacji powoduje utrate˛ innej informacji, której nie chcielibyśmy stracić.
• Anomalia dołaczania
˛
— wprowadzenie pewnej informacji jest możliwe tylko
wtedy, gdy jednocześnie wprowadzamy jakaś
˛ inna˛ informacje,
˛ która może
być obecnie niedostepna.
˛
Celem normalizacji baz danych jest unikanie powyższych anomalii.
c 2010-12 P. F. Góra
Copyright 2–20
Bezstratne złaczenie
˛
Normalizacje˛ baz danych (powyżej 1PN) przeprowadza sie˛ dzielac
˛ tabele “wertykalnie” na tabele potomne. Tabele te jednak musza˛ pozwalać na pełne odtworzenie wyjściowej informacji po dokonaniu złaczenia.
˛
Niedopuszczalne jest
także, aby złaczenia
˛
kreowały informacje˛ fałszywa.
˛
Dekompozycje˛ tabeli R na tabele R1, R2, . . . , Rn nazywamy dekompozycja˛ bezstratnego złaczenia
˛
(ze wzgledu
˛
na pewien zbiór zależności funkcyjnych), jeśli naturalne
złaczenie
˛
R1, R2, . . . , Rn jest równe tabeli R.
c 2010-12 P. F. Góra
Copyright 2–21
Dekompozycja tabeli R na dwie tabele R1, R2 jest dekompozycja˛ bezstratnego
złaczenia,
˛
jeśli spełniony jest jeden z dwu warunków (symbol → oznacza zależność funkcyjna):
˛
(R1 ∩ R2) → (R1\R2)
lub
(R1 ∩ R2) → (R2\R1)
Innymi słowy, wspólna cz˛eść atrybutów R1, R2 musi zawierać klucz kandydujacy
˛
R1 lub R2.
c 2010-12 P. F. Góra
Copyright 2–22
Przykład negatywny
Przypuśćmy, że w pewnej tabeli przechowujemy informacje˛ na temat studentów
zapisujacych
˛
sie˛ na kurs baz danych. Przykładowa instancja tabeli mogłaby
wygladać
˛
tak:
T0
NrStudenta
1010057
1010132
1015678
1020159
1026789
c 2010-12 P. F. Góra
Copyright NrKursu
K202
K203
K202
K204
K205
DataZapisu
01.10.2012
01.10.2012
01.10.2012
04.10.2012
11.10.2012
Sala
A1
A2
A2
A1
C2
Prowadzacy
˛
Góra
Łachwa
Łachwa
Góra
Oramus
2–23
Rozbijamy te˛ tabele na dwie, dzielac
˛ je “wzdłuż” kolumny DataZapisu.
T1
NrStudenta
1010057
1010132
1015678
1020159
1026789
NrKursu
K202
K203
K202
K204
K205
c 2010-12 P. F. Góra
Copyright DataZapisu
01.10.2012
01.10.2012
01.10.2012
04.10.2012
11.10.2012
T2
DataZapisu
01.10.2012
01.10.2012
01.10.2012
04.10.2012
11.10.2012
Sala
A1
A2
A2
A1
C2
Prowadzacy
˛
Góra
Łachwa
Łachwa
Góra
Oramus
2–24
Dokonujemy złaczenia
˛
tabel T1 i T2. Okazuje sie,
˛ że dzielenie pierwotnej tabeli
“wzdłuż” kolumny DataZapisu to był kiepski pomysł. Otrzymujemy
T1 1 T2 6= T0
NrStudenta NrKursu
1010057
K202
1010132
K203
1015678
K202
DataZapisu
01.10.2012
01.10.2012
01.10.2012
itd
Sala
A1
A1
A1
Prowadzacy
˛
Góra
Góra
Góra
Zaznaczone krotki nie wystepuj
˛ a˛ w pierwotnej tabeli. Na skutek podziału tabeli
nie spełniajacego
˛
warunku bezstratnego złaczenia,
˛
utraciliśmy informacje˛ o tym,
kto kogo uczy.
c 2010-12 P. F. Góra
Copyright 2–25
Druga postać normalna
Tabela jest w drugiej postaci normalnej (2PN), jeżeli
1. Tabela jest 1PN.
2. Wszystkie atrybuty niekluczowe zależa˛ funkcyjnie
od pełnego klucza.
Atrybuty niekluczowe maja˛ zależeć od pełnego klucza, a nie od jego podzbioru
właściwego (który nie musi być kluczem!).
Wszystkie tabele 1PN, które maja˛ klucze jednokolumnowe, sa˛ automatycznie
2PN.
c 2010-12 P. F. Góra
Copyright 2–26
Przykład
Załóżmy, że zależności funkcyjne pomiedzy
˛
pewnymi atrybutami maja˛ postać
A, B → C, A → D. Poniższa tabela (podkreślenia oznaczaja˛ klucz)
A
a1
a1
a1
a2
B
b1
b2
b3
b1
C
c1
c2
c3
c4
D
d1
d1
d1
d2
nie jest 2PN, gdyż atrybut D zależy tylko od atrybutu A, a wiec
˛ od cz˛eści klucza,
nie od całego klucza.
c 2010-12 P. F. Góra
Copyright 2–27
Schemat tabeli ze strony 27 nie chroni przed wymienionymi wyżej anomaliami:
• Nie można wprowadzić informacji o tym, że a3 → d3, nie wprowadzajac
˛
jednocześnie informacji, że (a3, b•) → c• (anomalia dołaczania).
˛
• Usuniecie
˛
informacji o tym, że a2 → d2 wymaga jednoczesnego usuniecia
˛
informacji, iż (a2, b1) → c4 (anomalia usuwania).
• Wartość d1 przechowywana jest niepotrzebnie w trzech różnych krotkach
(redundancja).
c 2010-12 P. F. Góra
Copyright 2–28
Po rozbiciu powyższej tabeli na dwie tabele bed
˛ ace
˛ w 2PN, anomalie dołacza˛
nia i usuwania nie wystepuj
˛ a,
˛ a wartość d1 przechowywana jest tylko w jednej
krotce.
A
a1
a1
a1
a2
B
b1
b2
b3
b1
C
c1
c2
c3
c4
A
a1
a2
D
d1
d2
Prosz˛e pomyśleć, że w poczatkowym
˛
przykładzie d1 mogłoby wystepować
˛
nie
w 3, ale w 300 lub w 3000 krotek.
c 2010-12 P. F. Góra
Copyright 2–29
Trzecia postać normalna
Tabela jest w trzeciej postaci normalnej (3PN), jeżeli
1. Tabela jest 2PN.
2. Dla wszystkich atrybutów tabeli zachodzi:
Jeżeli A1, A2, . . . , An → Am, to albo {A1, A2, . . . , An} jest
nadkluczem, albo Am jest elementem innego klucza.
Trzecia postać normalna jest postacia˛ najcz˛eściej wystepuj
˛ ac
˛ a˛ w zastosowaniach praktycznych. Druga cz˛eść warunku definicyjnego (“albo Am jest elementem innego klucza”) ma znaczenie tylko wówczas, gdy w tabeli wystepuj
˛ a˛
zależności cykliczne (lub cz˛eściowe zależności cykliczne).
c 2010-12 P. F. Góra
Copyright 2–30
Zależności przechodnie
Jeżeli w tabeli nie wystepuj
˛ a˛ zależności cykliczne, powiada sie,
˛ że 3PN zakazuje
wsytepowania
˛
zależności przechodnich. Istotnie, przyjmijmy, że spełnione sa˛
zależności funkcyjne A → B, B → C, A → C; ostatnia z tych zależności
wynika z dwu pierwszych na zasadzie przechodniości. Nastepuj
˛ aca
˛ tabela
A
B
C
jest 2PN, ale nie jest 3PN, gdyż zachodzi zależność B → C, zaś atrybut B nie
jest nadkluczem. Sprowadzenie do 3PN oznacza rozbicie powyższej tabeli na
dwie tabele:
A
c 2010-12 P. F. Góra
Copyright B
B
C
2–31
Przykład
Niech zależności funkcyjne bed
˛ a˛ takie, jak na poprzednim ekranie. Rozważmy
nastepuj
˛ ac
˛ a˛ instancje˛ pierwszej tabeli:
A
a1
a2
a3
a4
c 2010-12 P. F. Góra
Copyright B
b1
b1
b1
b2
C
c1
c1
c1
c2
2–32
Wystepuj
˛ a˛ anomalie dołaczania
˛
(nie można wprowadzić a5 → b3 bez jednoczesnego wprowadzenia b3 → c3), usuwania (nie można usunać
˛ b2 → c2 bez
jednoczesnego usuniecia
˛
a4 → b2) oraz redundancja (wielkość c1 przechowywana jest w trzech krotkach). Po sprowadzeniu do 3PN
A
a1
a2
a3
a4
B
b1
b1
b1
b2
B
b1
b2
C
c1
c2
anomalie te znikaja.
˛
c 2010-12 P. F. Góra
Copyright 2–33
Cykliczne zależności funkcyjne
Przykładem cyklicznych zależności funkcyjnych jest A → B, B → C, C → A.
W takiej sytuacji atrybuty A, B, C sa˛ sobie równoważne — określenie wartości
jednego z nich, jednoznacznie ustala wartość dwu pozostałych. Każda z trzech
tabel
A
B
C
A
B
C
A
B
C
jest 3PN, gdyż co prawda wystepuj
˛ a˛ zależności przechodnie, ale atrybuty niekluczowe sa˛ elementami innych kluczy (de facto sa˛ innymi kluczami).
c 2010-12 P. F. Góra
Copyright 2–34
Uwaga! Przy cyklicznych zależnościach funkcyjnych jak poprzednio, tabele rozbite w taki sposób:
A
B
B
C
C
A
technicznie rzecz biorac
˛ także sa˛ 3PN, a nie zawieraja˛ zależności przechodnich. Jednak taki projekt nie zapobiega redundancji, przeciwnie, wymusza ja,
˛
gdyż każda wartość każdego z atrybutów A, B, C jest przechowywana dwa razy.
Projekty z poprzedniej strony sa˛ z tego wzgledu
˛
zdecydowanie lepsze.
c 2010-12 P. F. Góra
Copyright 2–35
Procedura postepowania
˛
1. Dany jest zbiór atrybutów, które chcemy reprezentować, i zbiór zależności
funkcyjnych pomiedzy
˛
atrybutami.
2. Znajdujemy baz˛e minimalna˛ zbioru zależności funkcyjnych.
3. Majac
˛ baz˛e minimalna,
˛ sumujemy zależności funkcyjne o takich samych
lewych stronach i dla każdej wysumowanej zależności tworzymy tabele˛ z
odpowiednia˛ lewa˛ strona˛ zależności jako kluczem.
Taki sposób postepowania
˛
prowadzi do projektu bazy, w której tabele sa˛ 3PN.
c 2010-12 P. F. Góra
Copyright 2–36
Procedura szukania bazy minimalnej
1. Każdy atrybut musi wystepować
˛
z lewej lub z prawej strony jednej zależności
funkcyjnej w zbiorze.
2. Jeśli jakaś zależność funkcyjna jest właczona
˛
do zbioru, nie wszystkie zależności funkcyjne potrzebne do jej wyprowadzenia moga˛ wystepować
˛
w tym
zbiorze.
3. Jeśli jakaś zależność funkcyjna zostaje wyłaczona
˛
ze zbioru, zależności
funkcyjne potrzebne do jej wyprowadzenia musza˛ zostać doń dołaczone.
˛
Jeżeli w zbiorze zależności funkcyjnych wystepuj
˛ a˛ (cz˛eściowe) cykle, może
istnieć wiecej
˛
niż jedna baza minimalna.
c 2010-12 P. F. Góra
Copyright 2–37