Adatbáziskezelés Indexek, normalizálás NZS 1
Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis a kulcs mező és a fájlon belüli pozíció között nincs kapcsolat. A kulcs szerinti keresést nem segíti semmi. Tehát a rekordokat sorban, egymás után át kell nézni. A keresés addig tart, amig meg nem találjuk a keresett rekordot a kulcs alapján, vagy a végéig, ha nincs benne. NZS 2
Fájlszervezés módjai Szekvenciális, kulcs szerinti rendezés: A rekordok a fájlban kulcs mező szerint rendezve helyezkednek el. A szekvenciális tárolás előnye, hogy nem kell a fájl végéig keresni, csak addig, amig rendezettségben le nem hagyta a keresés a kulcs értékét. Növekszik a keresés hatékonysága, viszont növekszik a karbantartásra fordított idő is. A fizikai szekvenciánál a rekordok fizikai helye tükrözi a sorrendet. Beszúrás esetén rendezni kell a fájlt! A logikai szekvenciánál a fájlok a letárolás sorrendjében helyezkednek el, a rendezettséget pedig mutatók segítségével érik el. Beszúrásnál csak a mutatókat tartalmazó listát kell rendezni. NZS 3
Fájlszervezés módjai Indexelt struktúra: A keresés során a keresendő értéket tartalmazó mező a fontos, nem a teljes rekord. Ezért a rendezettséget elegendő, csak az egyes mező(k) szempontjából fenntartani, pl. a kulcs mező. Az index szerkezetek arra alkalmasak, hogy a táblától különálló kisebb adatszerkezetben tárolják a keresés szempontjából fontos mező értékeit rendezve. Kiegészítve a rekord fájlon belüli helyének mutatójával. A kulcs megtalálásával megkapjuk a keresett rekord helyét a fájlban. NZS 4
Fájlszervezés módjai Indexszekvenciális (ISAM) szerkezet: a rekordok fizikailag rendezettek, az indexlistában elegendő minden k. rekordot felvenni. Hierarchikus indexstruktúra: a felül elhelyezkedő listából nem közvetlenül a rekordra. Hanem egy újabb indexlistára történik hivatkozás. Ilyen pl. a B-fa (B balanced - kiegyensúlyozott) gráfszerkezet. A levél listák tartalmazzák a rekord mutatókat. Minden rekord közel azonos idő alatt érhető el. A fa szervezés miatt gyors a keresés. Hashing index-szerkezet: a kulcsértékből egy hash() fgv segítségével határozható meg a fizikai pozíció. Pl. num. Kulcsok esetén: h(x) = x mod n. Ahol x a kulcs és n a hash tábla rekeszeinek száma. NZS 5
Index Az index szerkezet a táblában tárolt adatok gyors és hatékony elérését szolgálják. Az index struktúrában a keresés alapját szolgáló indexkulcs és a hozzá tartozó rekord pozíciójának megadása található. Az indextábla előnyös, mert gyorsítja a keresést, de az elsődleges tábla módosításai során az index táblát is karban kell tartani. Ez pedig költséggel jár. Indexeket akkor érdemes használni, ha nagyméretű a tábla, vagy adott mező szerint sokat kell keresni, illetve kevés karbantartási (beszúrás, törlés, módosítás) művelet szükséges. NZS 6
Redundancia A helyes tábla szerkezet kialakítása elsődleges fontosságú az adatbázis létrehozása során. Helytelen táblaszerkezet során az adatok redundánsan, ismétlődve tárolódhatnak. Ez pedig különböző hibákat (anomáliákat) okozhat: Beszúrási anomália: amikor egy rekord beszúrásakor felesleges, már letárolt adatokat is újra fel kell vinni. Módosítási anomália: amikor egy adat módosításához több helyen is módosítani kell az adatbázisban. Törlési anomália: azt jelenti, hogy egy adatelem törlésekor olyan adatok is törlődnek, amikre még szükség lenne. Ezek az anomáliák abból származnak, hogy nem összetartozó mezők szerepelnek egy relációs sémában. NZS 7
Példa relációséma, reláció Vállalat(osztály, osztcím, osztvez, osztvcím, beosztott, beosztottcím, végzettség) Osztály Osztcím Osztvez Osztvcím Beosztott Beosztcím Vegzettség Tervezés Budapest A.B. Pipacs u. C.D. Rózsa u. Informatika Tervezés Budapest A.B. Pipacs u. C.D. Rózsa u. Közgazdász Tervezés Budapest A.B. Pipacs u. E.F. Tulipán u. Gépész Értékesítés Miskolc G.H. Kankalin u. I.J. Rózsa u. Közgazdász Értékesítés Miskolc G.H. Kankalin u. K.L. Hóvirág u. Jogász NZS 8
Funkcionális függőség - FD Functional Dependency Egy relációs sémába azok a mezők tartoznak, amelyek között összetartozási viszony van. Ezt mezők közötti függőségnek is nevezzük. A legfontosabb a funkcionális függőség, amely két mező vagy mezőcsoport között lép fel, a következő jelentéssel: A B attribútum funkcionálisan függ az A attribútum csoporttól, azaz A meghatározza B -t (jele: A B), ha az A minden értékéhez a B maximum egy értéke kapcsolható. Másként megfogalmazva: Amennyiben az A attribútum meghatározza a B attribútumot, akkor egy reláció bármely két sora esetén, ha az A attribútumok értékei megegyeznek, akkor a B attribútumok értékei is szükségszerűen megegyeznek. NZS 9
Függőségek a példa relációban Osztály osztcím Osztály osztvez Osztvez osztvcím Osztály osztvcím (beosztott, osztály) beosztcím (oszátály, osztvez) osztvcím (beosztott, osztály, osztcím) beosztott (osztvez, beosztott) beosztott Vannak olyan függőségek, amelyek meghatároznak más függőségeket. Vannak olyanok amelyek kevésbé fontosak. NZS 10
Triviális függőségek Nem lényeges függőségek azok, amelyek más függőségekből levezethetők. Ezeket az Armstrong-axiómák fogalmazzák meg: Triviális függőség: ha A B => A B Bővítési szabály: ha A B => CA CB Tranzitivitási szabály: ha A B és B C => A C NZS 11
Helyes séma kialakítása A funkcionális függőségek felderítése nagy segítséget nyújt a helyes séma kialakítása során. Ugyanis a funkcionális függőségekkel meghatározható a helyes séma is, mert ha egy ismétlődő értékű mezőből FD indul ki, akkor az FD definíciója alapján a függő mezőnek is ismétlődnie kell. Tehát a redundancia oka: Adott R(A 1, A 2,, A n ) séma és a benne lévő A i A j FD; ezután ha A i ismétlődik, akkor A j is ismétlődik! Ez okozza a redundanciát. A helyes séma kialakítása a normalizálás lépéseivel valósítható meg. NZS 12
Normalizálás A normalizálás célja az olyan A i A j függőségek megszüntetése, ahol az A i ismétlődhet. Ezt két módon érhetjük el: Vagy ne legyen függőség, Vagy az A i ne ismétlődhessen. Általánosságban mondható, hogy FD csak kulcsból induljon ki! NZS 13
Első normálforma 1NF Első normálformában van a relációs séma, ha minden mezője funkcionálisan függ a kulcsmező csoporttól. Vagyis léteznie kell egy kulcsnak, és minden más attribútumnak ettől a mezőtől kell függenie. Ez megkívánja,hogy legen kulcsa a relációnak és minden mezője atomi értéket hordozzon. Példa relációs séma felbontás után: V1(osztály, osztcím, osztvez, osztvcím, beosztott, beosztcím) Végzettség(beosztott, osztály, végzettség) NZS 14
Második normálforma 2NF Második normálformában van a relációs séma, ha az 1NFt teljesíti, és ezen felül minden nem kulcs mező a teljes kulcstól függ, de nem függ a kulcs bármely valódi részhalmazától. A 2NF-t szintén a reláció feldarabolásával lehet elérni. Példa relációs séma V1 feldarabolása után: V2(osztály, osztvez, osztvcím, osztcím) Beosztott(osztály, beosztott, beosztcím) NZS 15
Harmadik normálforma 3NF Harmadik normálformában van a relációs séma, ha teljesíti a 2NF-t és ezenkívül igaz, hogy nem áll fenn tranzitív függőség. Ekkor a kulcs a köztes mezőn keresztül, tranzitíven határozná meg a másik mező értékét. Példa relációs séma V2 felbontása: Osztály(osztály, osztcím, osztvez) Vezető(osztvez, osztvcím) NZS 16
Boyce-Codd normálforma - BCNF Boyce-Codd normálformában van a reláció, ha minden függőség csak jelölt kulcsból indul ki. Ez a 3NF általánosítása azzal, hogy egy nem kulcs mezőből valamely kulcs mezőbe sem indulhat függőség. NZS 17