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(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}

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.