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) (b) (c) (d) (e)
egyféle táncot több csoport is táncolhat, egy csoport több táncot is el®adhat, a versenyen nincs kikötés a táncra vonatkozóan, így bármilyen táncot be lehet mutatni, a zenét egyértelm¶en azonosítja a címe, azaz nincs két azonos cím¶ szám, 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) (b) (c) (d)
egy vizsgálaton több betegség is diagnosztizálható, egy betegségre több gyógyszer is felírható, egy-egy páciens több gyógyszerre is lehet érzékeny, egy vizsgálatot a dátum és a vizsgálat kódja határoz meg egyértelm¶en. 4
Megoldás:
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(A1 , ..., An ), ahol R relációséma, és A1 , ..., An 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
kapcsolat esetén:
1:1
- 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. Megoldás: Vev®(Vev®kód, Név, Cím) Számla(Számlaszám, Dátum, Vev®kód)
2.
7
Megoldás: Árucikk(Cikkszám, Cikknév, Tartalmazó_árucikk)
3. Megoldás: Cég(Cégnév, Cégcím) Csoport(Csoportnév, Csoportcím, Cégnév )
4. Megoldás: É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. 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)
6. 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)
9
1.3
Funkcionális függés, redundancia
Legyen R(A1 , ..., An ) egy relációséma, P, Q ⊆ {A1 , ..., An }. 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!
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ó); 10
Mik a függ®ségek ebben a példában? - f1 : {D.azonosító} → {D.név, D.lakcím} - f2 : {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) Megoldás: - 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