Csima Judit november 15.

Hasonló dokumentumok
Csima Judit BME, VIK, november 9. és 16.

Csima Judit október 24.

Adatbázisok elmélete 12. előadás

Relációs adatbázisok tervezése ---2

ADATBÁZISOK. 4. gyakorlat: Redundanciák, funkcionális függőségek

6. Gyakorlat. Relációs adatbázis normalizálása

Normalizálási feladatok megoldása

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF

Relációs adatbázisok tervezése ---1

Adatbázisok gyakorlat

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Adatbázis tervezés normál formák segítségével

Függőségek felismerése és attribútum halmazok lezártja

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF. Adatbázisrendszerek előadás november 7.

Adatbázisrendszerek. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF március 13.

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás

8. előadás. normálformák. Többértékű függés, kapcsolásfüggés, 4NF, 5NF. Adatbázisrendszerek előadás november 10.

13. Relációs adatmodell tervezése

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbázis-kezelés. alapfogalmak

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF. Adatbázisrendszerek előadás november 3.

Példa Többértékű függőségek, 4NF, 5NF

A relációs adatbázis-tervezés alapjai

Tervezés: Funkcionális függıségek

8. Előadás tartalma. Funkcionális függőségek

T Adatbázisok-adatmodellezés

9. RELÁCIÓS ADATBÁZISOK LOGIKAI TERVEZÉSE TERVEZÉS E-R DIAGRAMBÓL TERVEZÉS SÉMADEKOMPOZÍCIÓVAL Anomáliák...

Relációs adatbázisok tervezése 2.rész (dekompozíció)

ADATBÁZIS-KEZELÉS. Relációs modell

Adatbázisok elmélete 11. előadás

Relációs adatbázisok tervezése 2.rész (dekompozíció)

Relációs adatbázisok tervezése 2.rész (dekompozíció)

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás

0. Ha valahol még nem szerepelt a relációs algebrai osztás, akkor azt kell először venni:

Diszkrét matematika 2.C szakirány

Formális nyelvek - 5.

Gy ur uk aprilis 11.

ADATBÁZISOK. Normalizálás

Diszkrét matematika 2.

Relációs adatbázisok tervezése ---1

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

11. Gyakorlat Adatbázis-tervezés, normalizálás. Redundancia: egyes adatelemek feleslegesen többször is le vannak tárolva

Klasszikus algebra előadás. Waldhauser Tamás március 24.

Sor és oszlopkalkulus

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

Adatbázis rendszerek. 4. előadás Redundancia, normalizálás

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Arany Dániel Matematikai Tanulóverseny 2015/2016-os tanév 1. forduló Haladók III. kategória

Normalizálás. Elméleti összefoglaló

Háromszögek fedése két körrel

Láthatjuk, hogy az els szám a 19, amelyre pontosan 4 állítás teljesül, tehát ez lesz a legnagyobb. 1/5

1. ábra ábra

Alap fatranszformátorok II

Adatbázis rendszerek 1. 7.Gy: Rakjunk rendet. Normalizálás

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika 2.C szakirány

Diszkrét matematika I.

Adatbázis használat I. 1. gyakorlat

ADATBÁZIS RENDSZEREK. Attributum típusok, normalizálsá, relációs algebra. Krausz Nikol, Medve András, Molnár Bence

MM CSOPORTELMÉLET GYAKORLAT ( )

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Adatmodellezés. 1. Fogalmi modell

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

FELVÉTELI VIZSGA, szeptember 12.

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A


Diszkrét matematika I.

Diszkrét matematika 2. estis képzés

Normálformák Normalizálás ADATBÁZISKEZELÉS ÉS KÖNYVTÁRI RENDSZERSZERVEZÉS 1 / 2

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

Adatbázis rendszerek I

1. előadás: Halmazelmélet, számfogalom, teljes

Formális nyelvek - 9.

