Most a következő helyen jársz: Adatbázis >> Elmélet >> Normalizálás

Hatodik lecke

Egyed-kapcsolat modell átalakítása relációs modellé, Normalizálás

Egy adatbázis relációs adatmodelljének megalkotásához két út vezet:

  • Leképezési szabályok alkalmazásával EK modellből.
  • Feladat specifikációból (feladat leírás) kiindulva normalizálással.

Relációs modell létrehozása Egyed-kapcsolat modellből, leképezési szabályokkal

Egyedek leképezése

Az EK modell minden egyedéhez felírunk egy relációsémát, amelynek neve az egyed neve, attribútumai az egyed attribútumai, kulcsa az egyed kulcs-attribútumai.

A sémára épülő adattábla minden egyes sora egy egyed-előfordulásnak felel meg.

Pl.: könyv – olvasó egyedekből kapott relációséma:

Könyv (ISBN, Szerző, Kcím)

Olvasó (Olvasószám, Név, Lakcím)

Összetett attribútumok leképezése

Az összetett attribútumot ugyanabban a sémában felbontjuk rész-tulajdonságaira.

Pl.: Olvasó (Olvasószám, Név, Lakcím)

Ahol a lakcím: helység, utca, házszám tulajdonságokból állhat.

A fenti séma kibővítve:

Olvasó (Olvasószám, Név, Helység, Utca, Házszám)

ek - relációs példa

Többértékű attribútumok leképezése

A reláció egy rekordjának valamely attribútumához több érték tartozik.

Pl.: KÖNYV (ISBN, szerző, KCím)

Egy könyvnek több szerzője is lehet.

Leképezés: A többértékű tulajdonságot kiemeljük egy másik táblába és hozzávesszük az azonosító tulajdonságát is.

Könyv (ISBN, KCím)

Szerzők (ISBN, szerző)

ek - relációs példa

Kapcsolatok leképezése

Általános szabály:

Vegyünk fel a kapcsolathoz egy új sémát, amelynek neve a kapcsolat neve, attribútumai pedig a kapcsolódó egyedek kulcs attribútumai és a kapcsolat saját attribútumai.

Ha ezen séma kulcsa megegyezik valamely kapcsolódó egyed kulcsával, akkor a kapcsolat sémája az egyed sémájába beolvasztható.

ek - relációs példa

ek - relációs példa

A kialakított relációsémák:

Könyv (ISBN, Szerző, KCím)

Kölcsönzés (ISBN, Olvasószám, Kölcsönzés dátuma, Visszahozás dátuma)

Olvasó (Olvasószám, Név, Lakcím)

Az ISBN és az Olvasószám külső-kulcsként is szerepelnek a Kölcsönzés relációsémában.

Ha a sémákat konkrét értékekkel töltenénk ki, akkor a séma egy előfordulását kapnánk, amit reláció – előfordulásnak, vagy egyszerűen relációnak (táblának) nevezünk.

Relációs modell létrehozása Egyed-kapcsolat modellből, normalizálással

Ha az egyed-kapcsolat modellt helyesen írjuk fel, akkor általában optimális (redundanciamentes) relációs adatbázis sémát kapunk. Semmi garancia nincs azonban arra, hogy az E-K modell optimális, ezért szükség van a relációsémák formális vizsgálatára, amely a redundanciákat detektálja és az optimalizálást lehetővé teszi (normalizálás).

A normalizálás előtt ismerkedjünk meg a reláció oszlopai között fennálló kapcsolatokkal, úgynevezett függőségekkel. Ezek is a relációk belső szerkezetét írják le.

Funkcionális függés: Legyen R(A1, A2, …, An) egy relációs séma és legyenek P, Q az A attribútum halmaz részhalmazai. Azt mondjuk, hogy P funkcionálisan meghatározza Q-t (jelölve P --> Q), vagy más szóval Q funkcionálisan függ P-től, ha abból, hogy a reláció valamely két sora megegyezik P halmazon következik, hogy a két sor értékei megegyeznek a Q halmazon is.

Vagyis a P attribútum részhalmaz funkcionálisan meghatározza a Q attribútum halmazt, ha minden P-hez tartozó értékhez pontosan egy Q-hoz tartozó értéket tudunk hozzárendelni.

Egy helyes reláció kulcs attribútuma funkcionálisan meghatározza a többi attribútumot.

Nézzük a dolgozó relációt.

Személyi szám Név Fizetés
18310012143 Kis Pista 200000
27804034356 Kalandos Zsuzsa 180000

A személyi szám egyértelműen meghatározza nevet és a fizetést.

