8. előadás 4NF, 5NF Adatbázisrendszerek előadás 2008. november 10. ek és Debreceni Egyetem Informatikai Kar 8.1
(multivalued dependency, MVD) Informálisan, valahányszor két független 1 : N számosságú A : B és A : C kapcsolattípust összemixelünk, összemosunk egy R(A, B, C) relációba, többértékű függés keletkezhet. Egy R relációsémán megadott többértékű függés, ahol és R attribútumhalmazai, a következő megszorítást jelenti bármely R fölötti r reláció esetén: Ha van két olyan t 1 és t 2 rekord r-ben, amelyre t 1 [] = t 2 [], akkor léteznie kell két t 3 és t 4 rekordnak is r-ben a következő tulajdonságokkal, ahol Z -t az (R ( )) jelölésére használjuk: t 3 [] = t 4 [] = t 1 [] = t 2 []. t 3 [ ] = t 1 [ ] és t 4 [ ] = t 2 [ ]. t 3 [Z ] = t 2 [Z ] és t 4 [Z ] = t 1 [Z ]. ek Valahányszor, azt mondjuk, hogy többértékűen meghatározza -t. 8.2
ek 1 A funkcionális függések reflexivitási szabálya: Ha, akkor. 2 A funkcionális függések augmentivitási szabálya: { } = Z Z. 3 A funkcionális függések tranzitivitási szabálya: {, Z } = Z. 4 A többértékű függések komplementer szabálya: { } = { (R ( ))}. 5 A többértékű függések augmentivitási szabálya: Ha és W Z, akkor W Z. 6 A többértékű függések tranzitivitási szabálya: {, Z } = (Z ). 7 A funkcionális függésből következik a többértékű függés: { } =. 8 A többértékű függésből bizonyos esetekben következik valamiféle funkcionális függés: Ha és létezik olyan W, amelyre (a) W üres, (b) W Z, és (c) Z, akkor Z. ek 8.3
Egy többértékű függést triviális többértékű függésnek nevezünk, ha vagy (a) részhalmaza -nek, vagy (b) = R. Egy olyan többértékű függést, amely sem (a)-t, sem (b)-t nem elégíti ki, nemtriviális többértékű függésnek nevezünk. Megjegyzés Egy triviális többértékű függés fenn fog állni R bármilyen r relációján; azért nevezzük triviálisnak, mert nem határoz meg semmilyen lényeges vagy értelmes (jelentéssel bíró) megszorítást R-re vonatkozóan. ek Egy R relációséma negyedik normálformában (4NF-ben) van, figyelembe véve az F függések halmazát (amely magában foglalja a funkcionális és többértékű függéseket), ha minden F + -beli nemtriviális többértékű függés esetén szuperkulcsa R-nek. 8.4
Dekompozíció veszteségmentes join tulajdonsága Az R relációséma egy D = {R 1, R 2,..., R m } ja veszteségmentes join tulajdonságú, figyelembe véve az R-beli F függések halmazát, ha R minden r relációjára, amely kielégíti F-et, fennáll a következő: (π R1 (r),..., π Rm (r)) = r. A fenti képletben a természetes összekapcsolást jelöli. Megjegyzés Valahányszor felbontunk egy R relációsémát az R 1 = ( ) és R 2 = (R ) relációsémákra egy többértékű függés alapján, amely fennáll R-en, a veszteségmentes join tulajdonságú lesz. ek 8.5
Relációsémák veszteségmentes join ja Az R 1 és R 2 relációsémák akkor és csak akkor alkotják az R egy veszteségmentes join ját, figyelembe véve a funkcionális és többértékű függések F halmazát, ha (R 1 R 2 ) (R 1 R 2 ), vagy szimmetrikusan akkor és csak akkor, ha (R 1 R 2 ) (R 2 R 1 ). ek 8.6
Egy R relációsémán megadott kapcsolásfüggés (join dependency, JD) meghatároz egy megszorítást az R bármely r relációjára. A megszorítás azt írja elő, hogy R minden legális r relációjának kell, hogy legyen egy veszteségmentes join ja az R 1, R 2,..., R n sémákba; azaz minden ilyen r-re (π R1 (r), π R2 (r),..., π Rn (r)) = r. Az így előírt megszorítást JD(R 1, R 2,..., R n )-nel jelöljük. Megjegyzés A többértékű függés speciális esete az olyan kapcsolásfüggésnek, ahol n = 2. Azaz egy JD(R 1, R 2 ) implikál egy (R 1 R 2 ) (R 1 R 2 ) többértékű függést (illetve, szimmetrikusan egy (R 1 R 2 ) (R 2 R 1 ) többértékű függést is). ek 8.7
Egy R sémára megadott JD(R 1, R 2,..., R n ) kapcsolásfüggés triviális ha valamely JD(R 1, R 2,..., R n )-beli R i relációséma egyenlő R-rel. Egy R relációséma ötödik normálformában (5NF-ben) van, figyelembe véve funkcionális, többértékű és join függések egy F halmazát, ha minden F + -beli nemtriviális JD(R 1, R 2,..., R n ) esetén minden R i szuperkulcsa R-nek. ek 8.8
(a) DOLG (c) SZÁLLÍTÁS Dnév Pnév Hnév (b) DOLG_PROJEKTEK Dnév Pnév DOLG_HOZZÁTARTOZÓK Dnév Hnév ek (d) R1 R2 R3 (a) A DOLG reláció két többértékű függéssel: Dnév Pnév és Dnév Hnév. 8.9
(a) DOLG (c) SZÁLLÍTÁS Dnév Pnév Hnév (b) DOLG_PROJEKTEK Dnév Pnév DOLG_HOZZÁTARTOZÓK Dnév Hnév ek (d) R1 R2 R3 (b) A DOLG reláció felbontása két 4NF-ben lévő relációra: DOLG_PROJEKTEK és DOLG_HOZZÁTARTOZÓK. 8.9
(a) DOLG (c) SZÁLLÍTÁS Dnév Pnév Hnév (b) DOLG_PROJEKTEK Dnév Pnév DOLG_HOZZÁTARTOZÓK Dnév Hnév ek (d) R1 R2 R3 (c) A SZÁLLÍTÁS reláció többértékű függések nélkül 4NF-ben van, de nincs 5NF-ben, ha JD(R 1, R 2, R 3 ) teljesül. 8.9
(a) DOLG (c) SZÁLLÍTÁS Dnév Pnév Hnév (b) DOLG_PROJEKTEK Dnév Pnév DOLG_HOZZÁTARTOZÓK Dnév Hnév ek (d) R1 R2 R3 (d) A SZÁLLÍTÁS reláció felbontása 5NF-ben lévő relációkra: R 1, R 2, R 3. 8.9