Egyedkapcsolat modell Adatbziskezels Egyedkapcsolat modell n n Grafikus
Egyed/kapcsolat modell Adatbázis-kezelés
Egyed-kapcsolat modell n n Grafikus ábrázolási mód, amellyel egy-egy adatbázis sémája megtervezhető. Az ábra aztán könnyen átalakítható relációs adatmodellé.
Egyedek I. n n Az egyedosztály szerepe nagyon hasonló az objektum-orientált nyelvekben használatos osztályok szerepéhez. Az egyedek az egyes objektumoknak felelnek meg. Példa a jelölésre: név színész kor
Egyedek II. n E(A 1, …, An) egyedosztály séma ahol: q q q n E az egyedosztály neve, A 1, …, An az attribútumok (tulajdonságok), dom(Ai) a lehetséges értékek halmaza, a legegyszerűbb esetben csak atomi értékek kerülhetnek szóba. E(A 1, …, An) egyedosztály séma egy előfordulása: E = {e 1, …, em} egyedek (entitások) halmaza, ahol: q q ei(k) dom(Ak), semelyik két egyed sem egyezik meg minden attribútumán.
Kapcsolatok I. n n A kapcsolatok tehát tulajdonképpen egyedosztályok előfordulásai közötti relációk. A kapcsolatokat rombusz jelöli. A kapcsolatokhoz is tartozhatnak attribútumok. gázsi Cím név színész kor szerepel év film hossz
Kapcsolatok II. n K(E 1, …, Ek, A 1, …, Am) egy kapcsolat sémája, ahol: q q q n n K a kapcsolat neve, E 1, …, Ek egyedosztályok sémái, A 1, …, Am a kapcsolathoz tartozó attribútumok. Ha k = 2, bináris kapcsolatról, p > 2 esetén többágú kapcsolatról beszélünk. K(E 1, …, Ek) sémájú kapcsolat egy előfordulása K = {(e 1, …, ek) | ei Ei }.
Kapcsolatok fajtái I. n n Sok-sok kapcsolat (N: N). Minden E 1 -beli egyedhez E 2 -beli egyedek egy halmazát rendelhetjük hozzá és fordítva. Példa: Cím név színész kor [1, n] szerepel év film hossz
Kapcsolatok fajtái II. n n Sok-egy kapcsolat (N: 1). Egy E 1 -beli egyedhez több E 2 -beli egyed tartozhat, egy E 2 -beli egyedhez azonban legfeljebb egy E 1 -beli. Példa: Cím [0, 1] név stúdió cím [1, n] gyárt év film hossz
Kapcsolatok fajtái III. n n Egy-egy kapcsolat (1: 1). Egy E 1 -beli elemhez legfeljebb egy E 2 -beli elem tartozhat és fordítva. Példa: név [0, 1] név stúdió cím [0, 1] vezet kor elnök fizetés
„Különlegességek” I. n Példa többágú kapcsolatra: színész [1, n] szerződés [1, n] stúdió film
„Különlegességek” II. n Általánosított egy-sok többágú kapcsolat. A K(E 1, …, Ek) sémájú kapcsolatnak nem szerepelhetnek egyszerre (e 1, e 2, …, ek), (e’ 1, e 2, …, ek) elemei úgy, hogy e 1 és e’ 1 különböznek egymástól. Példa: fizetés [0, 1] színész [1, n] szerződés [1, n] stúdió film
„Különlegességek” III. n Egy egyedhalmaz többször is szerepel egy kapcsolatban. Példa: eredeti részek száma film folytatás
Alegyedek I. n Egy alegyed ősének minden kapcsolatát, attribútumát örökli. Példa: hossz év film színész hang cím az egy rajzfilm az egy fegyver bűnügyi film
Alegyedek II. n n n Az az-egy (isa) kapcsolatokat öröklődési kapcsolatnak is nevezik. Az öröklődési struktúrának fát kell alkotnia egyetlen gyökérelemmel. Az e egyed komponensekből épül fel, a komponensek az öröklési struktúra egyedosztályainak elemei. Ha egy e egyednek van egy E egyedhalmazhoz tartozó c komponense és a fában az E szülője az F egyedhalmaz, akkor enek kell lennie egy olyan d komponensének, hogy d komponens az F egyedhalmazban. Továbbá a c-d párnak szerepelnie kell az E-t F-fel összekötő öröklési kapcsolatban. Az e egyed attribútumait a komponensek attribútumainak összessége alkotja, és e részt vesz mindazokban a kapcsolatokban, melyekben valamely komponense részt vesz.
Gyenge egyedhalmazok n n n Előfordulhat, hogy egy-egy egyedhalmazt csak más egyedhalmazok attribútumainak ismeretében azonosíthatunk egyértelműen. Ezeket gyenge egyedhalmazoknak nevezzük. A gyenge egyedhalmaz az „azonosító” egyedhalmazokhoz egysok kapcsolattal kapcsolódhat. Példa: név stúdió cím elnök tag csoport szám
Megszorítások (kulcsok) I. n n Az E(A 1, …, An) egyedosztály séma esetén az Ai 1, …, Aij attribútumhalmaz szuperkulcs, ha abból, hogy tetszőleges ek, es egyedek megegyeznek a fenti attribútumokon, következik, hogy a többi attribútumon is megegyeznek, vagyis a két egyed ugyanaz (k = s). A korábbi definíció értelmében az A 1, …, An attribútum halmaz minden esetben szuperkulcs. A fenti Ai 1, …, Aij attribútum halmaz kulcs, ha bárhogy hagyunk is el egy attribútumot, a maradék attribútum halmaz már nem lesz szuperkulcs. Más szóval: a minimális szuperkulcsok, kulcsok.
Megszorítások (kulcsok) II. n n n Egy-egy egyedosztály sémához nem csupán egy kulcs tartozhat. Ezek közül általában ki kell választanunk egyet, ez lesz az elsődleges kulcs. A többi kulcsot megjegyzésként szerepeltethetjük az ábra mellett. A különböző adatbázisrendszerekben az elsődleges kulcs megválasztása kihatással lehet a reláció tárolására, a tábla a kulcs attribútumai szerint rendezetten tárolódhat.
Gyenge egyedhalmazok kulcsa I. n Egy F gyenge egyedhalmaz kulcsa azokból az egyedhalmazokból származhat, amelyekhez kapcsolódik. Legyen egy ilyen E. Ekkor: q q E kulcsának attribútumai benne vannak F kulcsában is. Ha E maga is gyenge egyedhalmaz, akkor ezek az attribútumok legalább egy harmadik egyedhalmazból is származnak. Ha több sok-egy kapcsolat szerepel E és F között, akkor mindegyik kapcsolat segíthet F kulcsának kialakításában.
Gyenge egyedhalmazok kulcsa II. név apa törzs tag ősök maiak nagyapa név Itt az ősök egyedosztály kulcsa a törzsnév és a név. A maiak egyedosztályé pedig a nagyapa törzsnév, nagyapa név, apa törzsnév, apa név.
Megszorítások (kulcsok) III. n Az elsődleges kulcsokat aláhúzással jelölik. Példa: Cím név színész kor [1, n] szerepel év film hossz
Egyéb megszorítások I. n n n Attribútumok értéke lehet ismeretlen (NULL) vagy ismert. Hivatkozási épség megszorítás. Megkövetelik, hogy a hivatkozott érték szerepeljen az adatbázisban, vagyis nem fordulhat elő például, hogy egy stúdiónak ne legyen elnöke. Egyéb megszorítások. Például: egy-egy filmben legalább három színésznek kell szerepelnie. Az utóbbi két megszorítás a [1, n] segítségével megadható. Alternatív jelölésforma szerepel az Adatbázisrendszerek alapvetés című könyvben.
Egyéb megszorítások II. n Példa hivatkozási épség megszorításra: név [0, 1] név stúdió cím [1, 1] vezet kor elnök fizetés
Tervezési alapelvek I. n n A modell minél pontosabban tükrözze a valóságot. Attribútum vs. új egyedosztály? Általában: ha az ábrázolni kívánt „valóságdarab” több, számunkra fontos tulajdonsággal rendelkezik, akkor érdemes egy új egyedosztályt készíteni, különben elegendő felvenni egy új attribútumot. Példa: Film egyedosztálynál a színésznév új attribútumként szerepeljen vagy inkább hozzunk létre egy új egyedosztályt. A kettőt egyszerre semmi esetre se tegyük.
Tervezési alapelvek II. l l n Film (cím, év, hossz, stúdió, színész) relációséma esetén, ha egy filmben több színész is szerepel, akkor a többi attribútum értéke feleslegesen ismétlődik (redundancia). Ez az adatok módosításánál is problémát jelenthet a fölöslegesen elhasznált memória mellett (módosítási anomália). További problémát jelenthet, hogy esetenként egy másik táblában egy színész törlése azokat a sorokat is törli a Film relációban, ahol ez a színész szerepel. Ha ez az egyetlen sora egy filmnek, az összes információ elvész (törlési anomália). A működő adatbázisoknál felmerülő problémák megközelítőleg 70%a tervezésbeli hiányosságokra vezethető vissza.
Feladatok I. n Orvosi adatbázist készítünk. Minden embernél számontartjuk a nevét, korát, TAJ számát. Ezen utóbbi alapján egyértelműen azonosítani lehet bárkit. Az orvosoknál tároljuk ezeken kívül még a tudományos fokozatukat és a szakterületüket, a körzeti orvosoknál még annak a városnak a nevét is, ahol rendelnek, a pácienseknél pedig a foglalkozásukat. A betegségeknél számontartjuk a nevüket és azt, hogy átlagosan mennyi ideig tart a gyógyulási folyamat. Minden betegséget valamilyen bacilustörzs okoz. Ezek a nevük alapján egyértelműek, emellett tároljuk az elterjedtségük arányát. A törzsekhez bacilusok tartoznak, ám a név alapján még nem tudhatjuk pontosan melyik bacilusról van szó, mert több törzshöz is tartozhat ugyanolyan nevű bacilus. A különféle betegségekben szenvedő pácienseknek lehet, hogy egyszerre több orvos írja majd fel a különféle árú gyógyszereket. A gyógyszereknél tároljuk a nevüket, és hogy mely bacilusok esetében hatásosak. Minden páciensnek tartoznia kell egy körzeti orvoshoz, s valaki csak úgy lehet körzeti orvos, ha legalább húsz páciense van.
név kor TAJ ember foglalkozás a. e. orvos szakt. tud. fok. a. e. [1, n] páciens betegség [1, 1] a. e. tartozik lefutás okoz felír bac. törzs körzeti o. [20, n] város név elterjedt tag [1, n] gyógyszer név bacilus név ár hat
E-K modell átírása adatbázissémává n n n Egy egyedhalmaznak egy reláció felel meg, melynek neve megegyezik az egyedhalmaz nevével, attribútumai az egyedhalmaz attribútumai. Egy kapcsolatnak szintén egy relációt feleltetünk meg, melynek neve a kapcsolat neve, attribútumai pedig a kapcsolatban részt vevő egyedhalmazok kulcsai. Amennyiben két attribútum neve megegyezne, egyiket értelemszerűen át kell neveznünk. Gyenge egyedhalmazok esetében a kapott relációhoz hozzá kell még venni azokat az attribútumokat, amelyek egyértelműen azonosítják az egyedhalmazt.
Alegyed osztályok átírása relációkká (is-a) n n E/K megközelítés: az alegyed esetében a megfelelő relációban a saját attribútumokhoz hozzávesszük az ősegyed kulcsát. Objektum-orientált megközelítés: q q n n n felsoroljuk a hierarchia összes lehetséges részfáját, s ezek mindegyikére létrehozunk egy-egy relációt, amely azon egyedeket reprezentálja, amelyeknek pontosan az adott részfában vannak komponensei. A reláció sémája az összes, a részfában szereplő egyed komponenseit tartalmazza. Erre objektumorientált megközelítésként hivatkozunk, mivel az a feltevés motiválta, hogy az egyedek egy és csak egy osztályhoz tartozó „objektumok” legyenek. NULL értékek használata: ha megengedjük a relációkban a NULL érték használatát, akkor az egyedhalmazok teljes hierarchiáját egyetlen egyszerű reláció segítségével ábrázolhatjuk. Ez a reláció minden attribútumot tartalmaz. Egy egyedet pedig egy sorral ábrázolunk. Ennek a sornak azon értékei, amelyek nem definiáltak az adott egyedre, NULL értéket vesznek fel.
A szabályok alapján kapott adatbázis - séma n n n Ember (név, kor, TAJ) Orvos (TAJ, szakt. , tud. fok) Körzeti orvos (TAJ, szakt. , tud_fok , város) Páciens (TAJ, foglalkozás) Gyógyszer (név, ár) Betegség (név, lefutás) Bacilus törzs (név, elterjedtség) Bacilus (név, törzs_név) Felír (orvos_TAJ, páciens_TAJ, gy_név, betegség_név) Tartozik (orvos_TAJ, páciens_TAJ) Hatásos (gy_név, bac_név, törzs_név) Okoz (bet_név, törzs_név)
Megjegyzések I. n n n Sok-egy kapcsolat esetén az „egy ághoz” tartozó elsődleges kulcs a kapcsolatból kapott relációnak is kulcsa lesz. Egy-egy kapcsolat esetén ez mindkét relációra elmondható. A kapott adatbázis-séma egyszerűsíthető: q E 1(A 1, …, An, B 1, …, Bk), E 2(B 1, …, Bk, C 1, …, Cs) egyedosztályok, ahol B 1, …, Bk az E 2 egyedosztály (szuper)kulcsa, E 3(A 1, …, An, B 1, …, Bk, C 1, …, Cs) egyedosztály készíthető. Itt B 1, …, Bk az E 1 egyedosztály idegen (szuper)kulcsa. Példa: Páciens (TAJ, foglalkozás), Tartozik (orvos_TAJ, páciens_TAJ) ebből: Páciens (TAJ, foglalkozás, orvos_TAJ). Sok-sok kapcsolat esetén is érdemes elgondolkodni a az összevonáson
Megjegyzések II. n Sok-sok kapcsolat esetén is érdemes elgondolkodni az összevonáson. Pl. , ha a Hatásos (gy_név, bac_név, törzs_név) kapcsolatban minden gyógyszer legfeljebb két bacilus ellen hatásos, akkor az előbbi Hatásos reláció és a Gyógyszer (név, ár) táblák összevonhatók a Gyógyszer (név, ár, bac_név, törzs_név) táblává, hiszen ez még nem okoz „túlzottan nagy” redundanciát.
Egyszerűsítés n n n n Ember (név, kor, TAJ) Körzeti orvos (TAJ, szakt. , tud. fok , város) Páciens (TAJ, foglalkozás, orvos_TAJ) Gyógyszer (ár, név) Betegség (név, lefutás, törzs_név) Bacilus törzs (név, elterjedtség) Bacilus (név, törzs_név, gy_név) (esetleg) Felír (orvos_TAJ, páciens_TAJ, gy_név, betegség_név)
Feladatok I. n A középkor nagy kalóztámadásairól szeretnénk adatbázist készíteni. A csatákban kalóz- és szállítóhajók illetve katonai hajók vettek részt. Minden hajónál számontartjuk annak nevét, típusát és súlyát. A katonai hajóknál feljegyezzük még ezen kívül az ágyúk számát, a szállítóhajóknál pedig megadjuk a rakományuk jellemzőit, azaz a rakomány értékét, mennyiségét, származási helyét és azonosítóját. Egy szállítóhajónak mindig van rakománya. Egy-egy csatában legalább 5 hajó vett részt. Egy katonai hajó legalább háromszor, egy kalózhajó legalább kétszer csatázott. Minden csatánál számontartjuk még a nevét, dátumát, helyszínét, a győztes ország nevét és az elsüllyedt hajók neveit. Minden hajóhoz legalább tíz fős legénység tartozott: legalább kilenc matróz és pontosan egy kapitány. A legénység minden tagjánál számontartjuk a nevét és a szolgálati idejét, a kapitányoknál ezenfelül még a fizetésüket is, a matrózoknál pedig a beosztásukat.
Feladatok II. fogl. Anya id id id Gyermek Születés Orvos kórház Nővér id 1. Milyen számosságokat kell a kapcsolatokhoz írnunk, hogy a következőket fejezzük ki? (a) Minden gyermeknek pontosan egy anyja van. (b) Egy gyerek, nővér, orvos hármashoz pontosan egy anya tartozik. (c) Egy adott gyermek és anya kombinációhoz pontosan egy orvos tartozik. 2. A (b) esethez adjuk meg a hozzátartozó adatbázissémát.
Feladatok III. Születések Gyerek Anya Orvos Nővér 3. (a) Írjuk be a számosságokat úgy, hogy minden gyermekhez pontosan egy születés tartozzon, és minden születéshez pontosan egy gyermek. (b) Minden születéshez pontosan egy anya és orvos tartozzon. (c) Adjuk meg az ábrához tartozó relációs adatbázissémát.
Feladat IV. név apa törzs tag ősök maiak nagyapa név 4. Adjuk meg az ábrához tartozó relációs adatbázissémát.
- Slides: 36