Transcript Bazy danych 04
Bazy danych
04: Zależności funkcyjne i postaci normalne Krzysztof Stencel
Wadliwe schematy danych
Wykładowca Krwawość Wykład Stencel 3 BD Trudność Termin 2 14:15 Stencel Jabłonowski 3 2 SZBD PO 3 2 8:30 12:15 Ciebiera Ciebiera 1 1 BD ZPP 2 4 10:15 8:30
Anomalie aktualizacyjne
Przy wstawianiu
: nie da się wstawić wykładowcy bez wykładu
Przy usuwaniu
samego : usuwając PO wykładane przez Jabłonowskiego usuwamy też jego
Przy modyfikacji
: zmiana krwawości Stencla wymaga zmiany więcej niż jednego wiersza
Nadmiarowość
: ta sama dana jest zapisana więcej niż jeden raz
Postulat normalizacji
Każdy fakt jest przechowywany w bazie danych dokładnie jeden raz.
Wtedy nie będzie też anomalii.
Reszta wykładu, to uszczegółowienie tego postulatu.
Zależność funkcyjna
X, Y kol(r) – pewne podzbiory kolumn Zależność funkcyjna X Y zachodzi w relacji
r
wtedy i tylko wtedy, gdy t, u r : t ↾ X=u ↾ X t ↾ Y=u ↾ Y Innymi słowy, równość wartości w kolumnach ze zbioru X implikuje równość (
determinuje
) wartości w kolumnach ze zbioru Y
Przykłady zależności funkcyjnych
Ciekawe – – – Wykładowca Wykład Krwawość Trudność Wykładowca, Wykład Termin Wtórne – Wykładowca, Wykład Krwawość, Trudność Trywialne – – Wykład Wykład Wykładowca, Krwawość Krwawość
Pierwsza postać normalna (1NF)
Dane są atomowe.
Każdy element danych (komórka tabeli) jest niepodzielna.
Dozwolone są tylko skalarne typy danych.
Nic bardziej skomplikowanego nie: wektory, listy, drzewa, tablice, krotki, relacje itd.
Demagogia pro-1NF
Pierwsza postać normalna pozwala rozważać zależności funkcyjne całości atrybutów od całości atrybutów Gdyby była kolumna
Adres
złożona z ulicy, nr domu, kodu oraz kolumna
Poczta
, to trzeba by zapisać zależność funkcyjną jakoś tak: ⅓ Adres
Poczta
Bo
Poczta
zależy od kodu, czyli kawałka
Adresu
Schemat relacji z zależnościami funkcyjnymi
Postacie normalne są związane z projektowaniem baz danych Trzeba więc oderwać się od konkretnych relacji, bo ich jeszcze nie ma (jesteśmy w fazie projektowania) Schemat tabeli to para: R, gdzie R - kol(r), a to zbiór zależności funkcyjnych nad R.
Konsekwencja semantyczna
Oznaczenie: r ⊨ funkcyjna X Y) X Y (w
r
zachodzi zależność r ⊨ ⊨ , wtw. r ⊨ X X Y dla każdego X Y wtw. dla każdej relacji
r
Y ∈ jeśli r ⊨ to r ⊨ , X Y Jeśli ⊨ X Y, to X Y nazwiemy
konsekwencją semantyczną
Aksjomaty Armstronga
Reguły systemu dowodowego dla zależności funkcyjnych X Y X Y X Y XZ YZ X Y Y Z X Z
Dowód zależności funkcyjnej
Dowodem z.f. X Y ze zbioru z.f. ciąg z.f.
z
1 ,
z
2 , …, właściwościach:
z n
o następujących nazwiemy – –
z n
= X Y dla każdego
i
= 1,2, …,
n,
z i
∈ lub
z i
można otrzymać korzystając z pewnego aksjomatu Armstronga na podstawie z.f.
z
1 ,
z
2 , …,
z i
–1 Oznaczenie: Jeśli istnieje dowód X Y z , to powiemy, że ⊢ X Y („jest
dowodliwe
”)
Ciekawe właściwości
Poprawność
⊢ i
pełność
X Y ⊨ X Y
Rozstrzygalność
– oczywiste – wszystko jest skończone, można więc wygenerować domknięcie zbioru z.f.
* = { X Y : ⊢ X Y }
Jednoznaczność
– dla każdego * istnieje relacja r, w której spełnione są tylko z.f. z *
Domknięcie zbioru kolumn
Domknięcie zbioru kolumn (względem ): Z* ( ) = { k ∈ R : ⊢ Z k } Obliczanie (wymaga dobrej struktury danych) Z* := Z
powtarzaj w kółko
weź X Y z , takie, że X Z* := Z* := – { X Y Y } Z* jeśli nie było takiego X Y, to koniec
Klucz – kluczowe pojęcie
Nadkluczem
schematu R, zbiór kolumn X, taki, że: X* ( ) = R nazwiemy każdy
Klucz
schematu R, minimalny (w sensie to nadklucz, który jest ) w tym schemacie Jedna relacja może mieć wiele kluczy Klucz jest centralnym pojęciem teorii postaci normalnych
Przykład klucza i nadkluczy
R = {Wykładowca,Krwawość,Wykład,Trudność,Termin} – Wykładowca Krwawość – – Wykład Trudność Wykładowca, Wykład Termin Nadklucze – – – – { Wykładowca,Wykład,Krwawość} { Wykładowca,Wykład } klucz { Wykładowca,Wykład,Krwawość,Trudność,Termin } { Wykładowca,Wykład,Trudność }
Druga postać normalna (2NF)
Schemat R, jest 2NF, wtw. jest 1NF oraz dla każdej z. f. X A ∈ * zachodzi co najmniej jeden z warunków: – – A ∈ X X nie jest właściwym podzbiorem żadnego klucza (zależność trywialna) (brak
zależności częściowych
) – A należy do pewnego klucza (atrybut główny) Zależność częściowa od klucza X A: dla pewnego klucza K, A zależy od części K
Trzecia postać normalna (3NF)
Schemat R, jest 3NF, wtw. jest 1NF oraz dla każdej z. f. X A ∈ * zachodzi co najmniej jeden z warunków: – – A ∈ X X jest nadkluczem (zależność trywialna) (brak
zależności przechodnich
) – A należy do pewnego klucza (atrybut główny) Zależność przechodnia od klucza X A: dla pewnego klucza K zachodzi K X A
Postać normalna Boyce’a-Codda (BCNF)
Schemat R, jest BCNF, wtw. jest 1NF oraz dla każdej z.f. X A ∈ * zachodzi co najmniej jeden z warunków: – – A ∈ X X jest nadkluczem (zależność trywialna) (brak
zależności przechodnich
) W stosunku do 3NF brak „furtki” na atrybut główny 1NF 2NF 3NF BCNF cdn …
Analiza przykładowego schematu
R = {Wykładowca,Krwawość,Wykład,Trudność,Termin} – Wykładowca Krwawość – – Wykład Trudność Wykładowca, Wykład Termin Jedyny klucz: { Wykładowca, Wykład } Dwie pierwsze z.f. są więc częściowe Nie ma więc 2NF (a więc i 3NF, BCNF, itd.) Brak 2NF/3NF jest przyczyną anomalii Brak BCNF gdy 3NF nie powoduje anomalii