Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

ADATBÁZISOK http://users.nik.uni-obuda.hu/szabozs/ 2017.04.04. szabo.zsolt@nik.uni-obuda.hu.

Hasonló előadás


Az előadások a következő témára: "ADATBÁZISOK http://users.nik.uni-obuda.hu/szabozs/ 2017.04.04. szabo.zsolt@nik.uni-obuda.hu."— Előadás másolata:

1 ADATBÁZISOK http://users.nik.uni-obuda.hu/szabozs/ 2017.04.04.

2 KÖVETELMÉNYEK

3 Követelmények TVSZ szerinti gyakorlat-látogatás Otthoni felkészülés!
Kis ZH-k megírása (minden gyakorlaton, a következőn: normalizálás) Nagy ZH-k megírása (2 db, központi pótlásokkal) Féléves feladat (Pontozás!!!)

4 Követelmények  Oracle10g / Oracle11g / OracleXE telepítése
 Példatár (~4500 Ft?)  Telepítési útmutatók (10g, XE)  AB-KGK (FF Követelmény, FF Értékelés, FF Feladatkiírás)

5 analog.nik.uni-obuda.hu Fontos fileok
FF_Feladatkiírás Következő foglalkozásra elhozni, aláíratni, megőrizni min. 3 entitás leírása kell a feladatkiírásban NEM dvd, vhs, könyvtár … Menetrend  Javasolt tematika (…) FÉLÉVBEVEZETŐ  Alap információk SQL Bevezető Feladatgyűjtemény, Analitikus SQL Feladatgyűjtemény  Otthoni gyakorlás!!!

6 ALAPOK

7 Logikai adatmodellek típusai
Hierarchikus adatmodell  Fa Hálós adatmodell  Gráf Relációs adatmodell Táblázatok (~Excel munkalapok) közötti kapcsolatok rendszere Objektum-Orientált adatmodell  Adat + Utasítások egységbe zárása (elvként létezik, ORM rendszerekkel elég jól megközelíthető, az adat tárolása ugyanúgy relációs)

8 A relációs adatmodell Oszlop-fejlécek: adatmező (mező, attribútum)
Sorok: rekord Tárolási elv: ~táblázat: adattábla, tábla - a sorok sorrendje nem számít, - az oszlopok sorrendje sem számít és - nem lehet két azonos sor. Több táblázat RELÁCIÓS rendszere: adatbázis

9 Google keresés: "Az adatmodellezés szintjei" Bércesné Novák Ágnes
RELÁCIÓK ER Diagram Google keresés: "Az adatmodellezés szintjei" Bércesné Novák Ágnes

10 Egyedek, Relációk Egy-az-egyhez kapcsolat 1:1, ritka eset (vállalkozók + adószámok – belső függőségek?)

11 Egy-a-többhöz kapcsolat 1:N
Relációk  Kulcsok Egy-a-többhöz kapcsolat 1:N

12 Kulcsok Elsődleges kulcs, idegen kulcs, összetett kulcs
Összetett kulcsok használata esetén rész-kulcsokat nem viszünk át másik táblába (Mi most összetett kulcsokat használunk) Kulcsok relációs rendszere = adatbázis Később lesz szó ezek gyakorlati megvalósításáról

13 Több-a-többhöz kapcsolat M:N
Relációk Több-a-többhöz kapcsolat M:N

14 ER diagram alapelemei Egyed + kapcsolat Attribútum
Elsődleges kulcs

15

16 Programozók, Projektek, Modulok
Programozók mezői? Modulok mezői? Projektek mezői? Kapcsolatok: 1 modul  1 projekt; 1 projekt  több modul  1:N 1 programozó  több modul; egy modul  több programozó N:M  mikortól és meddig?

17 NORMALIZÁLÁS http://en.wikipedia.org/wiki/Database_normalization

18 Példa egy tipikus Excel táblára
RENDELÉS-SZÁM CIKK- SZÁM CIKK MEGNEVE-ZÉS REND. MENNYISÉG HATÁR- IDŐ SZÁLL. CÍM VEVŐ- NÉV 991201 0001 Barna kenyér 25 Bpest. Barna u.1 Julius Meinl 35 991202 0002 Fehér kenyér 24 Bpest Fehér u.2 Penny Market  REDUNDANCIA, INKONZISZTENCIA

