Többértékű függőségek, 4NF, 5NF Szendrői Etelka datbázisok I szendroi@pmmk.pte.hu harmadik normálformáig mindenképpen érdemes normalizálni a relációkat. Legtöbbször elegendő is az első három normálformának megfelelő relációk alkalmazása. Előfordulhatnak azonban olyan esetek, amikor még ezután is maradnak anomáliák és feleslegesen tárolt adatok. negyedik és ötödik normálforma a többértékű függőségekből adódó redundancia kiszűrését szolgálja. Példa Tegyük fel, hogy van egy táblázatunk egy egyetemen oktatott szakok, oktatók és tantárgyak értékeiről Fizikus Szak Oktatók ak Prof. Zöld Prof. arna Matematikus Prof. Zöld Mechanika alapjai Optika Mechanika alapjai Vektoranalízis Trigonometria táblázatból látható, hogy egy tanár több szakon is taníthat Ugyanazt a tárgyat több tanár is taníthatja Ugyanaz a tantárgy több szakon is szerepel Ugyanaz a tanár több tárgyat is taníthat lakítsuk relációs táblává: Szak Oktatók ak Fizikus Prof. Zöld Mechanika alapjai Fizikus Prof. Zöld Optika Fizikus Prof. arna Mechanika alapjai Fizikus Prof. arna Optika Matematikus Prof. Zöld Mechanika alapjai Matematikus Prof. Zöld Vektoranalízis Matematikus Prof. Zöld Trigonometria 1
Többértékű függőség (MVD) vizsgált relációban többértékű függőségek vannak, azaz a meghatározó tulajdonság egyes adatértékeihez a meghatározott tulajdonság egy-egy értékhalmaza tartozik. Pl. Minden oktató több tárgyat taníthat, illetve ugyanazt a tárgyat több oktató is taníthatja. Ebben az esetben egyik irányban sincs egyértelmű függőség, ez egy többértékű függőség. Többértékű függőség (MVD) multivalued dependency z R(,,) sémán az többértékű függőség teljesül, ha minden (a i, b i ) hez tartozó {c i } halmaz csak a i -től függ b i -től nem. Minden a i -hez egy {b i } és egy {c i } halmaz rendelhető. z R{,, }-ben többértékű függőség igaz akkor és csak akkor, ha is igaz. z MVD mindig párban jár együtt. Ezért a jelölést használhatjuk az MVD megadására. Többértékű függőségekre vonatkozó szabályok Triviális többértékű függőség 1, 2, n 1, 2, m fennáll, ha { 1, 2, m } { 1, 2, n } teljesül. Tranzitivitási szabály: ha 1, 2, n 1, 2, m és 1, 2, m 1, 2, k érvényes, akkor 1, 2, n 1, 2, k is érvényes. (Mindazon -ket, melyek egyben -k is törölhetjük a jobb oldalról.) többértékű függőség nem tesz eleget a szétvághatósági/összevonhatósági szabály szétvághatósági részének. Többértékű függőségekre vonatkozó szabályok Funkcionális függőség előléptetése. Minden funkcionális függőség egyben többértékű függőség is. zaz, 1, 2, n 1, 2, m fennáll, akkor 1, 2, n 1, 2, m teljesül. Komplementer szabály. Ha 1, 2, n 1, 2, m többértékű függőség az R relációban, akkor R kielégíti az 1, 2, n 1, 2, k többértékű függőséget is, ahol a -k az R összes attribútumai közül éppen azok, amelyek nincsenek sem az -k, sem a -k között. 2
Negyedik normálforma Egy R reláció negyedik normálformában(4nf) van, ha minden nem triviális MVD egyben FD is, azaz ha nem triviális többértékű függőség fennáll, akkor és is teljesül, ahol szuperkulcs. Hogyan bontsuk fel a vizsgált relációt? FGIN tétele: Legyen R{,, } egy reláció, ahol, és attribútum halmazok. Ha R relációban teljesül, akkor és csak akkor az R reláció veszteségmentesen felbontható {,} és {,} attribútum halmazokból álló relációkra. Tehát a vizsgált relációnk veszteségmentesen felbontható {szak, tanár} és {szak, tantárgy} relációkra. felbontás eredménye: Szak Szak Fizikus Prof. Zöld Fizikus Mechanika alapjai Fizikus Prof. arna Fizikus Optika Matematikus Mechanika alapjai Matematikus Prof. Zöld Matematikus Vektoranalízis Matematikus Trigonometria felbontás eredményeként kapott két reláció 4NF-ben van. 5. Normálforma (5NF) Léteznek olyan sémák, amelyeket nem lehet veszteségmentesen egy lépésben két részre bontani, csak több részre. Példa: Tartsuk nyilván, hogy a diákok mely órákra járnak és melyik tanárhoz. diákok tantárgyat és tanárt választanak. diákok több tantárgyat és órát is választhatnak. tanárok több tantárgyat is taníthatnak. Tegyük fel, hogy a diákok minden olyan órára járnak, amelyet kiválasztottak, bármelyik általuk választott tanár tanítja. tábla: 3
Óralátogatás datbázis Nem FD, nem is MVD. Nézzük meg külön-külön, hogy melyik diák mit tanul, kinél tanul, és melyik tanár mit tanít. TNÍT datbázis HLLGTÓ Diák ÓR FELVESZ datbázis Diák Progi 3 Progi 3 datbázis datbázis z ÓR és TNÍT relációk összekapcsolásával visszakapjuk az eredeti táblát. ÓR Progi 3 Progi 3 datbázis datbázis TNÍT datbázis datbázis Tehát ez egy olyan függőség, amely a részek összekapcsolásával (JOIN) egyezik meg. z ilyen függőségeket JOIN függőségnek nevezzük. Jele: JD(,,. Z) funkcionális függőség általánosítása a többértékű függőség. Hasonlóképpen az MVD a JD speciális esete és az FD az MVD speciális esete. hogy az MDV is redundanciát okoz, úgy a JD is. 4
5. normálforma z ötödik normálforma a JD korlátozását mondja ki. Ötödik normálformában van a reláció, ha minden JD FD-ken alapul, azaz minden JD a jelölt kulcsra épül, a jelölt kulcs implikálja a felbontást. Ha egy R{,, } sémában, ahol és, teljesül a JD(, ), tehát a felbontást, illetve a JD-t, az jelölt kulcs implikálta. Jelölése: 5NF. z ötödik normálforma teljesülése esetén teljesül a negyedik is. negyedik pedig magában foglalja a NF-et is. De-normalizálás Hatékonysági okokból, azaz a gyorsabbinformáció visszakeresésmiatt, gyakran a normalizált modellt átalakítjuk, és újból összekapcsolunk táblákat egy relációba, vagy redundánsan tárolunk mezőket (ellenőrzött redundancia!). Ezt a folyamatot de-normalizálásnak nevezzük. Ha egy adott számításhoz az adatokat több táblán keresztül kell visszakeresni, és a táblák sok rekordból állnak, ez igen hosszú lehet. Ilyenkor célszerű a számításhoz szükséges mezőt a táblában tárolni, annak ellenére, hogy ez redundanciát okoz. Ha egy adott számításhoz az adatokat több táblán keresztül kell visszakeresni, és a táblák sok rekordból állnak, ez igen hosszú lehet, ilyenkor célszerű a számított adatokat tárolni a táblában. 5