1. Részcsoportok (1) C + R + Q + Z +. (2) C R Q. (3) Q nem részcsoportja C + -nak, mert más a művelet!

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Adatbázisok 1. Az egyed-kapcsolat modell (E/K)

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Diszkrét matematika 2. estis képzés

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Diszkrét matematika 2. estis képzés

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Klasszikus algebra előadás. Waldhauser Tamás április 28.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Adatbázisok elmélete

Csima Judit szeptember 6.

Formális nyelvek I/2.

1/50. Teljes indukció 1. Back Close

Adatbázisok elmélete 4. előadás

1. Polinomok számelmélete

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Arany Dániel Matematikai Tanulóverseny 2016/2017-es tanév Kezdők III. kategória I. forduló

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

Adatbázis rendszerek 2. előadás. Relációs algebra

Adatbázis rendszerek 2. előadás. Relációs algebra

= 1, azaz kijött, hogy 1 > 1, azaz ellentmondásra jutottunk. Így nem lehet, hogy nem igaz

Átírás:

Adatbáziskezelés Normalizálás Csima Judit BME, VIK, Számítástudományi és Információelméleti Tanszék 2017. november 15. Csima Judit Adatbáziskezelés Normalizálás 1 / 26

Normalizálás Tétel Tetszõleges (R, F ) sémának van hûséges felbontása BCNF relációkra. Bizonyítás: Elve: Ha (R, F ) BCNF, akkor kész. Ha nem, akkor két valódi (kisebb) részre bontjuk hûségesen = (R 1, R 2 ) Ezt ismételjük (R 1, R 2 )-re. Ez véget fog érni, mert ha már csak 2 attribútum marad valamelyikben, azt nem kell tovább bontani. Hûséges lesz, mert láttuk, hogy ha egy hûséges felbontás egyik részét tovább bontjuk, akkor hûséges marad. Csima Judit Adatbáziskezelés Normalizálás 2 / 26

Hogyan bontjuk fel 2 valódi részre, hûségesen? Keresünk a felbontandó sémában egy olyan X A F + -t, ami sérti a BCNF tulajdonságot = A és X része a sémának, A / X és X nem szuperkulcs R 1 := XA, R 2 := R \ {A} Ezek kisebbek: R 2 nyilván, R 1 pedig azért, mert ha R 1 = R volna, akkor X XA = R miatt X szuperkulcs lett volna. Hûséges a felbontás: kétrészes teszttel R 1 R 2 = X A = R 1 \ R 2 Miért lesz jobb ez a felbontás? Az X A függéssel nem lesz több probléma: R 2 -ben nincs A, így nem lehet baj. R 1 -ben viszont X szuperkulcs lesz. Csima Judit Adatbáziskezelés Normalizálás 3 / 26

Példa R(Tanár, Tárgy, Terem, Diák, Jegy, Idõ) F = {Tá T; IT Te; ID Te; ID Tá; TáD J} = kulcs csak ID Csima Judit Adatbáziskezelés Normalizálás 4 / 26

ADATBÁZISOK ELMÉLETE 17. ELŐADÁS Tá D J Tá D J k: Tá D R Tá T Tá T k: Tá T Tá Te D I k: I D Tá I Te ¾ F Tá Te D I k: I D Tá I Te Tá D I k: Tá I k: I D Te I Megjegyzések: Minden felbontás után meg kell nézni, hogy a kapott relációk BCNF-ben vannak-e. Ehhez meg kell F konstruálni S -et, ha S a vizsgált reláció: ez az F R azon függéseiből áll, amiknek mindkét oldala F-ben van. Ezeket a függéseket úgy kapjuk, hogy minden Csima Judit Adatbáziskezelés Normalizálás 5 / 26 3