19 Normalizálás Az itt ismertetett táblázatos módszer GYAKORLATI megközelítésből ábrázolja, hogy miért is szükséges a normalizálás A TÁBLÁZATOS LEÍRÁS FORMAILAG NEM MEGFELELŐ, a függőségek (egyedek) formális felírása az elvárt: Fvalami: {kulcs1, kulcs2}  {mező1, mező2, mező3} A táblázatos forma a könnyebb, gyakorlatias megértés miatt van itt használva, de a későbbi cél a reláció-algebrai / ER megközelítés

20 Ősmodell A rendelkezésre álló, a megoldandó feladatra jellemző adatcsoportok sora, minden struktúra és elv nélkül Például: megrendelés-nyilvántartás Cikkszám, Cikknév, Egységár, Adókulcs, Adószázalék, Rendelésszám, Mennyiség, Szállítási cím, Szín, Súly, Ország, Csomagolás

21 0NF Csak a szükséges mezőket hagyjuk meg  az adatok táblázatba rendezhetőek Cikkszám, Cikknév, Egységár, Adókulcs, Adószázalék, Rendelésszám, Szállítási cím, Mennyiség Törölve: Szín, Súly, Ország, Csomagolás

22 0NF Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz. Menny. Cím C1 N1 500 2 20 R1 5 A1 C2 N2 600 C3 N3 700 1 10 C4 N4 1000 3 25 R2 A2 Frendelések: {Cikkszám, Cikknév, Egységár, Adókulcs, Adószázalék, Mennyiség, {Rendelésszám, Cím} }

23 1NF „A reláció minden sorában pontosan egy elemi attribútumérték áll.”
Megszüntetjük az ismétlődő csoportokat avagy Megszüntetjük az összetett adattagokat

24 Módosítási, törlési, beszúrási anomáliák !!!
1NF Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny. Cím C1 N1 500 2 20 R1 5 A1 C2 N2 600 C3 N3 700 1 10 C4 N4 1000 3 25 R2 A2 Módosítási, törlési, beszúrási anomáliák !!!

25 2NF Funkcionális függőség: Funkcionális függőség akkor áll fenn, ha egy tulajdonság értékét egy másik tulajdonság értéke egyértelműen meghatározza. A funkcionális függés egyirányú kapcsolatot jelent. Például: Személyigazolvány-szám és név, anyja neve, születési dátum, stb. összerendelése, hiszen egy személyigazolvány-szám esetén biztosan tudjuk a kapcsolódó egyed minden adatát

26 2NF „Minden másodlagos attribútum funkcionálisan teljesen függ a reláció bármely kulcsától” Elvárás: egy táblában egy tetszőleges mező vagy kulcsmező, vagy a kulcsmezőtől funkcionálisan függő mező Megszüntetjük a többszörös funkcionális függőségeket: tábla-struktúra átdolgozása, több tábla létrehozása ( Egyedek létrehozása) Ehhez először fel kell írnunk a függőségeket

27 2NF Fcikkek: {Cikkszám}  {Cikknév, Egységár, Adókulcs, Adószázalék}
Rend.sz Menny. Cím Fcikkek: {Cikkszám}  {Cikknév, Egységár, Adókulcs, Adószázalék} Frendelések: {Rendelésszám} {Cím} Mennyiség??? Fmennyiségek: {Cikkszám, Rendelésszám} {Mennyiség} Függőség = Tábla = Egyed !!! Elsődleges kulcs, Idegen kulcs, Összetett kulcs !!!

28 2NF Rend.sz. Cikksz. Menny. R1 C1 5 C2 C3 10 R2 C4 2 Rend.sz. Cím R1
A1 R2 A2 Cikksz. Cikkn. Ár Adók. Adósz. C1 N1 500 2 20 C2 N2 600 C3 N3 700 1 10 C4 N4 1000 3 25 Kulcsok?? Összetett kulcsok???

29 3NF Tranzitív függőség: Egy nem-kulcs C tulajdonság akkor és csak akkor függ tranzitívan az egyed A kulcsától, ha meghatározza az azonosítótól függő B tulajdonság is „egy másodlagos attribútum sem függ tranzitívan a reláció egyetlen kulcsától sem” CSAK az elsődleges kulcstól lehet függés! Nem lehet függés az egyed nem-kulcs attribútumai között

