Bazy danych 04

Download Report

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