Megjegyzés: Minden felbontás után meg kell nézni, hogy a kapott relációk BCNF-ben vannak-e. Ehhez meg kell konstruálni F + S -et, ha S a vizsgált reláció: ez az F + R azon függéseibõl áll, amiknek mindkét oldala S-ben van. Ezeket a függéseket úgy kapjuk, hogy minden X S részhalmazra kiszámoljuk X + (F )-et és X Y pontosan akkor lesz benne F + S -ben, ha Y X + (F ) S. Általában nem igaz, hogy elég F -bõl kiválogatni azokat, amiknek mindkét oldala S-ben van. Pl.: Ha S = Tá Te D I, akkor (csak a nemtrivi függéseket feĺırva): = {Tá I Te; D I Te Tá; D I Tá Te; D I Te Tá} F + S Csima Judit Adatbáziskezelés Normalizálás 6 / 26

Megjegyzések még 3 attribútum esetén a BCNF tulajdonság csak úgy sérülhet, ha X Y, ahol X, Y egy-egy attribútum és X nem kulcs. Azt is mindig ellenõrizni kell, hogy a kapott relációkban mik a (szuper)kulcsok, hogy egy függésrõl el tudjuk dönteni, hogy sérti-e a BCNF-et vagy nem. Csima Judit Adatbáziskezelés Normalizálás 7 / 26

Függõség megõrzése BCNF-ekre bontás egy fogyatékossága: nehéz lehet ellenõrizni, hogy teljesülnek-e F függései (pl. beszúráskor). Mert lehet, hogy egy X Y függésnél X és Y attribútumai nem ugyanabban a részben vannak a felbontásnál. Ilyenkor a költséges kell, és ez sokszor elõfordulhat. Kéne egy olyan felbontás, amin könnyen lehet ellenõrizni a függéseket. Definíció Adott (R, F ) séma és ennek egy ρ = (R 1,..., R k ) felbontása. π ρ (F ) := {X Y F + i (1 i k) X, Y R i } + az F függéseinek vetítése a ρ felbontásra. ρ függõségõrzõ, ha π ρ (F ) = F +. Csima Judit Adatbáziskezelés Normalizálás 8 / 26

Megjegyzések π ρ (F ) F + persze mindig igaz. Ha a felbontás függõségõrzõ, akkor elég a darabokon ellenõrzni az oda eső függéseket és ha itt minden rendben van, akkor F minden függése igaz lesz az egészen. Csima Judit Adatbáziskezelés Normalizálás 9 / 26

Példa R(Város, Utca, Irányítószám) F = {VU I ; I V } Ez nem BCNF I V miatt. Miért kéne a függõségõrzés?: Ha felbontjuk = S(V, I ), Q(I, U) Beszúrunk 2-2 sort: S V I Nagykanizsa 8800 Nagykanizsa 8831 Q U I Kossuth 8800 Kossuth 8831 Noha S-ben és Q-ban oké minden, S Q-ban nem teljesül a VU I függés. Ez nem lett volna, ha függõségõrzõ lenne a felbontás. Csima Judit Adatbáziskezelés Normalizálás 10 / 26

Szomorú példa Szomorú példa ez: semelyik felbontása sem õrzi meg VU I -t, mert csak ez olyan függés, aminek jobb oldalán van I, azaz ha egy felbontás függõségõrzõ lenne, akkor egy tagjában kéne VUI -nek lennie, de az nem lenne valódi felbontás. = ennek nincs függõségõrzõ valódi felbontása, vagyis van olyan reláció, amit nem lehet függõségõrzõ módon BCNF-ekre szétszedni = felbontást BCNF-re nem feltétlenül lehet függõségõrzõ módon megcsinálni. Kellene egy gyengébb normálforma. Ebben lehet valamennyi redundancia, de legyen függõségõrzõ. Csima Judit Adatbáziskezelés Normalizálás 11 / 26

3NF Definíció Az (R, F ) séma A attribútuma prím (elsõdleges), ha szerepel valamelyik kulcsban. Kulcs helyett szuperkulccsal nem lenne sok értelme az elõbbi definíciónak, mert szuperkulcsban minden szerepel,. Definíció Az (R, F ) séma 3NF (harmadik normálformájú), ha tetszõleges nemtriviális X A F + függés esetén vagy X szuperkulcs vagy A prímattribútum. Csima Judit Adatbáziskezelés Normalizálás 12 / 26