30 3NF Megszüntetjük a tranzitív függőségeket, vagyis elérjük azt, hogy CSAK az elsődleges kulcstól legyen a táblán belül függés Jelenleg: Fadó: {Adókulcs}  {Adószázalék} Az új függőség új táblát jelent  új idegen kulcs az eredeti táblában

31 3NF Rend.sz. Cikksz. Menny. R1 C1 5 C2 C3 10 R2 C4 2 Rend.sz. Cím R1
A1 R2 A2 Cikksz. Cikkn. Ár Adók. C1 N1 500 2 C2 N2 600 C3 N3 700 1 C4 N4 1000 3 Adók. Adósz. 1 10 2 20 3 25

32 Előnyök Adatbázis szintű inkonzisztencia kiküszöbölve, az értelmetlen redundancia csökkent A relációk együttes mérete szinte mindig kisebb Törlés esetén sem veszhet el információ, az anomáliák megszűntek A relációk konzisztensen bővíthetők Minden módosítás könnyebb és gyorsabban hajtható végre

33 BCNF vs 3NF 3NF: Az R relációban lévő minden XY, a meglévő funkcionális függőségeken belüli funkcionális függőségre az egyik igaz: Y valójában X részhalmaza VAGY X az R reláció szuperkulcsa VAGY Y az R tetszőleges kulcsának részhalmaza (ez egyben kiköti, hogy az Y egyedül nem lehet kulcs: egy összetett kulcs részhalmaza nem lehet önmagában kulcs!) A 3NF-ben amúgy megengedett harmadik pont A BCNF-BEN NEM MEGENGEDETT!

34 BCNF (3.5NF) Összetett kulcson belüli / kulcsok közötti függés nem megengedett “A kulcsattribútumoknak nincs olyan részhalmaza, mely más kulcs- vagy másodlagos attribútumoktól (funkcionálisan) függene (vagyis nincs kulcstörés)” Egy 3NF reláció nincs BCNF-ben, ha (a) több lehetséges kulcs-jelölt van, (b) a kulcsok összetett kulcsok, és (c) a különböző kulcsok között van közös attribútum ID PK esetén ilyen nincs

35 Összefoglalva 0NF: Ősmodell 1NF: Nincsenek ismétlődő/komplex adattagok
2NF: Minden mező függ a kulcstól (funkcionális függőség) 3NF: Minden mező csak a kulcstól függ (nincs tranzitív függőség) BCNF: A kulcsmezők között nincs belső függés 4NF, 5NF, DKNF …………

36 Levezetés ER diagram segítségével???
BCNF Rend.sz. Cikksz. Menny. R1 C1 5 C2 C3 10 R2 C4 2 Rend.sz. Cím R1 A1 R2 A2 Cikksz. Cikkn. Ár Adók. C1 N1 500 2 C2 N2 600 C3 N3 700 1 C4 N4 1000 3 Adók. Adósz. 1 10 2 20 3 25 Levezetés ER diagram segítségével???

37 ER-ből táblák

38 ER-ből táblák

39 ER-ből táblák

40 EMP, DEPT

41 DEFINÍCIÓK

42 Kulcsjelölt Definíció: Az {A1, A2, ...An} attribútumhalmaz az R (A1, A2, ...An, B1, B2, ...Bk) sémájú reláció kulcsjelöltje, ha 1.) A1, A2, ...An => B1, B2, ...Bk fennáll, és 2.) nincsen olyan valódi részhalmaza az { A1, A2, ...An } halmaznak, amely az R reláció összes többi attribútumát funkcionálisan meghatározná. (Egy reláció attribútumainak minimális részhalmaza, amely összetett kulcsként használható lenne: azonos kulcshoz azonos nem-kulcs értékek vannak)

43 Szuperkulcs Gyakorlatilag a szuperkulcs a kulcsjelölt kiegészítése más attribútumokkal (Kulcsjelölt: a minimális szuperkulcs (a legkevesebb oszlopból álló szuperkulcs)) Azokat az attribútumhalmazokat, amelyek tartalmaznak kulcsjelöltet, szuperkulcsoknak nevezzük Rövidítése a „kulcsnál bővebb halmazoknak”

