Adatbázisok 1. gyakorlat
Adatmodellezés
2016. október 1.
2016. október 1.
Adatbázisok
1 / 42
Elérhet®ség
http://www.inf.u−szeged.hu/~mkatona
•
Web :
•
E-mail :
[email protected]
•
Fogadóóra : Kedd 15
− 16
• Árpád tér 2. 221-es szoba
2016. október 1.
Adatbázisok
2 / 42
A mai gyakorlat anyaga
•
E-K modell
•
E-K modellb®l relációs adatbázisséma
•
Funkcionális függés, redundancia
•
Normalizálás (2NF, 3NF)
2016. október 1.
Adatbázisok
3 / 42
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
2016. október 1.
Adatbázisok
4 / 42
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
2016. október 1.
Adatbázisok
5 / 42
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
2016. október 1.
Adatbázisok
6 / 42
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
2016. október 1.
Adatbázisok
7 / 42
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
2016. október 1.
Adatbázisok
8 / 42
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)
2016. október 1.
Adatbázisok
9 / 42
Ö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
2016. október 1.
Adatbázisok
10 / 42
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
2016. október 1.
az, ami azonosítja
Adatbázisok
11 / 42
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
2016. október 1.
Adatbázisok
12 / 42
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 2016. október 1.
Adatbázisok
13 / 42
Megoldás I.
2016. október 1.
Adatbázisok
14 / 42
Megoldás II.
2016. október 1.
Adatbázisok
15 / 42
Feladat - Orvosi betegnyilvántartó rendszer
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 :
1 egy vizsgálaton több betegség is diagnosztizálható, 2 egy betegségre több gyógyszer is felírható, 3 egy-egy páciens több gyógyszerre is lehet érzékeny, 4 egy vizsgálatot a dátum és a vizsgálat kódja határoz meg egyértelm¶en.
2016. október 1.
Adatbázisok
16 / 42
Megoldás
2016. október 1.
Adatbázisok
17 / 42
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
konzisztenciájának
•
Az adatok
•
Eszközök az adatok biztonsági
és
biztonságának
mentésére,
biztosítása
vissza- és
helyreál-
lítására
• Nagy mennyiség¶ adat
hatékony kezelése
• Nagyszámú felhasználó
kiszolgálása
2016. október 1.
Adatbázisok
18 / 42
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 nevezzük, amely annyi
mez®b®l
rekordnak
áll, ahány oszlopa van a táblá-
nak
2016. október 1.
Adatbázisok
19 / 42
A relációs adatbázisséma
•
Minden adattáblához tartozik egy
relációséma,
amely annak
A1 , ..., An
attribútumok
szerkezetét írja le
• R(A1 , ..., An ), •
ahol
R relációséma,
és
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)
2016. október 1.
Adatbázisok
20 / 42
Kulcsok
•
Egy relációséma attribútumainak egy olyan,
számú részhalmaza,
minimális elem-
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
•
Ami nem kulcs, az
els®dleges kulcs.)
másodlagos attribútum
2016. október 1.
Adatbázisok
21 / 42
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 szaggatott vonallal aláhúzva
•
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
2016. október 1.
Adatbázisok
22 / 42
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)
2016. október 1.
Adatbázisok
23 / 42
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)
2016. október 1.
Adatbázisok
24 / 42
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) 2016. október 1.
Adatbázisok
25 / 42
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 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®( , Név)
Könyvszám
2016. október 1.
Adatbázisok
26 / 42
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, vala-
mint 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ó
2016. október 1.
Adatbázisok
27 / 42
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ó enti-
tások kulcs attribútumai, valamint a kapcsolat saját attribútumai
2016. október 1.
Adatbázisok
28 / 42
EK diagram - Taxi
2016. október 1.
Adatbázisok
29 / 42
Relációs adatbázisséma - Taxi
Sof®r(sof®r_id,
név, igazolvány_szám, jogosítvány_szám, jogosít-
vány_lejárat, irsz, város, utca, résztvev®i_státusz)
Állandós(sof®r_id, Beugró(sof®r_id,
munkaid®)
ráérés)
Járm¶(rendszám, típus, márka, megtett_km, szín, fér®hely, sof®r_id) Üzemanyag(ár, Fuvar(cél_cím,
típus, rendszám, üzem_azon) indul_cím, indul_dátumid®, útvonal_hossza, útvo-
nal_ideje, sof®r_id, rendszám, tarifa_azonosító)
Tarifa(tarifa_azonosító,
tarifa_neve, km_ára)
2016. október 1.
Adatbázisok
30 / 42
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
•
Pl.
Legyen
R(A1 , ..., An )
{EHA} → {Név,
egy relációséma,
Lakcím}
2016. október 1.
Adatbázisok
31 / 42
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)
2016. október 1.
Adatbázisok
32 / 42
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
2016. október 1.
Adatbázisok
33 / 42
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
2016. október 1.
Adatbázisok
34 / 42
Feladat - Relációsémák és táblák
• számla(számlaszám,
• sorok(számlaszám,
dátum, vev®kód, vev®név, vev®cím)
árukód, árunév, egységár, mennyiség)
2016. október 1.
Adatbázisok
35 / 42
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
2016. október 1.
Adatbázisok
36 / 42
2NF-re hozás
•
Eredeti séma :
sorok(számlaszám,
árukód, árunév, egységár, mennyiség)
{számlaszám,
•
Kulcs :
•
Függ®ség :
árukód}
{árukód} → {árunév}
2016. október 1.
Adatbázisok
37 / 42
2NF
•
Eredeti séma :
•
Felbontás az
sorok(számlaszám,
árukód, árunév, egységár, mennyiség)
{árukód} → {árunév}
sorok(számlaszám, árukód, áruk(árukód, árunév)
2016. október 1.
függ®ség mentén :
egységár, mennyiség)
Adatbázisok
38 / 42
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
•
Ha K kulcs, és K
→
B
→
C)
→ B → C, ahol C az összes B-t®l függ® másod→ C függ®ség
lagos attribútum, akkor a sémát felbontjuk a B 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
2016. október 1.
Adatbázisok
39 / 42
3NF-re hozás
•
Eredeti séma :
számla(számlaszám,
dátum, vev®kód, vev®név, vev®cím)
{számlaszám}
•
Kulcs :
•
Tranzitív függés :
{számlaszám} → {vev®kód} → {vev®név,
2016. október 1.
vev®cím}
Adatbázisok
40 / 42
3NF
•
Eredeti séma :
számla(számlaszám,
•
Felbontás a
dátum, vev®kód, vev®név, vev®cím)
{vev®kód} → {vev®név,
vev®cím} függ®ség men-
tén :
számla(számlaszám, dátum, vev®kód) vev®k(vev®kód, vev®név, vev®cím)
2016. október 1.
Adatbázisok
41 / 42
1. feladat
Az
R(A, B, C , D, E , F ) relációsémában az E attribútum az E1 , E2 , E3
attribútumokból tev®dik össze, és az alábbi funkcionális függ®ségeket feltételezzük :
1
B → DEF
2
E2 → E1
Határozzuk meg a séma kulcsát, és hozzuk a sémát 1NF, 2NF, 3NF alakra !
2016. október 1.
Adatbázisok
42 / 42