BCNF vs. 3NF A definíció következménye: Minden BCNF séma egyben 3NF is. 3NF lehet redundáns, de nem nagyon. BCNF 3NF Irányítószámos példa Csima Judit Adatbáziskezelés Normalizálás 13 / 26

Felbontás 3NF-re Tétel Tetszõleges (R, F ) sémának van hûséges és függõségõrzõ felbontása 3NF sémákra. Mindjárt látjuk, de előbb kell egy új fogalom: Definíció A G függéshalmaz az F függéshalmaz fedése ha G + = F +.(Persze ilyenkor F is fedése G-nek.) Csima Judit Adatbáziskezelés Normalizálás 14 / 26

Minimális fedés Definíció A G függéshalmaz az F függéshalmaz minimális fedése, ha egyrészt fedése, másrészt (1) a G-beli függések X A alakúak, ahol A / X (A egy darab attribútum) (2) G-bõl nem hagyható el függés: (G \ {X A}) + G + (3) G-beli függések baloldalai minimálisak: X A G, Y X = Y A / G + Álĺıtás Tetszõleges F -nek van minimális fedése. Bizonyítás majd lesz mindjárt, de inkább lássuk most a főtétel bizonyítását. Csima Judit Adatbáziskezelés Normalizálás 15 / 26

Van jó felbontás 3NF-ekre (bizonyítás) Vegyük F egy minimális fedését: G = {X 1 A 1,..., X k A k } Legyen X egy kulcs és tekintsük a ρ = (X, X 1 A 1,..., X k A k ) = (R 0, R 1,..., R k ) felbontást. Álĺıtás: ez függõségõrzõ lesz, a tagok 3NF-ek és a felbontás hûséges. Csima Judit Adatbáziskezelés Normalizálás 16 / 26

ρ függõségõrzõ F + = G + és minden G-beli X i A i függés benne lesz R i -ben (ott ellenõrizhetõ). Csima Judit Adatbáziskezelés Normalizálás 17 / 26

A tagok 3NF-ek ρ-ban R 0 3NF: R 0 -ban nincs nemtriviális függés, mert különben X nem lenne kulcs, csak szuperkulcs = R 0 még BCNF is, tehát 3NF is Többi R i is 3NF: tegyük fel, hogy nem az, ekkor U B nemtriviális függés R i -ben, hogy U nem szuperkulcs R i -ben és B nem prímattribútum R i -ben (de U és B is R i -ben van). Ha B = A i, akkor U X i, de U X i, (mert különben U szuperkulcs lenne R i -ben) és így X i A i baloldala csökkenthetõ lenne G-ben U-ra. Ellentmondás, mert akkor G nem volt minimális fedés. Ha B A i = B X i és B nem prím R i -ben = X i nem kulcs R i -ben (de szuperkulcs) = Y X i kulcs R i -ben = Y A i fennáll = X i A i baloldala csökkenthetõ G-ben Y -ra, megint csak ellentmondás. Csima Judit Adatbáziskezelés Normalizálás 18 / 26

ρ hûséges: Higgyük el, nem bizonyítjuk. Csima Judit Adatbáziskezelés Normalizálás 19 / 26

Megjegyzések Elõfordulhat, hogy valamelyik X i A i már tartalmaz kulcsot. Ilyenkor a ρ = {X 1 A 1,..., X k A k } is jó felbontás már. 2NF már nem érdekes, 1NF kicsit érdekes, de nem foglalkozunk vele. Csima Judit Adatbáziskezelés Normalizálás 20 / 26

