Könyvtári adatbázis
Feladatleírás:
Az előző leckékben elkezdtük megtervezni a könyvtári adatbázist és eljutottunk oda, hogy megállapítottuk a relációs adatbázissémákon belüli funkcionális függéseket és meghatároztuk azok kulcsait is.
Relációs adatbázissémák:
OLVASÓ(olvasójegy, név, lakcím, születési dátum)
KÖNYV(könyvszám, cím, kiadó, kiadás éve)
SZERZŐK(könyvszám, szerzőnév, sorszám)
KÖLCSÖNZÉSEK(könyvszám, olvasószám, kölcsönzés időpontja, visszahozta)
Funkcionális függőségek:
{olvasójegy} →{név, lakcím, születési dátum}
{olvasójegy, születési dátum} →{név, lakcím}
{olvasójegy, név} →{lakcím, születési dátum}
{olvasójegy, lakcím} →{név, születési dátum}
{olvasójegy, lakcím, születési dátum} →{név}
{olvasójegy, lakcím, név} →{születési dátum}
{könyvszám} → {cím, kiadó, kiadási év}
{könyvszám, cím} → {kiadó, kiadási év}
{könyvszám, kiadó} → {cím, kiadási év}
{könyvszám, kiadási év} → {cím, kiadó}
{könyvszám, cím, kiadó} → {kiadási év}
{könyvszám, cím, kiadási év} → {kiadó}
{könyvszám, szerzőnév} → {sorszám}
{könyvszám, sorszám} → {szerzőnév}
{könyvszám, kölcsönzés időpontja} → {olvasójegy, visszahozta}
{könyvszám, visszahozta} → {olvasójegy, kölcsönzés időpontja}
{könyvszám, kölcsönzés időpontja, olvasójegy} → {visszahozta}
{könyvszám, kölcsönzés időpontja, visszahozta} → {olvasójegy}
{könyvszám, visszahozta, olvasójegy} → {kölcsönzés időpontja}
{könyvszám, visszahozta, kölcsönzés időpontja} → {olvasójegy}
Kulcsok:
- OLVASÓ(olvasójegy, név, lakcím, születési dátum)
- Kulcs: olvasójegy
- KÖNYV(könyvszám, cím, kiadó, kiadási év)
- Kulcs: könyvszám
- SZERZŐK(könyvszám, szerzőnév, sorszám)
- Kulcs: {könyvszám, sorszám}
- KÖLCSÖNZÉSEK(könyvszám, olvasójegy, kölcsönzés időpontja, visszahozta)
- Kulcsok: {könyvszám, kölcsönzés időpontja}, {könyvszám, visszahozta}
- Kulcsok: {könyvszám, kölcsönzés időpontja}, {könyvszám, visszahozta}
Normalizálás:
Hozzuk a relációs adatbázissémákat 1NF, 2NF, 3NF és BCNF normálformákra! A normalizálás során a függőségek mentén kell felbontanunk a sémákat.
- 1NF: (Állítás: Egy relációs adatbázisséma 1NF-ben van, ha a sémán belül minden attribútum atomi.)
- Az OLVASÓ séma 1NF-ben van, mert minden attribútuma atomi.
- A KÖNYV séma 1NF-ben van, mert minden attribútuma atomi.
- A SZERZŐK séma 1NF-ben van, mert minden attribútuma atomi.
- A KÖLCSÖNZÉSEK séma 1NF-ben van, mert minden attribútuma atomi.
- 2NF: (Állítás: Egy relációs adatbázisséma 2NF-ben van, ha a sémán belül minden másodlagos attribútum teljesen függ bármely kulcstól.)
- Az OLVASÓ séma 2NF-ben van, mert egyetlen kulcsa az olvasójegy, és ez ettől minden másodlagos attribútum függ.
- A KÖNYV séma 2NF-ben van, mert egyetlen kulcsa az könyvszám, és ez ettől minden másodlagos attribútum függ.
- A SZERZŐK séma 2NF-ben van, mert a szerzőnév attribútum a {könyvszám, sorszám} halmaztól függ.
- A KÖLCSÖNZÉSEK séma 2NF-ben van, mert egyetlen másodlagos attribútuma az olvasójegy teljesen függ mind a {könyvszám, kölcsönzés időpontja}, mind pedig a {könyvszám, visszahozta} halmazoktól.
- 3NF: (Állítás: Egy relációs adatbázisséma 3NF-ben van, ha a sémán belül nincs tranzitív függés az attribútumok között.)
- Az OLVASÓ séma 3NF-ben van, mert nincs benne tranzitív függés.
- A KÖNYV séma 3NF-ben van, mert nincs benne tranzitív függés.
- A SZERZŐK séma 3NF-ben van, mert nincs benne tranzitív függés.
- A KÖLCSÖNZÉSEK séma 3NF-ben van, mert nincs benne tranzitív függés.
- BCNF: (Állítás: Egy relációséma BCNF-ben van, ha bármely nemtriviális L→B függés esetén L szuperkulcs.)
- Az OLVASÓ séma BCNF-ben van, mert az olvasójegy szuperkulcs.
- A KÖNYV séma BCNF-ben van, mert a könyvszám szuperkulcs.
- A SZERZŐK séma BCNF-ben van, mert a {könyvszám, sorszám} szuperkulcs.
- A KÖLCSÖNZÉSEK séma BCNF-ben van, mert a {könyvszám, kölcsönzés időpontja} és a {könyvszám, visszahozta} halmazok is szuperkulcsok.