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
- aktuális értéke halmaz vagy lista
lehet, pl. szerz®k
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ódo• • • •
sí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(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)
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ó kap-
csolat(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, ség, Utca, Házszám)
2014. szeptember 24.
Adatbázisok
Hely-
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, va-
lamint sok szerz® nem fér el a megadott mez®ben
2 3
Sorok többszörözése (annyi sort veszünk fel egy könyvhöz, ahány szerz®je van) Új tábla felvétele Könyv(Könyvszám, Szerz®, Cím)
helyett
Könyv(Könyvszám, cím) Szerz®( , Név)
Könyvszám
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, ak-
kor 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ár-
melyiket)
• 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öbb-
szö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 kongurá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¶ cso-
port), 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
P, Q ⊆ {A1 , ..., An }. Pt®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
•
Legyen
•
Pl.
R(A1 , ..., An )
{EHA} → {Név,
egy relációséma,
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?
• f1 : {D.azonosító} → {D.név, • f2 : {SZ.azonosító} → {szak •
DE!
D.lakcím}
név, kar}
{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,
pénz_kód
ország_kód )
• ÁRFOLYAMOK( , 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éktarto-
má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ész-
halmazaitó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 sor-
szá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