190 likes | 356 Views
Adatbázis rendszerek I. Adatstrukúra helyessége (normalizálás). Általános Informatikai Tsz. Dr. Kovács László. Adatstruktúra helyessége. A tervezés számos hibalehetőséget rejt magában. Hibaforrások: nem megfelelő relációkat hozunk létre nem megfelelő mezőket alkotunk meg
E N D
Adatbázis rendszerek I Adatstrukúra helyessége (normalizálás) Általános Informatikai Tsz. Dr. Kovács László
Adatstruktúra helyessége A tervezés számos hibalehetőséget rejt magában • Hibaforrások: • nem megfelelő relációkat hozunk létre • nem megfelelő mezőket alkotunk meg • nem megfelelő a mezők elnevezése • nem a megfelelő mezők kerülnek egy relációba • nem megfelelő a relációk kapcsolatának megvalósítása • nem megfelelő a mezők adattípusa • nem megfelelő a megadott integritási feltétel rendszer KL
Adatstruktúra helyessége Mező elnevezéshez kapcsolódó hibák nyilt logikai átfedés homonima TILOS! DOLGOZO(nev,cim,fonok,f_cim,fizetes,telephely) OSZTALY(nev,telephely,vezeto,v_cim,fizetes) PROJEKT(nev,d_nev,megrendelo,fizetes,mcim) KL
Adatstruktúra helyessége Mező elnevezéshez kapcsolódó hibák szinoníma technikai homonima Kerülendő! TILOS ?? DOLGOZO(nev,cim,fonok,f_cim,fizetes,telephely) OSZTALY(nev,telephely,vezeto,v_cim,fizetes) PROJEKT(nev,d_nev,megrendelo,fizetes,mcim) KL
Adatstruktúra helyessége Mező elnevezéshez kapcsolódó hibák Egyértelmű elnevezések legyenek! Inkonnektivitás Logikai átfedés hiánya Teljes megnevezéseket használjunk DOLGOZO(nev,cim,fonok,f_cim,fizetes,telephely) OSZTALY(nev,telephely,vezeto,v_cim,fizetes) PROJEKT(nev,d_nev,megrendelo,fizetes,mcim) KL
Adatstruktúra helyessége Redundancia: adatelemek többszörös, ismételt letárolása következmény:Anomáliák - beszúrási anomália - módosítási anomália - törlési anomália - inkonzisztencia dkod uticél dnév dcím befizetes 1 Eger Peter Miskolc 3 3 Eger Antal Baja 5 1 Ózd Peter Miskolc 2 KL
Adatstruktúra helyessége Függőségek : mezők közötti érték kapcsolatok leírása Funkcionális függőség FD minden A értékhez maximum egy B érték rendelhető A -> B (A,B R) ország zászló RSZ -> TIPUS (DKOD, UTICEL) -> BEFIZETES DKOD -> DNEV DKOD -> DCIM KL
Adatstruktúra helyessége Az FD-k között következtetési szabályok, függőségek vannak Armstrong axiómák B A A B A B AC BC A B, B C A C Egyéb szabályok A BC A B A B, A C A BC bizonyítás az axiómákból ! A C AB BC, A B AA AB, AA = A A AB, AB BC A BC KL
Adatstruktúra helyessége Redundancia oka : nem kívánatos FD Egy R(A1,..,A2) esetén ha létezik Ai Aj ahol Ai ismétlődik, akkor redundancia lép fel Ha Ai nem ismétlődhet, nincs redundancia (pl. kulcsból kiinduló függőségek) dkod uticél dnév dcím befizetes 1 Eger Peter Miskolc 3 3 Eger Antal Baja 5 1 Ózd Peter Miskolc 2 KL
Normalizálás Normalizálás folyamata Normalizálás: művelet sorozat a redundanciát okozó FD-k megszüntetésére A normalizálás egymásra épülő normálfomák alakjában jelenik meg FD-k feltárása 1 NF 2 NF 3 NF BCNF 4 NF 5 NF 5NF 4NF BCNF 3NF 2NF 1NF KL
Normalizálás Normalizálási lépések 1NF: Létezzen kulcs Minden mező elemi legyen 2 NF 1 NF Ne legyen részkulcsból kiinduló FD dkod uticél dnév dcím befizetes 1 Eger Peter Miskolc 3 3 Eger Antal Baja 5 1 Ózd Peter Miskolc 2 KL
Normalizálás Veszteségmentesség: a résztáblákból előállítható az alaptábla Heath tétele: R(A,B,C) adott és A B akkor (AB , AB) veszteségmentes Elegendőség és nem szükségesség kifejezése UTAK( DKOD, UTICEL, DNEV, DCIM, BEFIZETES) DKOD -> (DNEV, DCIM) (DKOD, DNEV, DCIM , DKOD,UTICEL, BEFIZETES) KL
Normalizálás 3 NF 2 NF Nem létezik tranzitív függőség nem kulcs mezőhöz AUTO(RSZ, TIPUS, TULAJ, T_CIM, GYARTO, GY_CIM) AUTO1(RSZ, TIPUS, TULAJ) TULAJ(TULAJ, T_CIM) GYARTO(GYARTO, GY_CIM) TIPUS(TIPUS, GYARTO) A hibás FD-ket dekompozícióval vesszük ki a relációból KL
Normalizálás Dekompozició vizsgálata ..; AUTO(RSZ, TIPUS, GYARTO) felbontása: AUTO1(RSZ, TIPUS) AUTO2(RSZ, GYARTO) Megfelel a Heath tételének, de nem jó, mert nem független a két tábla (egyik értékei függnek a másiktól) Rissanen tétele: A (AB , AB) felbontás akkor független, ha - R(A,B,C) minden FD-je származtatható RAB és RAC FD-iből - A az RAB vagy RAC jelölt kulcsa KL
Normalizálás Egyes esetekben 3NF nem megfelelő BCNF (Boyce-Codd normálforma) Függőség csak jelölt kulcsból indulhat ki BCNF átfogja 2NF-et A kulcsba mutató FD-t is kiküszöböli 3NF nem fogja magába BCNF-et BCNF nem fogja magába 3NF-et OKTAT(tanar, diak, targy) : nem BCNF de atomi KL
Normalizálás Többértékű függőség (MVD) jele : A ->> B R(A,B,C) -ben A ->> B, ha (ai,bi)-hez rendelhető {ci} csak (ai)-től függ BARAT(nev, hobby,etel) nev hobby etel Peter foci bab Peter foci szilva nev hobby Peter tenisz bab nev hobby Peter bab Peter tenisz szilva Peter szilva Peter foci Gabi futas alma Gabi alma Peter tenisz Gabi futas fagyi Gabi futas Gabi fagyi A B C A = B = C KL
Normalizálás MVD szerepe 4 NF Minden MVD legyen egyben FD is Fagin tétele: R(A,B,C) adott, akkor és csak akkor lesz (AB , AC) veszteségmentes, ha A ->> B | C Szükségesség kifejezése csak egy érték rendelődjön minden A értékhez KL
Normalizálás Magasabb normálforma Join függőség (JD): egy R séma (R1,R2,..,Ri) függségben van, ha megegyezik R1,R2,..,Ri join-jával 5 NF Minden JD az FD-n alapszik JD MVD FD KL