8.4. A második és harmadik normálforma általános definíciója

Általában úgy szeretnénk megtervezni relációsémáinkat, hogy se részleges függéseket, se tranzitív függéseket ne tartalmazzanak, mivel az ilyen típusú függések okozzák a 8.1.2. alfejezetben tárgyalt karbantartási anomáliákat. A 3NF alakú relációkra történő normalizálási lépések, amelyeket eddig tárgyaltunk, el is távolították az elsődleges kulcstól való részleges és tranzitív függéseket. Ezek a definíciók azonban nem veszik figyelembe a reláció többi kulcsjelöltjét, már ha léteznek ilyenek egyáltalán. Ebben a fejezetben megadjuk a 2NF és a 3NF általánosabb definícióit, amelyek már a reláció összes kulcsjelöltjét figyelembe veszik. Megjegyzendő, hogy ez nincs hatással az 1NF definíciójára, mivel az független a kulcsoktól és a funkcionális függésektől. Az elsődleges attribútum általános definíciójaként azt az attribútumot fogjuk elsődlegesnek tekinteni, amelyik eleme bármely kulcsjelöltnek. A részleges és a teljes funkcionális függéseket, valamint a tranzitív függést a reláció összes kulcsjelöltjére vonatkoztatva fogjuk figyelembe venni.

8.4.1. A második normálforma általános definíciója

Definíció.  Egy R relációséma második normálformában (2NF-ben) van, ha egyetlen R-beli másodlagos (leíró) A attribútum sem függ részlegesen R egyetlen kulcsától sem.

A 2NF ellenőrzése magában foglalja mindazoknak a funkcionális függéseknek az ellenőrzését, amelyeknek a bal oldali attribútumai az elsődleges kulcs részei. Ha az elsődleges kulcs egyetlen attribútumot tartalmaz, akkor az ellenőrzést egyáltalán nem kell elvégezni. Tekintsük a 8.11. (a) ábrán bemutatott PARCELLÁK relációsémát, amely az ország különböző megyéiben eladásra kínált földterületeket írja le. Tegyük föl, hogy két kulcsjelölt van: az Ingatlan_ID# és a {Megye, Parcella#}; azaz a parcellaszámok csak egy-egy megyén belül egyediek, míg az Ingatlan_ID# számok az egész országra vonatkozóan azok.

8.11. ábra - Normalizálás 2NF-be és 3NF-be. (a) A PARCELLÁK reláció négy funkcionális függéssel (FD1−FD4). (b) A szétbontott, második normálformájú PARCELLÁK1 és PARCELLÁK2 relációk. (c) A PARCELLÁK1 szétbontása a harmadik normálformájú PARCELLÁK1A és PARCELLÁK1B relációkra. (d) A PARCELLÁK normalizálási folyamatának az összefoglalása.

Normalizálás 2NF-be és 3NF-be. (a) A PARCELLÁK reláció négy funkcionális függéssel (FD1−FD4). (b) A szétbontott, második normálformájú PARCELLÁK1 és PARCELLÁK2 relációk. (c) A PARCELLÁK1 szétbontása a harmadik normálformájú PARCELLÁK1A és PARCELLÁK1B relációkra. (d) A PARCELLÁK normalizálási folyamatának az összefoglalása.

Az Ingatlan_ID# és a {Megye, Parcella#} kulcsjelölteket figyelembe véve tudjuk, hogy a 8.11. (a) ábra FD1 és FD2 funkcionális függései fennállnak. Az Ingatlan_ID#-t választjuk elsődleges kulcsnak, amit aláhúzással jelölünk a 8.11. (a) ábrán, bár semmilyen különösebb tényező nem szól emellett a kulcs mellett a másik kulcsjelölttel szemben. Tegyük fel, hogy a következő két további funkcionális függés is fennáll a PARCELLÁK sémában:

FD3: Megye → Adó
FD4: Terület → Ár

Más szóval, az FD3 függés azt mondja, hogy az adó mértéke rögzített egy adott megyében (nem változik parcelláról parcellára ugyanazon megyén belül), míg az FD4 azt mondja, hogy egy parcella árát meghatározza a terület nagysága, függetlenül attól, hogy melyik megyében is található. (Feltételezve, hogy ez a parcellának az adózáskor figyelembe vett ára.)

