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.

Szerző: Leandro Alegsa

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
AlegsaOnline.com - 2020 / 2025 - License CC3