44 Lezárt X={A1,A2,...,An} attribútumhalmazra egy S funkcionális függőségi halmaz szerint vett (X+ jelölésű) lezárásának kiszámítási algoritmusa: Legyen X attribútumhalmaz, amely végül maga a lezárt lesz. Legyen először X kezdőértéke {A1,A2,...,An}. Keressünk olyan {B1,B2,...,Bm} => C funkcionális függőségeket S-ből, amelyekre a teljes B1,B2,...,Bm benne van az X attribútumhalmazban, de C nincs. Ekkor C-t hozzávesszük az X halmazhoz. A 2. lépést mindaddíg ismételjük, ameddig már nem tudunk több attribútumot hozzávenni X-hez.

45 Armstrong axiómák A funkcionális függőség:
Reflexív (önmagát meghatározza): Az egyszerű kulcs meghatározza önmagát, egy összetett kulcs meghatározza minden részhalmazát (   esetén  ) Tranzitív: Ha  és  akkor  Bővíthető: Ha , akkor 

46 Függőségőrző felbontás
A felbontás után kapott relációkban meglevő függőségekből az eredeti függőségekre tudjunk következtetni Adott az R reláció és az F függőségi halmaz. Azt mondjuk, hogy az R reláció egy R1, R2, …Rk felbontása függőségőrző az F függőségi halmaz szerint, ha az R1, R2, …Rk relációkra vetített függőségek unióiból az eredeti F függőségi halmaz logikailag következik. (Pl. levezethető az Armstrong axiómákkal)

47 Veszteségmentes felbontás
A résztáblák összekapcsolásával előállítható a normalizálás előtti állapot A 3NF és BCNF állapot elvártan MINDIG veszteségmentes! A 3NF mindig függőségmegőrző, a BCNF nem!

48 FÜGGŐSÉGMEGŐRZÉS ELLENŐRZÉSE
Google keresés: Relációk felbontása abkr4 "Bércesné Novák Ágnes”

49 Függőségmegőrzés Adottak: R=(A, B, C) , F={AB, BC}
R egy felbontása: R1=(A, C) R2=(B, C) R1-beli vetített, nem triviális függőségek: F1={AC} (tranzitív) R2-beli vetített, nem triviális függőségek: F2= {BC} A nem triviális függőségek F1-ben és F2-ben: {BC, AC}. Ezekből AB nem vezethető le

50 Függőségmegőrzés Adottak: R=(A, B, C) , F={AB, BC}
R egy felbontása: R1’=(A, B) és R2’=(B, C) R1’-beli vetített, nem triviális függőségek: F1={AB} R2’-beli vetített, nem triviális függőségek: F2= {BC} A nem triviális függőségek F1-ben és F2-ben: {AB, BC}. Ez így jó

51 Függőségmegőrzés Adottak: R(VÁROS, UTCA, IRÁNYíTÓSZÁM)=R(V, U, Ir)
F={VUIr, IrV} R felbontása BCNF-re: R1(U, Ir) és R2(V, Ir) Veszteségmentes (bizonyítást ld. hamarosan) R1-beli vetített, nem triviális függőségek: F1={} R2-beli vetített, nem triviális függőségek: F2= {IrV} Hiányzó függőség, de *bármilyen* BCNF felosztásnál az adott példán

52 Függőségmegőrzés Hiányzó függőség, de *bármilyen* BCNF felosztásnál az adott példán Nem mindig létezik függőségmegőrző felbontás BCNF-re Mindig létezik veszteségmentes és függőségmegőrző felbontás 3NF-re (a gyakorlatban a kiindulási R reláció a 3NF, mert az IrV nem igaz)

53 VESZTESÉGMENTESSÉG ELLENŐRZÉSE
Google keresés: veszteségmentesség ellenőrzése "Bércesné Novák Ágnes"

54 Veszteségmentes? Veszteségmentesség: a résztáblák összekapcsolásával előállítható a normalizálás előtti állapot A 3NF és BCNF állapot elvártan MINDIG veszteségmentes! Veszteségmentesség nélkül a normalizálásnak nem lenne értelme . . .

55

56 Példa R1 (A1, A2, A3, A5) R2 (A1, A3, A4) R3 (A4, A5) FD1: A1  A3 A5

57 Példa A1 A2 A3 A4 A5 R1 a(1) a(2) a(3) b(1,4) a(5)
R2 a(1) b(2,2) a(3) a(4) b(2,5) R3 b(3,1) b(3,2) b(3,3) a(4) a(5) R1 (A1, A2, A3, A5) R2 (A1, A3, A4) R3 (A4, A5)

