Negyedik normálforma

A Wikipédiából, a szabad enciklopédiából

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. XY 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:

Pizza szállítási engedélyek
É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:

Éttermi fajták
É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ú
Szállítási helyek étterem szerint
É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]

  1. "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.)  
  2. Fagin, p. 268
  3. 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.  

Kapcsolódó szócikkek[szerkesztés]