A PARCELLÁK relációséma megsérti a 2NF általános definícióját, mert az Adó részlegesen függ a {Megye, Parcella#} kulcsjelölttől, az FD3 miatt. A PARCELLÁK 2NF-re történő normalizálásához felbontjuk a sémát két relációra, a 8.11. (b) ábrán bemutatott PARCELLÁK1-re és PARCELLÁK2-re. A 2NF-et megsértő Adó attribútumnak a PARCELLÁK-ból történő eltávolításával létrehozzuk a PARCELLÁK1-et, az Adót pedig a Megyével (a részleges függést okozó FD3 bal oldalával) együtt a másik, PARCELLÁK2 relációba tesszük. Ezzel mind a PARCELLÁK1, mind a PARCELLÁK2 2NF-ben lesz. Megjegyzendő, hogy az FD4 nem sértette meg a 2NF-et, és továbbra is érvényes maradt a PARCELLÁK1-ben.

8.4.2. A harmadik normálforma általános definíciója

Definíció.  Egy R relációséma harmadik normálformában (3NF-ben) van, ha valahányszor egy XA nemtriviális funkcionális függés fennáll R-en, akkor vagy (a) X szuperkulcsa R-nek, vagy (b) A elsődleges attribútuma R-nek.

Ennek a definíciónak megfelelően a PARCELLÁK2 (a 8.11. (b) ábrán) 3NF-ben van. Ugyanakkor az FD4 a PARCELLÁK1-ben megsérti a 3NF-et, mert a Terület nem szuperkulcs, és az Ár sem elsődleges attribútum a PARCELLÁK1-ben. Ahhoz, hogy a PARCELLÁK1-et 3NF-re hozzuk, fel kell bontanunk őt a 8.11. (c) ábrán látható PARCELLÁK1A és PARCELLÁK1B relációsémákra. A 3NF-et megsértő Ár attribútumnak a PARCELLÁK1-ből történő eltávolításával létrehozzuk a PARCELLÁK1A-t, az Árat pedig a Területtel (a tranzitív függést okozó FD4 bal oldalával) együtt a másik, PARCELLÁK1B relációba tesszük. Ezzel mind a PARCELLÁK1A, mind a PARCELLÁK1B 3NF-ben lesz.

Két dolgot érdemes megjegyezni ezzel a példával és a 3NF általános definíciójával kapcsolatban:

  • A PARCELLÁK1 megsérti a 3NF-et, mert az Ár tranzitívan függ a PARCELLÁK1 kulcsjelöltjeinek mindegyikétől a másodlagos Terület attribútumon keresztül.

  • Ez az általános definíció közvetlenül alkalmazható annak eldöntésére, hogy egy relációséma 3NF-ben van-e; nem kell megvizsgálnunk előbb a 2NF teljesülését. Ha a 3NF fenti definícióját alkalmazzuk a FD1−FD4 függéseket tartalmazó PARCELLÁK relációsémára, azt találhatjuk, hogy mind az FD3, mind az FD4 megsértik a 3NF-et. Ezért a PARCELLÁK sémát közvetlenül is felbonthatjuk PARCELLÁK1A-ra, PARCELLÁK1B-re és PARCELLÁK2-re. Így tetszőleges sorrendben távolíthatók el azok a tranzitív és részleges függések, amelyek megsértik a 3NF-et.

8.4.3. A harmadik normálforma általános definíciójának értelmezése

Egy R relációséma megsérti a 3NF definícióját, ha egy R-beli XA funkcionális függés megsérti a 3NF-nek mind az (a), mind pedig a (b) feltételét. A (b) megsértése azt jelenti, hogy A másodlagos (leíró) attribútum. Az (a) megsértése azt jelenti, hogy X-nek nem részhalmaza R egyetlen kulcsa sem; így X másodlagos (leíró), vagy valódi részhalmaza R egy kulcsának. Ha X nem elsődleges, akkor tipikusan egy tranzitív függésünk van, amely megsérti a 3NF-et, míg ha X egy valódi részhalmaza R valamely kulcsának, akkor egy részleges függésünk van, amely megsérti a 3NF-et (és a 2NF-et is). Ennélfogva a következőképpen fogalmazhatjuk meg a 3NF egy alternatív általános definícióját:

Alternatív definíció.  Egy R relációséma 3NF-ben van, ha R minden másodlagos (leíró) attribútumára teljesül a következő két feltétel:

  • Az attribútum teljesen funkcionálisan függ R minden kulcsától.

  • Az attribútum nemtranzitívan függ R minden kulcsától.