Második normálforma (2NF) – definíció az adatbázis-normalizálásban
Második normálforma (2NF) definíció, feltételek és példák az adatbázis-normalizálásban — hogyan szünteti meg a részleges függőségeket és javítja az adatintegritást.
A második normál forma (2NF) a relációs modell egyik fontos tulajdonsága, különösen a táblázatok szerkezetének normalizálásánál. Röviden: egy tábla 2NF-ben van, ha 1NF-ben van és minden nem-kulcs attribútum teljesen (nem részlegesen) függ a táblázat elsődleges kulcsától.
A második normálforma első feltétele, hogy a táblázat első normálformájú legyen. Ezen túl a 2NF kiküszöböli azokat a részleges függéseket, ahol egy összetett (kompozit) elsődleges kulcs egy részétől függenek bizonyos nem-kulcs mezők.
Mit jelent pontosan a „teljes függés” és a „részleges függés”?
Teljes funkcionalis függés: egy nem-kulcs attribútum teljes mértékben függ az elsődleges kulcs egészétől, azaz nem határozható meg az elsődleges kulcs csak egy részének ismeretében.
Részleges függés: akkor áll fenn, ha egy összetett kulcs egyik komponense önmagában is meghatároz egy nem-kulcs attribútumot. Ilyen részleges függések esetén redundancia és frissítési anomáliák jelentkeznek.
Mikor van értelme a 2NF-nek?
- Ha az elsődleges kulcs összetett (több oszlopból áll). Ha a kulcs egyetlen oszlopból áll, akkor a részleges függés nem értelmezhető, és a tábla 1NF megléte esetén automatikusan 2NF-ben van.
- Ha a táblában előfordulnak olyan attribútumok, amelyek a kulcs csak egy részétől függenek — ezeket érdemes külön táblába szervezni.
Miért fontos a 2NF?
- Csökkenti az adatredundanciát és a tárolási feleslegességet.
- Csökkenti az adatinkonzisztencia és a frissítési/beillesztési/törlési anomáliák kockázatát.
- Elősegíti az adatmodellek tisztább, logikusabb felosztását (entitásokra bontást).
Hogyan alakítsunk át egy táblát 2NF-re? (lépések)
- Győződjünk meg róla, hogy a tábla 1NF-ben van (atomikus mezők, megfelelő adattípusok stb.).
- Azonosítsuk az elsődleges kulcsot (v. candidate key-eket). Ha a kulcs összetett, vizsgáljuk meg az egyes nem-kulcs attribútumok függését a kulcs részeitől.
- Keressük meg a részleges függéseket: mely attribútumok függenek csak a kulcs egy részétől?
- Távolítsuk el a részlegesen függő attribútumokat és helyezzük őket külön táblába együtt az őket meghatározó kulcskomponenssel. Az eredeti táblában hagyjuk meg a kulcsot (vagy annak hivatkozását), szükség szerint idegen kulcs formájában.
- Ellenőrizzük, hogy a dekompozíció megtartja-e az információt (lossless decomposition) és a függőségeket.
Egyszerű példa
Tegyük fel, van egy tábla, RendelésTételek(OrderID, ProductID, OrderDate, ProductName, Quantity, UnitPrice). Az elsődleges kulcs: (OrderID, ProductID).
- OrderDate tipikusan csak az OrderID-től függ (részleges függés).
- ProductName tipikusan csak a ProductID-től függ (részleges függés).
Megoldás — dekomponáljuk:
- Orders(OrderID, OrderDate, CustomerID, ...)
- Products(ProductID, ProductName, SupplierID, ...)
- OrderItems(OrderID, ProductID, Quantity, UnitPrice)
Így minden nem-kulcs attribútum most már teljesen függ az adott tábla elsődleges kulcsától, és a redundancia csökken.
Mi a különbség a 2NF és a 3NF között?
A 2NF megszünteti a részleges függéseket az összetett kulcsok esetén. A harmadik normálforma (3NF) tovább megy: megszünteti a tranzitív függéseket is (azaz ha A → B és B → C, akkor C közvetetten A-tól függ). Tehát a 2NF nem garantálja a tranzitív függőségek hiányát—ezet külön kell kezelni a 3NF eléréséhez.
Összefoglalva: a második normálforma célja, hogy biztosítsa, hogy minden nem-kulcs mező az elsődleges kulcs teljes egészétől függjön, ezáltal csökkentve a redundanciát és az anomáliák esélyét. Különösen fontos, ha a kulcs összetett, és a tábla 1NF-ben már megfelel.
Keres