Adatbázisok 3. gyakorlat Adatmodellezés: E-K modell 2014. szeptember 17. 2014. szeptember 17. Adatbázisok 1 / 11
Adatmodellezés Az adatbázis-alapú rendszerek tervezésének alapvet része Az adatmodellezés legtöbbször két fázisú: Egyed-kapcsolat diagram Relációs adatmodell 2014. szeptember 17. Adatbázisok 2 / 11
E-K modell A valós világ jelenségeit egyedekkel, tulajdonságokkal és kapcsolatokkal leíró modell Adatok típusai: Egyszer (atomi) adat: szám, string, dátum, logikai érték Összetett adat: struktúra, halmaz, lista vagy ezek kombinációi NULL (NEM ekvivalens a null értékkel) E-K diagram részei: Egyed - létez dolog, amelyet tulajdonságokkal írunk le 2014. szeptember 17. Adatbázisok 3 / 11
E-K diagram további elemei Kapcsolat - két egyed közötti viszony Attribútum - valamilyen típusú adat, amely jellemz az egyedre Kulcs - az attribútumok azon legsz kebb részhalmaza, amelyek egyértelm en azonosítják az egyedet 2014. szeptember 17. Adatbázisok 4 / 11
E-K diagram további elemei Összetett attribútum - maga is több attribútumból áll Többérték attribútum lehet, pl. szerz k - aktuális értéke halmaz vagy lista 2014. szeptember 17. Adatbázisok 5 / 11
Kapcsolatok típusai Bináris kapcsolatok 1:1 - minden egyedhez legfeljebb egy másik egyed tartozhat 1:N - minden egyedhez több egyed tartozhat N:M - több egyedhez több másik fajta egyed tartozhat 2014. szeptember 17. Adatbázisok 6 / 11
Kapcsolatok típusai Sokágú kapcsolat - kett nél több egyed között (helyettesíthet több kétágú kapcsolattal is, de így sokkal kifejez bb) 2014. szeptember 17. Adatbázisok 7 / 11
Önmagával kapcsolatban álló egyed El fordulhat, hogy egy egyed önmagával áll kapcsolatban (pl. munkahelyi hierarchia modellezése) Ez a modell nem zárja ki a körkörös hivatkozásokat A kapcsolat típusa lehet 1:1, 1:N és N:M is 2014. szeptember 17. Adatbázisok 8 / 11
Gyenge egyed Az attribútumai nem határozzák meg egyértelm en (A kapcsolataival együtt viszont már egyértelm en meghatározott lesz) A meghatározó kapcsolat az, ami azonosítja (példa) 2014. szeptember 17. Adatbázisok 9 / 11
Specializáló kapcsolatok Ha valamilyen általános egyed altípusait szeretnénk modellezni Alakzat - kör, négyzet, háromszög Járm - vízi, légi, szárazföldi Helyiség - tanterem, gépterem, iroda Az altípusok öröklik a f típus attribútumait, de lehetnek saját attribútumaik is 2014. szeptember 17. Adatbázisok 10 / 11
Feladat - Nemzetközi táncverseny Olyan relációs adatbázist szeretnénk létrehozni, amely egy nemzetközi táncversenyen résztvev csoportok adatait tartalmazza. Tároljuk a csoport nevét, nemzetiségét, a csoport átlagéletkorát és a verseny folyamán elért pontszámot. E mellett tároljuk a bemutatott tánc nevét, valamint a zenére vonatkozó adatokat, azaz a zene m - faját, a szám címét és el adóját. Feltételezzük, hogy: 1 egyféle táncot több csoport is táncolhat, 2 egy csoport több táncot is el adhat, 3 a versenyen nincs kikötés a táncra vonatkozóan, így bármilyen táncot be lehet mutatni, 4 a zenét egyértelm en azonosítja a címe, azaz nincs két azonos cím szám, 5 egy csoportban csak azonos nemzetiség ek táncolnak A tánc m faja, valamint a csoportok nemzetisége csak meghatározott értékeket vehet fel 2014. szeptember 17. Adatbázisok 11 / 11
Adatbázisok 4. gyakorlat Adatmodellezés: E-K modellb l relációs adatbázisséma. Kötelez programok kiválasztása 2014. szeptember 24. 2014. szeptember 24. Adatbázisok 1 / 20
Az adatbázisok szolgáltatásai Több felhasználó párhuzamosan olvashatja, b vítheti, módosíthatja és törölheti az adatokat Az adatok konzisztenciájának és biztonságának biztosítása Eszközök az adatok biztonsági mentésére, vissza- és helyreállítására Nagy mennyiség adat hatékony kezelése Nagyszámú felhasználó kiszolgálása 2014. szeptember 24. Adatbázisok 2 / 20
A relációs adatmodell Az egyedeket, tulajdonságokat és kapcsolatokat egyaránt táblázatok, ún. adattáblák segítségével adja meg Az adattábla sorokból és oszlopokból áll. Egy sorát rekordnak nevezzük, amely annyi mez b l áll, ahány oszlopa van a táblának 2014. szeptember 24. Adatbázisok 3 / 20
A relációs adatbázisséma Minden adattáblához tartozik egy relációséma, amely annak szerkezetét írja le R(A 1,..., A n ), ahol R relációséma, és A 1,..., A n attribútumok Az attribútumok egy részhalmaza lehet kulcs, ezeket aláhúzással jelöljük Az el z példa sémája: Vev (Vev kód, Vev név, Vev cím) 2014. szeptember 24. Adatbázisok 4 / 20
Kulcsok Egy relációséma attribútumainak egy olyan, minimális elemszámú részhalmaza, amely az adott séma feletti tetsz leges tábla bármely két sorában különbözik A kulcs egyértelm en azonosítja a tábla egy sorát Egy táblához több kulcs is tartozhat! (Ezek közül egyet kiválasztunk, és ez lesz az els dleges kulcs.) Ami nem kulcs, az másodlagos attribútum 2014. szeptember 24. Adatbázisok 5 / 20
Kulcsok A kulcs egyértelm en azonosítja az egyedet Küls kulcs: az attribútumok azon részhalmaza, amely egy másik adatbázisséma els dleges kulcsára való hivatkozás Jelölése d lt bet vel (írásban szaggatott vonal) Az EK-modellben megismert kapcsolatok a relációs modellben küls kulcsok formájában jelennek meg Összes egyedet és kapcsolatot átírtuk relációsémákra, és meghatároztuk a kulcsokat és küls kulcsokat relációs adatbázisséma 2014. szeptember 24. Adatbázisok 6 / 20
E-K diagramból relációséma - egyedek leképezése Minden egyednek létrehozunk egy relációsémát Kulcs: az egyed kulcsattribútuma Könyv(Könyvszám, Szerz, Cím) Olvasó(Olvasószám, Név, Lakcím) 2014. szeptember 24. Adatbázisok 7 / 20
E-K diagramból relációséma - gyenge egyedek leképezése A gyenge entitás relációsémáját b víteni kell a meghatározó kapcsolat(ok)ban szerepl egyed(ek) kulcsával Tulajdonos(Személyiszám, Név, Lakcím) Számítógép(Processzor, Memória, Merevlemez, Személyiszám) 2014. szeptember 24. Adatbázisok 8 / 20
E-K diagramból relációséma - összetett attribútumok leképezése Szétbontjuk (az elemeivel helyettesítjük) Tfh. Lakcím attribútum (Helység, Utca, Házszám) struktúra Ekkor: Olvasó(Olvasószám, Név, Lakcím) helyett Olvasó(Olvasószám, Név, Helység, Utca, Házszám) 2014. szeptember 24. Adatbázisok 9 / 20
E-K diagramból relációséma - többérték attribútumok leképezése Pl. ha egy könyvnek több szerz je van 1 Megadás egyérték attribútumként (az értéknél vessz kkel felsoroljuk a szerz ket) Hátrány, hogy a szerz ket nem tudjuk külön-külön kezelni, valamint sok szerz nem fér el a megadott mez ben 2 Sorok többszörözése (annyi sort veszünk fel egy könyvhöz, ahány szerz je van) 3 Új tábla felvétele Könyv(Könyvszám, Szerz, Cím) helyett Könyv(Könyvszám, cím) Szerz (Könyvszám, Név) 2014. szeptember 24. Adatbázisok 10 / 20
E-K diagramból relációséma - kapcsolatok leképezése Új séma felvétele Neve a kapcsolat neve Attribútumai a a kapcsolódó entitások kulcs attribútumai, valamint a kapcsolat saját attribútumai Ha ezen séma kulcsa megegyezik valamely egyed kulcsával, akkor a kapcsolat és az egyed sémája összevonható 2014. szeptember 24. Adatbázisok 11 / 20
E-K diagramból relációséma - bináris kapcsolatok Bináris kapcsolatok leképezése: 1:1 kapcsolat esetén kiválasztjuk a kapcsolatban részt vev két entitást egyikét (bármelyiket) a kiválasztott entitás sémájába új attribútumként felvesszük a másik entitás kulcs attribútumait, valamint a kapcsolat attribútumait 1:N kapcsolat esetén Az "N" oldali entitás sémájába új attribútumként felvesszük a másik entitás kulcs attribútumait, valamint a a kapcsolat attribútumait N:M kapcsolat esetén új sémát veszünk fel, amelynek attribútumai a kapcsolódó entitások kulcs attribútumai, valamint a kapcsolat saját attribútumai 2014. szeptember 24. Adatbázisok 12 / 20
1. feladat E-K diagram vásárlásokról 2014. szeptember 24. Adatbázisok 13 / 20
Megoldás Vev (Vev kód, Név, Cím) Számla(Számlaszám, Dátum, Vev kód) 2014. szeptember 24. Adatbázisok 14 / 20
2. feladat El fordulhat, hogy egy egyed ugyanabban a kapcsolatban többször vesz részt Példa: egy számítástechnikai kereskedés árul számítógép kongurációkat, de árul külön alkatrészeket is, melyek azonban kon- gurációknak is lehetnek elemei 2014. szeptember 24. Adatbázisok 15 / 20
Megoldás Árucikk(Cikkszám, Cikknév, Tartalmazó_árucikk) 2014. szeptember 24. Adatbázisok 16 / 20
3. feladat Gyenge egyed leképezése A csoportnév nem kulcs (sok cégnél lehet ugyanolyan nev csoport), de ha a kapcsolaton belül a céget is bevesszük az azonosításba, akkor egyértelm lesz, hogy melyik csoportról beszélünk 2014. szeptember 24. Adatbázisok 17 / 20
Megoldás Cég(Cégnév, Cégcím) Csoport(Csoportnév, Csoportcím, Cégnév) 2014. szeptember 24. Adatbázisok 18 / 20
Adatbázisok 5. gyakorlat Adatmodellezés: Funkcionális függés, redundancia 2014. október 1. 2014. október 1. Adatbázisok 1 / 10
Gyakorlás - 1.feladat Készítsünk relációsémát az alábbi modellhez! 2014. október 1. Adatbázisok 2 / 10
Megoldás Állatok(auonosító, faj, létszám) Körzet(körzet_kód, körzet név, terület) Erdészek(ig.szám, név, szül.dátum) Megtalálható(azonosító, körzet_kód) Felel s(körzet_kód, ig.szám) 2014. október 1. Adatbázisok 3 / 10
Gyakorlás - 2.feladat Készítsünk relációsémát az alábbi modellhez! 2014. október 1. Adatbázisok 4 / 10
Megoldás Katalógus(sorszám, dátum) Ruhamodell(cikkszám, típus) Ruhadarab(cikkszám, szín, méret) Vev (vev szám, név, lakcím, katalógus_száma, rendelés_dátuma) Megrendel(vev szám, cikkszám, szín, méret, dátum) Tartalmaz(katalógus_száma, cikkszám, oldalszám) 2014. október 1. Adatbázisok 5 / 10
Funkcionális függ ség Legyen R(A 1,..., A n ) egy relációséma, P, Q {A 1,..., A n }. P- t l funkcionálisan függ Q (jelölés: P Q), ha bármely R feletti T tábla esetében valahányszor két sor megegyezik P-n, akkor megegyezik Q-n is Pl. {EHA} {Név, Lakcím} 2014. október 1. Adatbázisok 6 / 10
Redundancia Ugyanaz az adat több helyen jelenik meg (egyszeri tárolás elegend lenne) Redundáns a következ sémának megfelel adattábla is: KÖNYV(könyvszám, szerz, cím, kiadás, m faj, oldalak száma) 2014. október 1. Adatbázisok 7 / 10
Funkcionális függés - feladat Írjuk fel a modellhez tartozó relációsémát! 2014. október 1. Adatbázisok 8 / 10
Megoldás Tanár(T.azonosító, név) Diák(D.azonosító, név, lakcím) Szak(SZ.azonosító, kar, szak név) Tanítja(T.azonosító, D.azonosító, tantárgy) Szakos(D.azonosító, SZ.azonosító); Mik a függ ségek ebben a példában? f 1 : {D.azonosító} {D.név, D.lakcím} f 2 : {SZ.azonosító} {szak név, kar} DE! {D.azonosító} {SZ.azonosító} nem igaz, mert egy diák több szakra is járhat 2014. október 1. Adatbázisok 9 / 10
Valuta váltás - feladat Határozzuk meg az alábbi sémában a függ ségeket! VALUTA(pénznem, pénz_kód, ország, ország_kód, eladás, vétel, dátum) A dátumtól nem függ a pénznem, pénz_kód, ország és az ország_kód sem, ezeket vegyük egy külön táblába: VALUTA(pénz_kód, pénznem, ország, ország_kód) ÁRFOLYAMOK(pénz_kód, eladás, vétel, dátum) Még tovább bontható az {ország_kód} {ország} VALUTA(pénz_kód, pénznem, ország_kód ) ÁRFOLYAMOK(pénz_kód, eladás, vétel, dátum) ORSZÁG(ország_kód, ország) Ez a folyamat a redundancia csökkenését eredményezi, a módszert normalizálásnak nevezzük 2014. október 1. Adatbázisok 10 / 10
Adatbázisok 6. gyakorlat Adatmodellezés: normalizálás (2NF, 3NF) 2014. október 8. 2014. október 8. Adatbázisok 1 / 14
1NF - Els normálforma Egy relációséma 1NF-ben van, ha az attribútumok értéktartománya egyszer (atomi) adatokból áll (nem tartalmat pl. listát vagy struktúrát) A struktúrákat elemeivel helyettesítjük - pl: lakcím A listákat külön sémába vesszük fel B vítjük a tartalmazó séma kulcsával a tartalmazó sémából teljesen eltávolítjuk a listát 2014. október 8. Adatbázisok 2 / 14
Feladat Adott az alábbi struktúra: számla(számlaszám, dátum, vev kód, vev név, vev cím, sorok) A sorok mez a számlán szerepl sorokat jelzi Egy sor felépítése a következ : (árukód, árunév, egységár, mennyiség) Egy sort az árukód egyértelm en azonosít 2014. október 8. Adatbázisok 3 / 14
Feladat - Relációsémák és táblák számla(számlaszám, dátum, vev kód, vev név, vev cím) sorok(számlaszám, árukód, árunév, egységár, mennyiség) 2014. október 8. Adatbázisok 4 / 14
2NF - Második normálforma Egy relációséma 2NF-ben van, ha minden másodlagos attribútum teljesen függ bármely kulcstól Másodlagos: nem része egyik kulcsnak sem Kulcstól teljesen függ: csak az egész kulcstól függ, azaz a részhalmazaitól nem Példa: VIZSGATELJESÍTÉS(kurzuskód, kurzusnév, dátum, jegy) A jegy teljesen függ a kulcstól, de a kurzus neve már nem, mert az csak a kurzuskódtól függ 2014. október 8. Adatbázisok 5 / 14
2NF-re hozás Eredeti séma: sorok(számlaszám, árukód, árunév, egységár, mennyiség) Kulcs: {számlaszám, árukód} Függ ség: {árukód} {árunév} 2014. október 8. Adatbázisok 6 / 14
2NF Eredeti séma: sorok(számlaszám, árukód, árunév, egységár, mennyiség) Felbontás az {árukód} {árunév} függ ség mentén: sorok(számlaszám, árukód, egységár, mennyiség) áruk(árukód, árunév) 2014. október 8. Adatbázisok 7 / 14
3NF - Harmadik normálforma Egy relációséma 3NF-ben van, ha minden másodlagos attribútuma közvetlenül függ bármely kulcstól (A B C) Ha K kulcs, és K B C, ahol C az összes B-t l függ másodlagos attribútum, akkor a sémát felbontjuk a B C függ ség szerint R(A) sémát az alábbi sémákkal helyettesítjük: R1(B C) - ami a második függ ségben részt vesz R2(A - C) - a B-t l függ dolgokat kivéve 2014. október 8. Adatbázisok 8 / 14
3NF-re hozás Eredeti séma: számla(számlaszám, dátum, vev kód, vev név, vev cím) Kulcs: {számlaszám} Tranzitív függés: {számlaszám} {vev kód} {vev név, vev cím} 2014. október 8. Adatbázisok 9 / 14
3NF Eredeti séma: számla(számlaszám, dátum, vev kód, vev név, vev cím) Felbontás a {vev kód} {vev név, vev cím} függ ség mentén: számla(számlaszám, dátum, vev kód ) vev k(vev kód, vev név, vev cím) 2014. október 8. Adatbázisok 10 / 14
Feladat - Videókölcsönz adatbázisa kazetták(kazetta száma, lm címe, lm száma, rendelés száma, rendelés dátuma, sorok) Egy kazettán csak egy lm van, de egy lm több példányban is meglehet A sorok mez azt tartalmazza, hogy mikor ki kölcsönözte ki a kazettát Egy sor felépítése a következ : (kölcsönzés száma, tag sorszáma, tag neve, kölcsönzés dátuma, visszahozás dátuma) Egy sort a kölcsönzés száma egyértelm en azonosít, a kölcsönzés száma úgy jön létre, hogy a tagsorszámhoz "hozzáragasztják" a kölcsönzés dátumát 2014. október 8. Adatbázisok 11 / 14
1NF Felbontjuk a sorok mez t, mert az összetett Kazetták(kazetta száma, lm címe, lm száma, rendelés száma, rendelés dátuma) Sorok(kazetta száma, kölcsönzés száma, tag sorszáma, tag neve, kölcsönzés dátuma, visszahozás dátuma) 2014. október 8. Adatbázisok 12 / 14
2NF Sorok(kazetta száma, kölcsönzés száma, tag sorszáma, tag neve, kölcsönzés dátuma, visszahozás dátuma) A sorok sémát felbontjuk az alábbi függ ség miatt: {kölcsönzés száma} {tag sorszáma, tag neve, kölcsönzés dátuma, visszahozás dátuma} Sorok(kazetta száma, kölcsönzés száma) Kölcsönzések(kölcsönzés száma, tag sorszáma, tag neve, kölcsönzés dátuma, visszahozás dátuma) 2014. október 8. Adatbázisok 13 / 14
3NF Kazetták(kazetta száma, lm címe, lm száma, rendelés száma, rendelés dátuma) A kazetták séma tranzitív függései: {kazetta száma} {lm száma} {lm címe} {kazetta száma} {rendelés száma} {rendelés dátuma} Kazetták(kazetta száma, lm száma, rendelés száma) Film(lm száma, lm címe) Rendelések(rendelés száma, rendelés dátuma) 2014. október 8. Adatbázisok 14 / 14