Skip navigation

Projektmunka

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ö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önyvszám, szerző}
  • 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}

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, nincs benne másodlagos attribútum, minden attribútum eleme valamely kulcsnak.
    • 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} és a {könyvszám, szerző} halmazok szuperkulcsok.
    • 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.