Normálformák Normalizálás ADATBÁZISKEZELÉS ÉS KÖNYVTÁRI RENDSZERSZERVEZÉS 1 / 2
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 Lakatos
52.02.16
Kiss Pál
58.08.08
Normálformák ◦ 0. normáforma (0NF vagy N1NF) ◦ 1. normálforma (1NF) ◦ 2. normálforma (2NF)
◦ 3. normálforma (3NF)
0. normálforma 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 Lakatos
52.02.16
Kiss Pál
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
Nagy Zsolt
Közgazdász
52.02.16
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
BCNF típusú normálforma 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
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
88.02.03
Elosztófej
XB-3
150
6
4140
3140
88.02.03
Kondenzátor
ET-2
30
4
4140
3140
88.02.03
Fékhenger
F-6
120
1
4140
3140
88.02.04
Fékhenger
F-6
120
1
4620
3620
88.02.04
Kuplung
TX-5
1500
3
4620
3620
88.02.05
Elosztófej
XB-3
150
2
3600
2600
88.02.05
Vízpumpa
P-12
1100
3
3600
2600
Az AUTÓSBOLTban fennálló anomáliák DÁT
ANÉV
AKÓD
88.02.03
Kuplung
TX-5 bővités
EÁR
DB
ÖÉRT
BEFIZ
1500
2
4140
3140
88.02.03
Elosztófej
XB-3
150
6
4140
3140
88.02.03
Kondenzátor
ET-2
30
4
4140
3140
88.02.03
Fékhenger
F-6
120
1
4140
3140
88.02.04
Fékhenger
F-6
120
1
4620
3620
88.02.04
Kuplung
TX-5
1500
3
4620
3620
módosítás
88.02.05
Elosztófej
XB-3
150
2
3600 tőrlés
2600
88.02.05
Vízpumpa
P-12
1100
3
3600
2600
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 ÖÉRT BEFIZ
ANÉV EÁR
Felbontás DÁT
DÁT AKÓD
AKÓD
ÖÉRT BEFIZ
DB
ANÉV EÁR
NAPIFORG
ELADÁS
ALKATRÉSZ
NAPIFORG{DÁT,ÖÉRT,BEFIZ} DÁT
ÖÉRT
BEFIZ
88.02.03
4140
3140
88.02.04
4620
3620
88.02.05
3600
2600
88.02.06
4620
3620
Ez a táblázat 2NF-ben van, de nincsen 3NF-ben
Bontsuk fel két táblázatra DÁT
ÖÉRT
ÖÉRT
BEFIZ
ÁRBEVÉTEL
BEFIZETÉS
ÁRBEVÉTEL{DÁT,ÖÉRT} DÁT
ÖÉRT
88.02.03
4140
88.02.04
4620
88.02.05
3600
88.02.06
4620
BEFIZETÉS{ÖÉRT,BEFIZ} ÖÉRT
BEFIZ
4140
3140
4620
3620
3600
2600
ALKATRÉSZ{AKÓD,ANÉV,EÁR} AKÓD
ANÉV
EÁR
TX-5
KUPLUNG
1500
XB-3
ELOSZTÓFEJ
ET-2
KONDENZÁTOR
F-6
FÉKHENGER
120
P-12
VÍZPUMPA
1100
150
30
ELADÁS{DÁT,AKÓD,DB} DÁT
AKÓD
DB
88.02.03
TX-5
2
88.02.03
XB-3
6
88.02.03
ET-2
4
88.02.03
F-6
1
88.02.04
F-6
1
88.02.04
TX-5
3
88.02.05
XB-3
2
88.02.05
P-12
3
A négy táblázat mindegyike 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
3NF-ben van
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 1. Mintasorok készítése 2. Kulcsok meghatározása 3. 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
Kapcsolati ábra MINDEN NYÍL AZ N:1 KAPCSOLATOT JELENTI
azonosító
tipus ÉTLAP FAJTA tipnév
akód ANYAG név egysár mértegys
szlaszám SZÁMLAFEJ
elnevezés ár tipus
dátum végösszeg
azonosító akód
szlaszám azonosító
RECEPT
SZÁMLATÉTEL
szüksmenny
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}
FAJTA
Áttekintő kapcsolati ábra
É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ó (jele: )
Unió
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
ABC abc bde fcb
S
DEF bde
RS
=
. abc bde fcb
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
ABC abc bde fcb
S
-
DEF bde
R-S
=
. abc fcb
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 RxS R
ABC abc bde fca
S
x
DEF bde Fcb
=
ABCDEF a b cb d e a b c f cb b d e b d e b de f c b f c a b d e f c a f c b