Negyedik normálforma
A negyedik normálforma (4NF) az adatbázis normalizálásában használt normálforma. Ronald Fagin vezette be 1977-ben, a 4NF a normalizálás következő szintje a Boyce–Codd-normálforma (BCNF) után. Míg a második, a harmadik és a Boyce–Codd-normálforma funkcionális függőségekkel foglalkozik, addig a 4NF egy általánosabb típusú függőséggel foglalkozik, amelyet többértékű függőségnek neveznek. A tábla akkor és csak akkor áll 4NF-ben, ha X nem triviális többértékű függőségeire vonatkozik Y, X szuperkulcs - vagyis X vagy jelöltkulcs, vagy annak szuperhalmaza.[1]
Többértékű függőségek
[szerkesztés]Ha egy relációs adatbázistábla oszlopfejlécei három diszjunkt csoportra oszlanak, X, Y és Z , akkor egy adott sor összefüggésében x, y és z hivatkozhatunk az egyes fejléccsoportok alatti adatokra. Többértékű függőség X Y azt jelenti, hogy ha bármelyik, a táblában ténylegesen előforduló x-et választjuk (hívjuk ezt az x c választást), és összeállítunk egy listát a táblában előforduló összes x c yz- kombinációról, akkor azt találjuk, hogy x c ugyanazokhoz az y bejegyzésekhez társul z-től függetlenül. Tehát lényegében z jelenléte nem nyújt hasznos információt az y lehetséges értékeinek korlátozásához.
Triviális többértékű függőség X Y jelentése, ahol az egyik Y jelentése egy részhalmaza X, vagy X és Y együtt az egész készlet attribútumok a kapcsolatban.
A funkcionális függőség a többértékű függőség speciális esete. X → Y funkcionális függőségben minden x pontosan egyet határoz meg y, soha többet nem.
Példák
[szerkesztés]Tekintsük a következő példát:
Étterem | Pizza fajta | Szállítási terület |
---|---|---|
A1 Pizza | Vastag tésztájú | Springfield |
A1 Pizza | Vastag tésztájú | Shelbyville |
A1 Pizza | Vastag tésztájú | Főváros |
A1 Pizza | Töltött kéreg | Springfield |
A1 Pizza | Töltött kéreg | Shelbyville |
A1 Pizza | Töltött kéreg | Főváros |
Elite Pizza | Vékony tésztájú | Főváros |
Elite Pizza | Töltött kéreg | Főváros |
Vincenzo pizzája | Vastag tésztájú | Springfield |
Vincenzo pizzája | Vastag tésztájú | Shelbyville |
Vincenzo pizzája | Vékony tésztájú | Springfield |
Vincenzo pizzája | Vékony tésztájú | Shelbyville |
Minden sor azt jelzi, hogy egy adott étterem adott fajta pizzát tud szállítani egy adott területre.
A táblázatnak nincsenek kulcs nélküli attribútumai, mert egyetlen kulcsa az {Étterem, Pizza Fajta, Szállítási terület}. Ezért a BCNF-ig minden normalizálási formának megfelel. Ha azonban feltételezzük, hogy az étterem által kínált pizzafajtákat nem érinti a kiszállítási terület (azaz egy étterem minden általa gyártott pizzafajtát kínál az összes szállított területre), akkor nem felel meg a 4NF-nek. A probléma az, hogy a táblázat két nem triviális, többértékű függőséget tartalmaz az {Étterem} attribútumtól (ami nem szuperkulcs). A függőségek a következők:
- {Étterem} {Pizza fajta}
- {Étterem} {Szállítási terület}
Ezek a nem triviális, többértékű függőségek a nem szuper kulcsoktól azt a tényt tükrözik, hogy az étterem által kínált pizzafajták függetlenek az étteremtől. Ez a helyzet redundanciához vezet a táblában: például háromszor elmondták nekünk, hogy az A1 Pizza töltött kérget kínál, és ha az A1 Pizza elkezd sajtkérges pizzákat gyártani, akkor több sort kell hozzáadnunk, egyet az A1 Pizza mindegyikéhez, egyet a szállítási területekhez. Semmi sem akadályozza meg minket abban, hogy ezt helytelenül tegyük: hozzáadhatunk Sajtkéreg sorokat az A1 Pizza egyik kivételével az összes szállítási területhez, ezáltal nem tartva tiszteletben a többértékű függőséget {Étterem} {Pizza fajta}.
Ezeknek a rendellenességeknek a kiküszöbölése érdekében a kínált fajtákra vonatkozó tényeket egy másik táblába kell helyezni a szállítási területek tényeitől, így két táblázatot kapunk, amelyek mind a 4NF-ben szerepelnek:
Étterem | Pizza fajta |
---|---|
A1 Pizza | Vastag tésztájú |
A1 Pizza | Töltött kéreg |
Elite Pizza | Vékony tésztájú |
Elite Pizza | Töltött kéreg |
Vincenzo pizzája | Vastag tésztájú |
Vincenzo pizzája | Vékony tésztájú |
Étterem | Szállítási terület |
---|---|
A1 Pizza | Springfield |
A1 Pizza | Shelbyville |
A1 Pizza | Főváros |
Elite Pizza | Főváros |
Vincenzo pizzája | Springfield |
Vincenzo pizzája | Shelbyville |
Ezzel szemben, ha az étterem által kínált pizzafajták néha jogosan váltakoznak az egyes szállítási területekről, az eredeti három oszlopos táblázat kielégíti a 4NF-et.
Ronald Fagin bebizonyította, hogy a 4NF elérése mindig lehetséges.[2] Rissanen tétele többértékű függőségekre is alkalmazható.
4NF a gyakorlatban
[szerkesztés]Margaret S. Wu 1992-es tanulmánya megjegyzi, hogy az adatbázis-normalizálás oktatása általában leáll a 4NF-nél, talán annak a meggyőződésnek köszönhetően, hogy a 4NF-et sértő (de az összes alacsonyabb normális formát teljesítő) táblákkal ritkán találkoznak az üzleti alkalmazások. Ez a meggyőződés azonban nem biztos, hogy pontos. Wu arról számolt be, hogy negyven szervezeti adatbázis tanulmányozása során több mint 20% tartalmazott egy vagy több olyan táblázatot, amelyek megsértették a 4NF-t, miközben megfelelnek az összes alacsonyabb normálformának.[3]
Normalizálás a 4NF fölött
[szerkesztés]Csak ritka esetekben nem felel meg a 4NF tábla a magasabb normálformának, az 5NF-nek. Ezek olyan helyzetek, amikor a 4NF táblában az attribútumértékek érvényes kombinációit szabályozó komplex valós kényszer nincs implicit módon a táblázat felépítésében.
Jegyzetek
[szerkesztés]- ↑ "A relation schema R* is in fourth normal form (4NF) if, whenever a nontrivial multivalued dependency X Y holds for R*, then so does the functional dependency X → A for every column name A of R*. Intuitively all dependencies are the result of keys." Fagin (1977. szeptember 1.). „Multivalued Dependencies and a New Normal Form for Relational Databases”. ACM Transactions on Database Systems 2 (1), 262–278. o. [2007. november 29-i dátummal az eredetiből archiválva]. DOI:10.1145/320557.320571. (Hozzáférés: 2008. április 26.)
- ↑ Fagin, p. 268
- ↑ Wu (1992. március 1.). „The Practical Need for Fourth Normal Form”. ACM SIGCSE Bulletin 24 (1), 19–23. o. DOI:10.1145/135250.134515.