1 Adatmodellezés 1.1 Egyed-kapcsolat 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) Alapfogalmazk - Egyed - létez dolog, amelyet tulajdonságokkal írunk le - 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 - Összetett attribútum - maga is több attribútumból áll 0 Utolsó módosítás: 2015. szeptember 23. 1
- Többérték attribútum - aktuális értéke halmaz vagy lista lehet, pl. szerz k 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 Sokágú kapcsolatok Kett nél több egyed között (helyettesíthet több kétágú kapcsolattal is, de így sokkal kifejez bb) 2
Specializáló kapcsolatok 1. 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 2. Az altípusok öröklik a f típus attribútumait, de lehetnek saját attribútumaik is 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) Ö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 3
Feladatok 1. 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: (a) egyféle táncot több csoport is táncolhat, (b) egy csoport több táncot is el adhat, (c) a versenyen nincs kikötés a táncra vonatkozóan, így bármilyen táncot be lehet mutatni, (d) a zenét egyértelm en azonosítja a címe, azaz nincs két azonos cím szám, (e) 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 Megoldás I: Megoldás II.: 2. Készítsünk EK-diagramot egy háziorvosi betegnyilvántartó rendszerhez! Az orvosok elvárásainak megfelel en az adatbázisnak tartalmaznia kell a betegek személyi adatait, gyógyszerérzékenységüket, az egyes vizsgálatok id pontjait és a felírt gyógyszereket. Feltételezzük, hogy: (a) egy vizsgálaton több betegség is diagnosztizálható, (b) egy betegségre több gyógyszer is felírható, (c) egy-egy páciens több gyógyszerre is lehet érzékeny, (d) egy vizsgálatot a dátum és a vizsgálat kódja határoz meg egyértelm en. 4
1.2 Egyed-kapcsolat modellb l relációs adatbázisséma 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 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) A kulcs 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. A 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 szaggatott vonallal aláhúzva. Az EK-modellben megismert kapcsolatok a relációs modellben küls kulcsok formájában jelennek meg. Egyedek leképezése Minden egyednek létrehozunk egy relációsémát 5
Könyv(Könyvszám, Szerz, Cím) Olvasó(Olvasószám, Név, Lakcím) 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) Ö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) 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) 6
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) 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 Feladatok 1. Vev (Vev kód, Név, Cím) Számla(Számlaszám, Dátum, Vev kód) 2. 7
Árucikk(Cikkszám, Cikknév, Tartalmazó_árucikk) 3. Cég(Cégnév, Cégcím) Csoport(Csoportnév, Csoportcím, Cégnév ) 4. Égitest(név, felszíni h mérséklet, méret, mikor, cskód) Hold(név, méret, felszíni h mérséklet, enév) Csillagász(cskód, név, nemzetkód) rszonda(szonda neve, fell tték, nemzetkód) Nemzet(nemzetkód, név) Mérést végez(név, szonda neve, mért érték, zikai mérték) 8
5. Á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) 6. 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) 9
1.3 Funkcionális függés, redundancia 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} Ha ugyanaz az adat több helyen jelenik meg (egyszeri tárolás elegend lenne), redundanciáról beszélünk. 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) Feladat 1. Írjuk fel a modellhez tartozó relációsémát! 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ó); 10
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 2. 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) 1.4 Normalizálás (1NF, 2NF, 3NF) 1NF 2NF 3NF Feladat Hozzuk az alábbi relációsémát 1NF, 2NF, 3NF-re! 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 11
2 SQL 12
3 MintaZH 13