Databaser, efterår 2002 Normalisering, del 2 Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Normalformer NF Supplement FCDB definition 1. attribut-domæner i R skal være simple (ingen multiværdi-attributter) 2. R på 1. normalform nøgle XZ, X -> Y må ikke gælde (ingen attributter må være funktionelt afhængig af en kun del af nøglen) 3. R på 2. normalform X og Y ikke i nøgle, X -> Y må ikke gælde (ingen ikke-nøgle attributter må være funktionelt afhængige af attributter der ikke indgår i nøglen) BCNF hvis X -> B er ikke triviel så er X en supernøgle i R eller B en del af en nøgle hvis X -> Y er ikke triviel så er X en supernøgle i R 4. hvis X ->> Y er ikke triviel så er X en supernøgle i R 5. R kan ikke gendannes fra projektioner på R R er en relation, Triviel FD X -> Y: Y delmængde af X B er en attribut i R Triviel MVD X ->> Y: X,Y og Z er delmængder af R s attributter Y delmængde af X eller XY = R 2
3. normalform spiller en rolle I visse situationer kan dekomponering til BCNF give et problem, der har at gøre med bevarelse af afhængigheder Eksempel skema R(ABC) FDs AB -> C C -> B BCNF-normalisering fører til nyt skema pga C -> B T(BC) S(AC) her er FD AB -> C ej bevaret Bogens eksempel title,city -> theatre theatre -> city Andet eksempel gade,by -> postnr postnr -> by 3
3. normalform speciel egenskab 3. NF hvis X -> B er ikke triviel så er X en supernøgle i R eller B en del af en nøgle f.eks. R(ABC) ovenfor er på 3NF Teorem (3NF og bevarelse af afhængigheder) For enhver relation R med FD s F kan vi finde en dekomposition i 3NF relationer, sådan at når de dekomponerede relationer tilfredsstiller de projekterede afhængigheder så vil deres join tilfredsstille F m.a.o. 3NF-normalisering er afhængighedsbevarende 4
Flerværdi afhængighed Eksempel skema sælger(navn, adresse,telefon, kunde), med FD navn -> adresse. forekomst navn adresse telefon kunde holm a t1 k1 holm a t1 k2 holm a t1 k3 holm a t2 k1 holm a t2 k2 holm a t2 k3 BCNF-problem? navn -> adresse Løsning D1(navn, adresse), D2(navn, telefon, kunde) Flere problemer? D2: navn telefon kunde holm t1 k1 holm t1 k2 holm t1 k3 holm t2 k1 holm t2 k2 holm t2 k3 telefoner og kunder gentaget 5
Flerværdi afhængighed Flerværdi afhængighed egentlig blevet aktuelt fordi vi insisterer på 1 ste normalform Eksempel Nomalisering til 1 ste normalform af {(a,{b,c},d) } bliver {(a,b,d), (a,c,d)} mens {(a,{b,c},{d,e}) } bliver {(a,b,d), (a,c,e), (a,b,e), (a,c,d)} denne sidste bryder 4. normalform 6
Flerværdi afhængighed Y Flerværdi afhængig af X (noteret X ->> Y) hvis der for to tupler t1 og t2 i relation R gælder t1[x]=t2[x] så skal der findes to tupler t3 og t4, så t1[x]=t2[x]= t3[x]=t4[x] t3[y]=t1[y] og t4[y]=t2[y] t3[r-xy]=t2[r-xy] og t4[r-xy]=t1[r-xy] (X ->> Y) => (X ->> (R-XY)) p.g.a symmetrien Y Flerværdi afhængig af X X bestemmer Y s værdier 7
Flerværdi afhængighed Eksempel, ikke-triviel flerværdi afhængighed R(kursus, lærer, tekst) kursus ->> lærer kursus ->> tekst et kursus har nogle tekster og nogle lærere, men der er ikke sammenhæng imellem tekster og lærere altså: en lærer har ikke indflydelse på hvilke tekster der vælges på et kursus svarende til at et kursus kan beskrives ved en ikke normaliseret tupel f.eks. (K1, {L1, L2}, {T1, T2}) 8
4. Normalform Triviel flerværdi afhængighed X ->> Y Y delmængde af X eller XY = R Definition, 4. normalform (4NF) hvis X ->> Y er ikke triviel så er X en supernøgle i R 4NF-normalisering samme princip som ved BCNF-normalisering idet MVD s håndteres som FD s 9
4. Normalform Eksempel klt(kursus,lærer,tekst) Kurset 'K1' har lærere 'L1', 'L2' og 'L3' Kurset 'K1' har tekster 'T1', 'T2' og 'T3' kursus lærer tekst ------ ----- ----- K1 L1 T1 K1 L1 T2 K1 L1 T3 K1 L2 T1 K1 L2 T2 K1 L2 T3 K1 L3 T1 K1 L3 T2 K1 L3 T3 svarende til kursus lærer tekst ------ ---------- ---------- K1 {L1,L2,L3} {T1,T2,T3} dvs. (f.eks.) kursus ->> lærer 10
4. Normalform Eksempel kursus lærer tekst ------ ----- ----- K1 L1 T1 K1 L1 T2 K1 L1 T3 K1 L2 T1 K1 L2 T2 K1 L2 T3 K1 L3 T1 K1 L3 T2 K1 L3 T3 bringes på 4. normalform ved at dekomponere klt i: kl(kursus,lærer) kt(kursus,tekst) der får indholdet: kursus lærer kursus tekst ------ ----- ------ ----- K1 L1 K1 T1 K1 L2 K1 T2 K1 L3 K1 T3 11
4. Normalform sælger(navn, adresse,telefon, kunde), FD: navn -> adresse ikke trivielle MVD's: navn ->> telefon navn ->> kunde eneste nøgle: navn, telefon, kunde Alle tre afhængigheder bryder 4NF Dekomponering fører til 4NF relationer: D1(navn, adresse) D21(navn, telefon) D22(navn, kunde) D2: navn telefon kunde holm t1 k1 holm t1 k2 holm t1 k3 holm t2 k1 holm t2 k2 holm t2 k3 telefoner og kunder gentaget 12