Minimális fedés Definíció A G függéshalmaz az F függéshalmaz minimális fedése, ha egyrészt fedése, másrészt (1) a G-beli függések X A alakúak, ahol A / X (A egy darab attribútum) (2) G-bõl nem hagyható el függés: (G \ {X A}) + G + (3) G-beli függések baloldalai minimálisak: X A G, Y X = Y A / G + Álĺıtás Tetszõleges F -nek van minimális fedése. Csima Judit Adatbáziskezelés Normalizálás 21 / 26

Minimális fedés készítése F -hez Bizonyítás: Algoritmust adunk, külön gondoskodunk minden pont teljesítésérõl. (1) X Y G, Y = A 1... A k = minden X A i -t beveszünk, ha A i X. (2) Minden X A G függésre kiszámoljuk Y := X + (G \ {X A})-t. Ha A Y, akkor X A elhagyható (mert kijön a többiből), különben nem. (3) Ellenõrizni kell, hogy X A baloldala minimális-e. X minden B elemére kiszámoljuky := (X \ {B}) + (G)-t. Ha A Y, akkor X A helyett vegyük be X \ {B} A-t. Ha egyik B-re se lesz ilyen, akkor X minimális. Megjegyzés: És persze a fenti három lépés során a függéshalmaz lezártja nem változik. Csima Judit Adatbáziskezelés Normalizálás 22 / 26

Példa minimális fedés kiszámolására R = (A, B, C, D) F = {AB CD; AC BD; C A; C B} (1) F = {AB C; AB D; AC B; AC D; C A; C B} (2) C B miatt AC B elhagyható és AB C és AC D miatt AB D elhagyható, de más nem, ezt végig lehet nézni. F = {AB C; AC D; C A; C B} (3) C A miatt AC D baloldaláról A elhagyható. F = {AB C; C D; C A; C B} Ez már minimális fedés. Csima Judit Adatbáziskezelés Normalizálás 23 / 26

A minimális fedés nem feltétlenül egyértelmû! Példa: R(A, B, C) F = {AB C; A B; B A} esetén jó minimális fedés lesz G 1 = {B C; A B; B A} és G 2 = {A C; A B; B A} is. Csima Judit Adatbáziskezelés Normalizálás 24 / 26

Példa 3NF-re bontásra R = (A, B, C, D, E) F = {AE BC; AC D; CD BE; D E} Ez nem 3NF, mert a kulcsok: semelyik egyelemû halmaz nem kulcs (csak D lehetne, de az õ lezártja csak DE), viszont kételemûek közül szuperkulcs lesz AC, AD, AE (A-nak benne kell lennie minden kulcsban, mert A nincs jobboldalon), AB viszont nem szuperkulcs. Ezek kulcsok is lesznek, mert egyik egyelemû se volt kulcs. Más kulcs nincs is, mert ha lenne legalább háromelemû halmaz, aminek a lezártja az egész, akkor abban A biztos benne van és legalább C vagy D vagy E is benne van, de akkor az már csak szuperkulcs lehet, mert tartalmaz kulcsot. Innen látszik, hogy a prímattribútumok: A, C, D, E, vagyis B nem az. Tehát a CD B függés rossz a 3NF szempontjából, mert CD nem szuperkulcs és B nem prím, szóval valamit kell Csima Judit Adatbáziskezelés Normalizálás 25 / 26

Példa tovább Csináljunk hát egy 3NF-ekre való függõségõrzõ, hûséges felbontást. (1) F = {AE B; AE C; AC D; CD B; CD E; D E} (2) AE C, AC D, CD B miatt AE B elhagyható és D E miatt CD E is elhagyható, de más nem, ezt végig lehet nézni F = {AE C; AC D; CD B; D E} (3) Semelyik baloldal nem csökkenthetõ, mert például A lezártjában nincsen benne E, és a többi is ugyanígy látszik. Vagyis F már minimális fedés. A minimális fedés alapján a jó felbontás: (AEC, ACD, CDB, DE) mivel kulcsot nem is kellett hozzávennünk, mert az már benne van az egyik tagban (pl. AE az elsõben). Csima Judit Adatbáziskezelés Normalizálás 26 / 26