58 Példa FD1: A1  A3 A5 A1 A2 A3 A4 A5 R1 a(1) a(2) a(3) b(1,4) a(5)
R2 a(1) b(2,2) a(3) a(4) b(2,5) R3 b(3,1) b(3,2) b(3,3) a(4) a(5) R1 a(1) a(2) a(3) b(1,4) a(5) R2 a(1) b(2,2) a(3) a(4) a(5) R3 b(3,1) b(3,2) b(3,3) a(4) a(5)

59 Példa FD2: A5  A1 A4 A1 A2 A3 A4 A5 R1 a(1) a(2) a(3) b(1,4) a(5)
R2 a(1) b(2,2) a(3) a(4) a(5) R3 b(3,1) b(3,2) b(3,3) a(4) a(5) R1 a(1) a(2) a(3) a(4) a(5) R3 a(1) b(3,2) b(3,3) a(4) a(5)

60 Példa FD3: A3 A4  A2 A1 A2 A3 A4 A5 R1 a(1) a(2) a(3) a(4) a(5)
R2 a(1) b(2,2) a(3) a(4) a(5) R3 a(1) b(3,2) b(3,3) a(4) a(5) R2 a(1) a(2) a(3) a(4) a(5)

61 Veszteségmentes? Döntés: Ha már nincsen alkalmazható függőség, akkor ellenőrizzük, az így kapott táblázatban van-e csupa “ak”- ból álló sor. Ha igen, akkor a felbontás veszteségmentes. Ha nem, akkor veszteséges.  az utolsó lépés kihagyható, mert már előtte is tudjuk, hogy veszteségmentes Veszteséges dekompozícióból nem állítható vissza a normalizáció előtti állapot  HIBÁS STRUKTÚRA

62 BCNF Fcikkek: {Cikkszám}  {Cikknév, Egységár, Adókulcs}
Adósz. Rend.sz Menny. Cím Fcikkek: {Cikkszám}  {Cikknév, Egységár, Adókulcs} Frendelések: {Rendelésszám} {Cím} Fmennyiségek: {Cikkszám, Rendelésszám} {Mennyiség} Fadó: {Adókulcs}  {Adószázalék}

63 Példa Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím Cikksz. Cikkn.
B(1,1) B(1,2) B(1,3) B(1,4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) B(2,6) B(2,7) B(2,8) B(3,1) B(3,2) B(3,3) B(3,4) B(3,5) B(3,6) B(3,7) B(3,8) B(4,1) B(4,2) B(4,3) B(4,4) B(4,5) B(4,6) B(4,7) B(4,8) Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,2) B(3,3) B(3,4) B(3,5) A(7) B(3,8) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8)

64 Fcikkek: {Cikkszám}  {Cikknév, Egységár, Adókulcs}
Példa Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,2) B(3,3) B(3,4) B(3,5) A(7) B(3,8) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8) Fcikkek: {Cikkszám}  {Cikknév, Egységár, Adókulcs} Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,5) A(7) B(3,8) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8)

65 Frendelések: {Rendelésszám} {Cím}
Példa Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,5) A(7) B(3,8) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8) Frendelések: {Rendelésszám} {Cím} Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,5) A(7) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8)

66 Fmennyiségek: {Cikkszám, Rendelésszám} {Mennyiség}
Példa Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,5) A(7) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8) Fmennyiségek: {Cikkszám, Rendelésszám} {Mennyiség}

67 Fadó: {Adókulcs}  {Adószázalék}
Példa Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) B(1,5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) B(3,5) A(7) B(4,1) B(4,2) B(4,3) A(5) B(4,6) B(4,7) B(4,8) Fadó: {Adókulcs}  {Adószázalék} Cikksz. Cikkn. Ár Adók. Adósz. Rend.sz Menny Cím A(1) A(2) A(3) A(4) A(5) B(1,6) B(1,7) B(1,8) B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) A(6) B(2,7) A(8) A(7) B(4,1) B(4,2) B(4,3) B(4,6) B(4,7) B(4,8)


Letölteni ppt "ADATBÁZISOK http://users.nik.uni-obuda.hu/szabozs/ 2017.04.04. szabo.zsolt@nik.uni-obuda.hu."

Hasonló előadás


Google Hirdetések