Normálformák Adatbáziskezelés
Normálformák Normálforma: az egyed szerkezeti állapota NÉV SZAKKÉPZETTSÉG SZÜLETÉSI DÁTUM Nagy Zsolt Gépészmérnök közgazdász 52.02.16 Kiss Pál Lakatos 58.08.08
Normálformák Normálformák: 0.normáforma (0NF vagy N1NF) 1.normálforma (1NF) 2.normálforma (2NF) 3.normálforma (3NF)
0. normálforma NÉV SZAKKÉPZETTSÉG SZÜLETÉSI DÁTUM Nagy Zsolt R reláció 0. normálformában van, ha létezik olyan másodlagos attribútum, amely a kulcstól funkcionálisan független A táblázat ismétlődő ismereteket tartalmaz NÉV SZAKKÉPZETTSÉG SZÜLETÉSI DÁTUM Nagy Zsolt Gépészmérnök közgazdász 52.02.16 Kiss Pál Lakatos 58.08.08
1. normálforma R reláció 1. normálformájú, ha minden másodlagos tulajdonság funkiconálisan függ a kulcstól A táblázat minden sorában pontosan egy attribútumérték van
Az előző példa 1NF-ben: NÉV SZAKKÉPZETTSÉG SZÜLETÉSI DÁTUM Nagy Zsolt Gépészmérnök 52.02.16 Közgazdász Kiss Pál Lakatos 58.08.08
2. normálforma R reláció 2. normálformájú, ha 1-es normálformában van, és minden másodlagos attribútuma a reláció bármely kulcsától teljesen függ Megjegyzések Ha az R kulcsa egyetlen attribútumból áll, akkor 2NF típusú Ha nincsen R-ben másodlagos attribútum, akkor 2NF típusú
3. normálforma R reláció 3. normálformájú, ha 2-es normáformában van, és egyetlen másodlagos attribútuma sem függ tranzitíven valamely kulcstól
Több kulcsjelölt esete Az 1. normálformájú reláció Boyce-Codd normálformájú (BCNF típusú), ha minden generátora egyben kulcs is Megyjegyzések Csupakulcs esete ÜGYELET {ki,mikor} Több kulcsjelölt esete SZÁMLATÉTEL {szlaszám,sorszám,cikkszám,mennyi}
Normalizálás Cél: a tárolási és karbantartási káosz megszüntetése – veszteségmentesen Normalizálás – normálforma dekompozíció A kedvezőtlen normálformájú egyedet lebontjuk több kívánt normálformájú egyedre.
Autósbolt Dátum Alkatrész név Alkatrész kód Egységár Darab Összérték 88.02.03 Kuplung TX5 1500 2 Elosztófej XB-3 150 6 Kondenzátor ET-2 30 4 Fékhenger F-6 120 1 Összérték 4140 Befizetés 3140
0. lépés Legyenek a tulajdonságok : DÁT ANÉV AKÓD EÁR DB ÖÉRT BEFIZ A következő relációt állítjuk össze: AUTÓSBOLT {DÁT,ANÉV,AKÓD,EÁR,DB,ÖÉRT,BEFIZ}
Írjuk fel az adatbázist 1NF-ben DÁT ANÉV AKÓD EÁR DB ÖÉRT BEFIZ 88.02.03 Kuplung TX-5 1500 2 4140 3140 Elosztófej XB-3 150 6 Kondenzátor ET-2 30 4 Fékhenger F-6 120 1 88.02.04 4620 3620 3 88.02.05 3600 2600 Vízpumpa P-12 1100
Az AUTÓSBOLTban fennálló anomáliák DÁT ANÉV AKÓD EÁR DB ÖÉRT BEFIZ 88.02.03 Kuplung TX-5 1500 2 4140 3140 Elosztófej XB-3 150 6 Kondenzátor ET-2 30 4 Fékhenger F-6 120 1 88.02.04 4620 3620 3 88.02.05 3600 2600 Vízpumpa P-12 1100 bővités módosítás tőrlés
Kulcs = {DÁT,AKÓD} DÁT AKÓD DB ÖÉRT BEFIZ ANÉV EÁR
Tehát: A másodlagos attribútumok nemcsak a kulcstól függnek, hanem annak részhalmazaitól is (részleges függőségek) Van benne tranzitív függőség Az 1000 FT a függés
A felbontás sémája DÁT AKÓD DB ANÉV EÁR ÖÉRT BEFIZ
Felbontás DÁT ÖÉRT BEFIZ DÁT AKÓD DB AKÓD ANÉV EÁR NAPIFORG ELADÁS ALKATRÉSZ
NAPIFORG{DÁT,ÖÉRT,BEFIZ} 88.02.03 4140 3140 88.02.04 4620 3620 88.02.05 3600 2600 88.02.06 Ez a táblázat 2NF-ben van, de nincsen 3NF-ben
Bontsuk fel két táblázatra ÖÉRT BEFIZ DÁT ÖÉRT BEFIZETÉS ÁRBEVÉTEL
ÁRBEVÉTEL{DÁT,ÖÉRT} DÁT ÖÉRT 88.02.03 4140 88.02.04 4620 88.02.05 3600 88.02.06
BEFIZETÉS{ÖÉRT,BEFIZ} 4140 3140 4620 3620 3600 2600
ALKATRÉSZ{AKÓD,ANÉV,EÁR} TX-5 KUPLUNG 1500 XB-3 ELOSZTÓFEJ 150 ET-2 KONDENZÁTOR 30 F-6 FÉKHENGER 120 P-12 VÍZPUMPA 1100
ELADÁS{DÁT,AKÓD,DB} DÁT AKÓD DB 88.02.03 TX-5 2 XB-3 6 ET-2 4 F-6 1 88.02.04 3 88.02.05 P-12
A négy táblázat mindegyike 3NF-ben van Megmaradtak a funkcionális függőségek Megszüntettük a redundás adattárolást Eltüntettük a karbantartási anomáliákat
Az adatmodell dokumentálása Adatbázis neve, célja, környezete Diagram (a kapcsolatok ábrázolása ) Egyedek listája (miben mit tárolok) Kapcsolatok felsorolása Rekordleírás Minden tulajdonság szerepe Opcionalitás, egyediség Értékek,korlátozások Tulajdonságok (származtatás)
Az ÉTTEREM adatbázis normalizálása A rendszer ismertetése: Az étteremben különféle ételeket és italokat rendelhetünk, amelyeket bizonyos nyersanyagokból recept szerint készítenek el A fogyasztás végén számla szerint fizetünk
Az adatbázis létrehozása RECEPT {azonosító,elnevezés,ár,tipus, tipnév,akód,név,egysár,mértegys, szüksmenny} SZÁMLA {szlaszám,dátum,azonosító, elnevezés,ár,rendmenny,érték,végösszeg}
Lépések Mintasorok készítése Kulcsok meghatározása Normalizálás
RECEPT kulcsa = {azonositó, akód} Igazak az alábbi funkcionális függőségek {azonosító}{elnevezés,ár,tipus,tipnév} {akód}{név,egysár,mértegys} {azonosító,akód}{szüksmenny}
SZÁMLA kulcsa = {szlaszám, azonosító} Igazak az alábbi funkcionális függőségek {szlaszám,azonosító}{rendmenny} {szlaszám}{dátum,végösszeg} {azonosító}{elnevezés,ár}
Megjegyzések érték = ár * rendmenny Számolható, nem tároljuk végösszeg =Σ érték Számlaszámra összegezve Számolható, de kerekítve tároljuk a pénzügyi mozgásokat
A teljes függőségek alapján A RECEPT 3 relációra bomlik A SZÁMLA 3 relációra bomlik 1 reláció közös, hiszen 1:1 kapcsolatban állnak egymással
A relációk ÉTLAP {azonosító,elnevezés,ár,tipus, tipnév} ANYAG {akód,név,egysár,mértegys} RECEPT {azonosító,akód,szüksmenny} SZÁMLAFEJ {szlaszám,dátum,végösszeg} ÉTLAP {aznosító,elnevezés,ár} SZÁMLATÉTEL{szlaszám,azonosító, rendmenny}
Ezzel 2NF-ra hoztuk mindegyik táblát De van egy tranzitív függés az ÉTLAP táblában: {azonosító}{tipus} és {tipus}{tipusnév} {azonosító}{tipnév} A többi tábla 3NF-ban van
A tranzitív függőség megszüntetése ÉTLAP {azonosító, elnevezés, ár, tipus} FAJTA {tipus,tipnév} Szótárfájl
Minden nyíl az N:1 kapcsolatot jelenti Kapcsolati ábra Minden nyíl az N:1 kapcsolatot jelenti
tipus FAJTA tipnév azonosító ÉTLAP elnevezés ár tipus szlaszám SZÁMLAFEJ dátum végösszeg akód ANYAG név egysár mértegys azonosító akód RECEPT szüksmenny szlaszám azonosító SZÁMLATÉTEL rendmenny
Technikai adatok Az ÉTLAP van logikai típusú tulajdonsága A SZÁMLAFEJ kifizet logikai típusú tulajdonsága
Bővithetőség BESZERZÉS {akód,dátum,beár,menny} ANYAG {akód,név,egysár,mértegys, készlet} SZEMÉLY {kódszám,neve,poszt} BEOSZTÁS {poszt,jelentés} CSAPAT {dátum,kódszám}
Bővithetőség {dátum,sorszám}{kódszám} Ahol a sorszám az asztal egyedi azonosítója Nem igaz viszont, hogy a dátum és a kódszám meghatározná a sorszámot
Az új egyedek ASZTAL{sorszám,hányfős} KISZOLGÁL{dátum,sorszám,kódszám} Ezért a számlafej így módosul SZÁMLAFEJ{szlaszám,dátum,végösszeg,sorszám}
Áttekintő kapcsolati ábra FAJTA ÉTLAP RECEPT ANYAG BESZEREZ SZTÉTEL SZFEJ SZEMÉLY BEOSZT ASZTAL KISZOLG CSAPAT
A RELÁCIÓS ALGEBRA
Meghatározás A relációs adatbázis kezelő nyelvek lekérdezési lehetősége A relációs algebra műveletein alapszik Unió Különbség Descartes szorzat Projekció Szelekció Hányados Metszet Összekapcsolás Természetes összekapcsolás
Műveletek: Unió Unió (jele: ) Legyen R és S két n-ed fokú reláció uniójuk az R S szintén n-ed fokú reláció Sorai vagy az R-nek vagy az S-nek vagy mindkettőnek elemei R A B C a b c b d e f c b S D E F b d e RS . a b c b d e f c b =
Műveletek: Különbség Külünbség (jele: – ) Legyen R és S két n-ed fokú reláció R – S különbsége szintén n-ed fokú reláció Sorai az R-nek elemei de az S-nek nem R A B C a b c b d e f c b S D E F b d e R-S . a b c f c b - =
Műveletek: Descartes-szorzat Descartes-szorzat (jele: × ) Legyen R n-ed , S m-ed fokú reláció Descartes-szorzatuk az az (n+m)-ed fokú R × S Minden elem első részét az R-ből, második részét pedig az S-ből vesszük R A B C a b c b d e f c a S D E F b d e F c b RxS A B C D E F a b c b d e a b c f c b b d e b d e b d e f c b f c a b d e f c a f c b x =