Skip navigation

Projektmunka

Könyvtári adatbázis

Feladatleírás:

Az előző fejezetekben leképeztük az könyvtári adatbázis egyed-kapcsolat diagramját relációs adatbázissémákká!

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)


Határozzuk meg ezekben a relációs adatbázissémákban a funkcionális függőségeket!

Funkcionális függések meghatározása:

A funkcionális függőségek meghatározásánál nem támaszkodhatunk még az adatbázisban tárolt adatokra, csupán saját logikus gondolkodásunk alapján tudjuk vizsgálni azokat.

Vizsgáljuk meg a relációs adatbázissémákon belül az attribútumok közötti kapcsolatokat! Minden relációs adatbázissémának attribútumhalmazán belül meg kell vizsgálni a részhalmazok közötti függőségeket!

  • OLVASÓ(olvasójegy, név, lakcím, születési dátum):
    • {olvasójegy}: egy adott olvasójegy mellett mindig ugyanaz a név, lakcím és születési dátum fog szerepelni. Tehát az olvasójegytől függ a név, a lakcím, születési dátum.
    • {név}: egy adott név mellett szerepelhetnek más olvasójegyek, lakcímek, és születési dátumok, gondoljunk csak a gyakori nevekre. Emiatt nem állíthatjuk, hogy a névtől bármely másik attribútum függne a sémában.
    • {lakcím}: egy adott lakcím sem garantálja, hogy a többi attribútum valamelyikén is mindig megegyezik az ott lévő érték. Így a lakcímtől sem függ másik attribútum.
    • {születési dátum}: könnyen látható, hogy egy adott születési dátum nem garantálja, hogy mellette bármely mező értéke mindig ugyanaz. Emiatt a születési dátumtól nem függ egyik attribútum sem.
    • {olvasójegy, ...}: Az olvasójegyhez bármely attribútumot hozzávéve a maradék attribútumhalmaz függeni fog ettől a halmaztól, mivel az olvasójegytől is függnek.
    • {név, lakcím}: ettől az attribűtumhalmaztől nem függ más attribútum, mert például apja és fia, ha ugyanott laknak, akkor a születési dátumukban és az olvasójegyben is különböznek.
    • {név, születési dátum}: ritkán, de előfordulhat ugyan, hogy két ember neve és születési dátuma is megegyezik, viszont lakcímükben különbözhetnek. Emiatt ettől az attribútumhalmaztól sem függ másik attribútumhalmaz.
    • {születési dátum, lakcím}: ettől az attribútumhalmaztól nem függ más attribútumhalmaz, mert ha például ikrek esetében is a nevek különböznek.
    • {név, születési dátum, lakcím}: amennyiben a lakcím nem terjed ki ajtószámig, csupán a házszámig, úgy előfordulhat, hogy ugyanolyan nevű és születési dátumú személyek egy cím alatt laknak, bár ez meglehetősen ritka véletlen, de az adatmodellezés szempontjából feltételeznünk kell ezt a lehetőséget is.
  • KÖNYV (könyvszám, cím, kiadó, kiadási év):
    • {könyvszám}: mivel a könyvszám minden könyvpéldány esetében egyedi, így a cím, a kiadó és a kiadási év függ tőle.
    • {cím}: több könyvpéldány jelenhet meg ugyanolyan címmel. Sem a könyvszám, sem a kiadó, sem pedig a kiadási év nem függ tőle.
    • {kiadó}: több könyvpéldányt kiad egy kiadó, ezért a kiadótól sem függ semelyik másik attribútum.
    • {kiadási év}: egy évben több könyvpéldányt kiadnak, ezért ettől sem függ semelyik másik attribútum.
    • {könyvszám, ...}: ha bármely másik attribútumot hozzáveszünk a könyvszámhoz, akkor ettől a halmaztől függeni fog a fennmaradó attribútumhalmaz minden részhalmaza. 
    • {cím, kiadó}: ugyanaz a kiadó több évben is kiadhat egy könyvet, emiatt a kiadási év nem függ a címtől és a kiadótól. A könyvszám pedig minden könyvpéldány esetében egyedi, emiatt független a címtől és a kiadótól.
    • {kiadó, kiadási év}: egy kiadó egy adott évben több könyvet is kiadhat, így sem a cím sem a könyvszám nem függ ettől az attribútumhalmaztól.
    • {cím, kiadási év}: ettől az attribútumhalmaztól nem függ könyvszám, mert egy adott című könyvből több példány is lehet. A kiadó elvileg függhetne tőle, de ha belegondolunk, a tankönyvek esetében, vagy a tudományos könyvek esetében egy adott évben akár megjelenhet ugyanolyan címmel egy-egy könyv, amelyet más kiadó ad ki. Emiatt ne feltételezzük ezt a függést!
    • {cím, kiadó, kiadási év}: csak a könyvszámot kell vizsgálnunk, mert nincs más kimaradt attribútum, a könyvszám viszont egyedi minden könyvpéldány esetében.
  • SZERZŐK(könyvszám, szerzőnév, sorszám):
    • {könyvszám}: egy adott könyvnek lehet több szerzője, így a könyvszámtól nem függ a szerzőnév. A sorszám sem függ a könyvszámtól, mert minden könyvnek van legalább egy szerzője, így az 1-es sorszám minden könyvszám mellett szerepel.
    • {szerzőnév}: a sorszám nem függ a szerzőnévtől, mert ugyanaz a szerző különböző könyvek esetében más sorszámmal szerepelhet a szerzőlistában. A könyvszám sem függ a szerzőnévtől, hiszen egy kiadás esetében minden példányon ugyanott van a szerző, de a könyvszám különbözik.
    • {könyvszám, szerzőnév}: ettől a halmaztól függ a sorszám.
    • {könyvszám, sorszám}: ettől a halmaztól függ a szerzőnév.
    • {szerzőnév, sorszám}: a könyvszám nem függ ettől a halmaztól, mert különböző könyvpéldányok esetében a könyvszám különböző.
  • KÖLCSÖNZÉSEK(könyszám, olvasójegy, kölcsönzés időpontja, visszahozta):
    • {könyvszám}: mivel minden kölcsönzést nyilvántartunk, egy adott könyvszám többször fog szerepelni a táblában. Emiatt mellette különböző olvasójegy, kölcsönzési időpont és visszahozási időpont értékek.
    • {olvasójegy}: mivel minden olvasó több könyvet kölcsönözhet, ezért egy olvasójegy mellett megjelenhetnek különböző értékek a könyvszám, kölcsönzés időpontja és visszahozta mezőkben. Emiatt az olvasójegytől nem függ semelyik másik attribútum.
    • {kölcsönzés időpontja}: egyidejűleg bárki több könyvet kivehet és nem kötelező azokat egyidőben visszahozni, így a kölcsönzés időpontjától nem függ semelyik másik attribútum sem.
    • {visszahozta}: a visszahozás időpontjától sem függ semelyik másik attribútum, mert egy olvasó több könyvet hozhat vissza egyidejűleg, más olvasók is ugyanabban az időpontban visszahozhatnak könyveket, valamint különböző könyvek esetében más lehet a kölcsönzés dátuma.
    • {könyvszám, olvasójegy}: sem a kölcsönzés időpontja, sem pedig a visszahozás időpontja nem függ ettől a halmaztól, mert egy személy többször is kölcsönözheti az adott könyvet.
    • {könyvszám, kölcsönzés időpontja}: az olvasójegy értéke függ ettől a halmaztól, mert egy adott könyvet egy adott időpontban csak egyvalaki kölcsönözhet. Hasonlóképpen a visszahozás időpontja is függ ettől a halmaztól.
    • {könyvszám, visszahozta}: az olvasójegy értéke függ ettől a halmaztól, mert csak egyvalaki hozhatja vissza az adott könyvpéldányt egy adott időpontban. A kölcsönzés időpontja is függ ettől a halmaztól, mert ez a két adat meghatározza, hogy mikor történt a kölcsönzés.
    • {kölcsönzés időpontja, visszahozta}: az olvasójegy nem függ ettől a halmaztól, mert elvileg lehetséges, hogy különböző személyek kölcsönzéseit ugyanakkor rögzítsék (pl. barátok, barátnők együtt mennek a könyvtárba és különböző sorokban állva egyszerre kerülnek sorra). A könyvszám nem függ ettől a halmaztól, mert egyidejűleg több könyvet lehet kölcsönözni, amiket ugyanakkor viszünk vissza.
    • {olvasójegy, kölcsönzés időpontja}: a könyvszám nem függ ettől a halmaztól, mert egyidejűleg több könyvet is lehet kölcsönözni. A visszahozás időpontja sem függ ettől a halmaztól, mert az olvasó a kölcsönzött könyveit különböző időpontokban is visszahozhatja.
    • {olvasójegy, visszahozta}: a könyvszám nem függ ettől a halmaztól, mert egyidejűleg több könyvet is vissza lehet hozni. A kölcsönzés időpontja sem függ ettől a halmaztól, mert különböző időpontban kölcsönzött  könyveket is vissza lehet hozni egyidejűleg.
    • {könyvszám, kölcsönzés időpontja, ...}: bármi mást fűzünk emellé a két attribútum mellé, a maradék attribútumhalmaz minden részhalmaza függeni fog a halmaztól.
    • {könyvszám, visszahozta, ...}: bármi mást fűzünk emellé a két attribútum mellé, a maradék attribútumhalmaz minden részhalmaza függeni fog a halmaztól.
    • {olvasójegy, kölcsönzés időpontja, visszahozta}: a könyvszám nem függ ettől a halmaztól, mert egyidejűleg több könyvet is ki lehet kölcsönözni, amelyeket ugyanakkor viszünk vissza.

Kulcsok meghatározása:

Minden relációs adatbázisséma esetén meg kell határozni azt a legszűkebb attribútumhalmazt, amelynek lezártja visszaadja a séma attribútumhalmazát.