Teljes függőség: Legyen P, Q részhalmaza A-nak és P --> Q. Azt mondjuk, hogy Q teljesen függ (funkcionálisan) P-től az R relációban, ha Q a P egyetlen valódi részhalmazától sem függ (funkcionálisan). Eellenkező esetben részleges függésről beszélünk.

Legyen adott a következő tábla:

Eladás(dátum, alkatrészkód, darab)


Az eladás dátuma és az alkatrészkód együttesen alkot kulcsot. A termékek eladott darabszáma pedig nem függ külön a dátumtól, vagy az alkatrészkódtól, hanem csakis a két attribútumtól mint összetett kulcstól egyszerre. Vagyis teljesen függ a kulcs két attribútumától.

Tranzitív függés: Legyen P, S részhalmaza A-nak és P --> S. Azt mondjuk, hogy S tranzitíven függ P-től, ha létezik olyan Q részhalmaza A-nak, hogy P --> Q, Q --> S, de úgy, hogy S --> Q, Q --> S nem teljesül.

Nézzük a következő relációt:

Nyilvántartás(név, személyi_szám, havi_bér, éves_bér)

A fennálló függőségek:

személyi_szám --> éves_bér

személyi_szám -->havi_bér

havi_bér --> éves_bér

A tranzitív függés: személyi_szám --> havi_bér --> éves_bér

Normalizálás

Nézzünk egy egyszerűsített könyvtári kölcsönzés relációt (táblát).

A reláció séma:

Könyvtár(könyv_azon, szerző, könyv_cím, olvasó_azon, név, lakcím, kölcsönzés_dátuma, visszahozás_dátuma)

Első normálforma

Egy R relációról azt mondjuk, hogy első normálformában van (1NF-ben), ha sorainak minden egyes cellájában pontosan egy attribútum érték áll.

Első normálformában van a relációs séma, ha minden mezője funkcionálisan függ a kulcsmező csoporttól. Ez a megkötés több feltételt is magában foglal. Egyrészt megkívánja, hogy legyen kulcs tulajdonságú attribútuma a relációnak. Másrészt, hogy minden mezője atomi értéket hordozzon.

Első normálformára hozás

A többértékűség (halmazérték) megszüntetése úgy történik, hogy minden sort annyiszor leírunk, ahányszor szükséges.

Másik megoldásnál két relációra bontjuk az eredeti relációt úgy, hogy az egyikben a reláció kulcsának értékei mellé írjuk az egyszeres attribútum értékeket, a másik relációban pedig a kulcshoz rendelt külső kulcs mellé annyi sort írunk, ahányszoros attribútum értékek szerepelnek a többszörös attribútumokban.

Második normálforma

Egy R relációról akkor mondjuk, hogy második normálformában (2NF-ben) van, ha 1NF-ben van és minden másodlagos attribútum teljesen függ a kulcstól, de nem függ a kulcs bármely valódi részhalmazától.

Második normálformára hozás.

A relációt több olyan relációra bontjuk, amely már 2NF-ben van. Meg kell szüntetni a kulcs részeitől való függést. Ezt úgy valósítjuk meg, hogy egy relációba fogjuk össze a kulcsnak azt a rész attribútumát (vagy attribútumait) amely a kulcs részeként is funkcionálisan meghatározza a másodlagos attribútumokat, és ezen másodlagos attribútumokat.

A második normálformával megszüntetendő anomáliák:

Módosítási anomália

Mivel a nem normalizált adatbázis redundánsan tartalmaz adatokat (nem szabályozott redundancia), így a módosítást több helyen is el kell végezni.

Törlési anomália

Az adatbázisunk lehet olyan, hogy ha benne sort törlünk, akkor a szükséges adatokat is elveszítjük.

Bővítési anomália

Bizonyos esetekben az adatbázis bővítése sem lehetséges.

Harmadik normálforma

Egy R reláció harmadik normálformában van (3NF), akkor és csak akkor, ha egyetlen másodlagos attribútum sem függ tranzitíven a kulcstól.

Egy R reláció harmadik normálformában van akkor és csak akkor, ha a másodlagos attribútumai között nincs funkcionális függőség.

Harmadik normálformára hozás

Kiemelésekkel és relációk létrehozásával megszüntetjük a másodlagos attribútumok közötti funkcionális függést.

Boyce-Codd normálforma (BCNF)

A harmadik normálforma helyett szokták alkalmazni, és nem engedi meg, hogy nem jelölt kulcsból funkcionális függőség induljon ki.

Boyce-Codd normálformában van a reláció, ha minden függőség csak jelölt kulcsból indul ki. Egy nem kulcsmezőből kulcsmezőbe nem indul függőség.

Irodalomjegyzék: