ADATBÁZIS KEZELÉS – Alapfogalmak Előadó: Németh Zoltán
Mi az adatbázis? Az adatbázis az adatok és a köztük lévő összefüggések rendszere, amelyet egymás mellett tárolunk. Az adatbázis tágabb értelemben egy olyan adathalmaz, amelynek elemei – egy meghatározott tulajdonságuk alapján – összetartozónak tekinthetők. Egy meghatározott témakörrel kapcsolatos információk lehetnek például a vevői megrendelések, számlázási vagy készlet-nyilvántartási adatok stb.
Miért használjunk adatbázist? Adatbázisban tárolhatunk és kezelhetünk nagy mennyiségű, azonos szerkezetű adatot. Az egymással összefüggő táblák adatait különféle szempontok alapján rendezhetjük, szűrhetjük, csoportosíthatjuk.
Adatbázis kezelő rendszer (DBMS - Database management system) Az adatbázis-kezelő rendszer olyan program, illetve programcsomag, amely lehetővé teszi az adatbázisok kezelését, az azokon végrehajtható műveletek (adatok lekérdezése, módosítása, törlése, az adatbázis karbantartása) elvégzését. Az adatbázis-kezelőknek meg kell oldani az adatok rendezését, a köztük lévő kapcsolat nyilvántartását, az adatokhoz való hozzáférés szabályozását, az adatok védelmét, az integritás megőrzését, az adatok módosíthatóságát, lekérdezését, különféle szempontok szerinti kigyűjtését, válogatását és egyéb statisztikai funkciókat is.
Adatbázis kezelő rendszerrel kapcsolatos elvárásaink biztosítsa nagy mennyiségű adat hatékony kezelését, egyszerre több felhasználó is használhassa, őrizze meg az adatok integritását, feleljen meg a megadott szabályoknak, nyújtson adatvesztés elleni védelmet, tegye lehetővé az egyes felhasználók hozzáférési jogainak szabályozását, továbbfejleszthető legyen.
A világ legnagyobb adatbázisai (2007-es becslés) Sorszám Név Ország Felhasználási cél 1. Klímaadatok Világközpontja (WDCC) – a Max Planck Intézet tartja fenn Németország Tudományos kutatás 2. Az USA Nemzeti Energiakutató Tudományos Számítóközpontja (NERSC) USA 3. AT&T Távközlési szolgáltató 4. Google Internetes kereső 5. Sprint 6 ChoicePoint Kormányzati, közösségi és üzleti jellegű információk megosztása 7. YouTube Videomegosztás 8. Amazon Kiskereskedelem 9. CIA – az USA központi hírszerző ügynöksége Titkosszolgálat 10. USA Kongresszusi Könyvtár Nemzeti Könyvtár
Az adatmodell Az adatmodell egyértelműen meghatározza az adatbázis szerkezetét, magában foglalja az adatok típusát, kapcsolatát, a korlátozó feltételeket és az adatkezelési műveleteket is. Az adatmodell mindig szerkezeti és műveleti részből tevődik össze. Az adatbázisok jellegét, típusát, fajtáját az adatbázis által megvalósított, illetve támogatott adatmodellel/adatmodellekkel szokás megkülönböztetni.
Hierarchikus adatmodell A hierarchikus adatmodell szerkezetét gráffal adjuk meg, azon belül is fával. A csomópontok itt is egyedeket jelentenek és a nyilak a kapcsolatokat fejezik ki.
Hierarchikus adatmodell
Hálós adatmodell A hierarchikus adatmodell továbbfejlesztett változata, a bonyolultabb kapcsolatok ábrázolását már jobban lehetővé teszi. A hierarchikushoz képest itt már nem csak egy szülőhöz tartozhat több gyerek, de egy gyereknek is lehet több szülője. Az egyedek között tetszőleges kapcsolatok építhetők ki. A háló tetszőlegesen nagy méretű lehet, ábrázolása több, egymásra hierarchikusan felépülő kisebb egységekkel, setekkel történik. (set = Kétszintű fa amelynek gyökéreleme a tulajdonos, és levélelemei a tagok.)
Hálós adatmodell
Relációs adatmodell A relációs adatmodellben az egyedet egy táblázattal adjuk meg, a táblát oszlopai a tulajdonságok. A táblázat sorai az egyed értékei (vagyis a táblázat maga az egyedhalmaz). A táblázat egy-egy sorát a tulajdonságok konkrét értékei adják. Az adatbázisokat több táblázattal adjuk meg (minden tábla egy egyed-halmaz), de a táblázatok (tehát az egyedek) közötti kapcsolatokat nem definiáljuk az adatmodell felírásakor. Ez nem azt jelenti, hogy nincsen közöttük kapcsolat, de ezeket a kapcsolatokat például egyszerűen az fejezi ki, hogy két táblának van közös oszlopa (mindkét táblában szerepel ugyanaz a tulajdonság).
Relációs adatmodell A relációs adatmodellben az adatokat egymással logikai kapcsolatban álló táblákba rendszerezzük. Egy tábla oszlopainak és sorainak a következő feltételeknek kell megfelelniük: minden oszlopnak egyértelmű neve van, minden sorban ugyanazok az oszlopok vannak, az oszlopokban található adatok meghatározott értéket vehetnek fel, az oszlopok soronként csak egy értéket vehetnek fel, a táblát a neve egyértelműen azonosítja.
Relációs adatmodell Ez a legelterjedtebb adatmodell, pár példa: MySQL Microsoft SQL DB2 SQLite
Objektumorientált adatmodell Olyan adatbázis, amely intelligens elemekből épül fel. Az intelligencia itt azt jelenti, hogy az egyes adatbázis elemek (objektumok) „tudják”, hogy kik ők, mire használhatók, s miként kapcsolódnak a többi adatbázis-elemhez. Például: PostgreSQL, Oracle
Tábla A tábla a logikailag összetartozó adatokat foglalja össze. A tábla oszlopokból és sorokból áll, amelyeket mezőknek, illetve rekordoknak nevezünk.
Rekord A rekord az adatbázis egy sora. Egy rekordban tároljuk az egymással összefüggő adatokat.
Mező A mező az adatbázis egy oszlopa, amelyben az egyedek tulajdonságértékeit tároljuk.
Egyed Az elemi adatok a tábla celláiban szereplő értékek, amelyek az egyed konkrét tulajdonságai. Az egyed az, amit le akarunk írni, amelynek az adatait tároljuk és gyűjtjük az adatbázisban. Az egyedet idegen szóval entitásnak nevezzük. Egyednek tekinthetünk például egy személyt.
Egyed Egy adatmodellben valamennyi egyedet egyenként véges számú tulajdonsággal írunk le. Ezek a tulajdonságok együttesen alkotják az egyed belső szerkezetét, és az egyed belső tulajdonságainak hívjuk. Az egyedek kapcsolatainak összességét az egyed külső tulajdonságoknak hívjuk. Az attribútum (vagyis tulajdonság) az egyed valamely jellemzője. Az egyed az attribútumok összességével jellemezhető. Egy személy egy jellemzője lehet például a neve.
Egyed Az egyedre vonatkozóan megadott tulajdonságok összességét egyedtípusnak nevezzük. Egy személy leírható például a nevével, életkorával, testmagasságával, a szeme és haja színével együttesen. Az egyedre vonatkozóan megadott konkrét tulajdonságokat egyed-előfordulásnak nevezzük. Egy egyed-előfordulás például Kis Ede, aki 29 éves, 183 cm magas, kék szemű, barna hajú.
Reláció A reláció nem más mint egy táblázat, a táblázat soraiban tárolt adatokkal együtt. Az egyes relációkat egyedi névvel látjuk el. A relációk oszlopaiban azonos mennyiségre vonatkozó adatok jelennek meg. Az oszlopok névvel rendelkeznek, melyeknek a reláción belül egyedieknek kell lenniük, de más relációk tartalmazhatnak azonos nevű oszlopokat. A reláció soraiban tároljuk a logikailag összetartozó adatokat. A reláció sorainak sorrendje közömbös, de ne A relációktól általában megköveteljük, hogy ne tartalmazzanak más adatokból levezethető vagy kiszámítható információkat.m tartalmazhat két azonos adatokkal kitöltött sort.
Funkcionális kapcsolat Adatok között akkor áll fenn funkcionális kapcsolat, ha egy vagy több adat konkrét értékéből más adatok egyértelműen következnek. Személyi szám -> Név Személyi szám -> Név, Születési idő, stb.
Funkcionális kapcsolat Az is előfordulhat, hogy két attribútum kölcsönösen függ egymástól. Férj személyi száma <-> Feleség személyi száma Összetett meg határozójú függőségről beszélünk, ha több adat szükséges más adatok azonosításához. Hely, Idő -> Hőmérséklet
Adatok közötti többértékű függőség Az adatok között fennálló kapcsolatok közül nem mindegyik fejezhető ki a funkcionális függőség segítségével. Például minden embernek lehet több szakmája, illetve ugyanazzal a szakmával több ember is rendelkezhet. Ebben az esetben egyik irányban sincs egyértelmű függőség. Ez egy többértékű függőség, az egyik attribútumhoz egy másik attribútum csoportja, halmaza kapcsolódik. Személyi szám ->> Szakma Személyi szám ->> Szakma , Oklevél kelte
A funkcionális- és többértékű függőség kapcsolata A funkcionális és a többértékű függőség között kapcsolat van. Nagyon gyakran ugyanazt a függőségi kapcsolatot kifejezhetjük funkcionális és többértékű függőséggel is. Termék azon., Alkatrész azon. -> Mennyiség Termék azon. ->> Alkatrész azon., Mennyiség
Reláció kulcs A reláció kulcs a reláció egy sorát azonosítja egyértelműen. A reláció - definíció szerint- nem tartalmazhat két azonos sort, ezért minden relációban létezik kulcs. A reláció kulcsnak a következő feltételeket kell teljesítenie az attribútumok egy olyan csoportja, melyek csak egy sort azonosítanak (egyértelműség) a kulcsban szereplő attribútumok egyetlen részhalmaza sem alkot kulcsot a kulcsban szereplő attribútumok értéke nem lehet definiálatlan (NULL) A definiálatlan (NULL) értékek tárolását a relációs adatbázis kezelők speciálisan oldják meg. Numerikus értékek esetén a NULL érték és a 0 nem azonos.
Reláció kulcs Elsődleges kulcs: a tábla rekordjainak egyértelmű azonosítója, értéke egyedi. Idegen kulcs: olyan azonosító, amelynek segítségével egy másik tábla elsődleges kulcsára hivatkozhatunk. Összetett kulcs: több mező felhasználásával képezünk. Erre akkor van szükség, ha egyetlen mező egyediségét sem lehet biztosítani. SZEMÉLY_ADATOK=({ SZEMÉLYI_SZÁM, SZÜL_ÉV, NÉV}). NAPLÓ=({SZEMÉLYI_SZÁM, TANTÁRGY, DÁTUM, OSZTÁLYZAT)}
Kapcsolat a táblák között A relációs adatbázis-kezelés lényege, hogy az adatokat egymással logikai kapcsolatban álló táblákban tároljuk. A táblák közti kapcsolatok az egyedek egymáshoz való viszonyát írják le. Az egyedek közti kapcsolatot háromféleképpen írhatjuk le: 1-1 Egy az egyhez 1:N Egy a többhöz N:M Több a töbhöz
Egy-egy (1:1) kapcsolat Az egyik tábla egy eleméhez a másik tábla pontosan egy eleme kapcsolódik. Példa: ember, születési dátum
Egy-több (1:N) kapcsolat Az egyik tábla egy eleméhez a másik tábla több eleme is tartozhat. Példa: szülő, gyerekek
Több-több (N:M) kapcsolat Bármely tábla elemeihez a másik tábla tetszőleges számú eleme tartozhat. Példa: adósok, hitelezők
Redundancia Redundanciáról akkor beszélünk, ha valamely tényt vagy a többi adatból levezethető mennyiséget ismételten (többszörösen) tároljuk az adatbázisban. A redundancia, a szükségtelen tároló terület lefoglalása mellett, komplikált adatbázis frissítési és karbantartási műveletekhez vezet, melyek könnyen az adatbázis inkonzisztenciáját okozhatják.
Inkonzisztencia Egy adatbázis akkor inkonzisztens, ha egymásnak ellentmondó tényeket tartalmaz. Ilyen esetek jöhetnek létre akkor, ha adatbázist frissítünk, rekordokat módosítunk, törlünk, vagy új értéket rögzítünk, és a kapcsolatban lévő relációk tábláit nem módosítjuk megfelelően. (Ezt nevezzük még anomáliának is.)
Anomáliák Nem megfelelően felépített adatbázis esetén az adatszerkezetben különféle anomáliák, ellentmondások keletkezhetnek. Egy relációs adatbázisban a következő anomáliák léphetnek fel: Bővítési anomália Törlési anomália Módosítási anomália
Bővítési anomália Ha egy rekord felvételekor a már korábban tárolásra került információkat is újra be kell vinni. Ez akkor jó, ha az adatbázis-kezelő rendszer önműködően megcsinálja. Ha kézzel kell a rekordokat pótolni, akkor számíthatunk arra, hogy egy idő után már nem látjuk át az adatbázis szerkezetét, ezáltal hibázunk, és ellentmondásos adatbázist kapunk.
Törlési anomália Amikor az elem megszüntetésekor a nem hozzá tartozó információk is elvesznek. A törlésnél figyelnünk kell arra, hogy a törölt rekordhoz kapcsolódó rekordok ne törlődjenek, csak akkor, ha ezt mi kérjük.
Módosítási anomália Amikor az elemi adat módosulásakor az adatbázisban az elemi adat összes előfordulási helyén el kell végezni a módosítást. Ha több helyen tároljuk az adatokat, akkor mindenhol frissíteni, aktualizálni kell a rekordokat.
Tranzakció A tranzakció a rendszerbe beépített olyan alrendszer, amely az állapotváltozás előtt automatikusan elmenti az állapot-paramétereit, és csak akkor törli az előző állapot elmentett értékeit, ha a tranzakció sikeresen lezajlott, vagyis a cél állapotot elértük. Hiba esetén automatikusan visszaállítja a kiinduló állapotot. A rendszer inkonzisztensé válását okozhatja, h a nincsenek megfelelően kezelve.
Normalizálás Az a folyamat, mely során az adatbázis logikai áttekinthetősége, illetve a tárolási igény csökkentése érdekében megszüntetjük a redundanciákat és az anomáliákat. Az adatbázis-tervezés folyamatában az adatbázisban modellezett rendszert elemezzük, és meghatározzuk a tárolandó adatok körét, azok egymás közötti kapcsolatait és az adatbázissal szemben felmerülő igényeket. A logikai tervezés célja egy redundanciamentes kapcsolatrendszer, egy relációs adatbázis.
A normál formák A relációelmélet módszereket tartalmaz a redundancia megszüntetésére az úgynevezett normál formák segítségével. A normál formák előállítása során a funkcionális és a többértékű függőség, valamint a reláció kulcs fogalmát használjuk fel.
A normál formák Ötféle normál formát különböztetünk meg. A különböző normál formák egymásra épülnek, a második normál formában levő reláció például első normál formában is van. A tervezés során a legmagasabb normál forma elérése a cél. Az első három normál forma a funkcionális függőségekben található redundanciák, míg a negyedik és ötödik a többértékű függőségekből adódó redundanciák megszüntetésére koncentrál.
Első normál forma (1NF) Egy reláció első normál formában van, ha minden attribútuma egyszerű, nem összetett adat, vagyis ha minden mezője funkcionálisan függ a kulcsmező csoportjától. Azaz a mezők függéseinek rendszerében létezik egy kulcs, amelytől minden más mező függ. Minden nem kulcsmező függ a teljes kulcstól egy táblán belül.
1NF példa Szakkör Tanár Diákok Számítástechnika Nagy Pál Név Osztály Kiss Rita III.b Álmos Éva II.c Video Gál János Réz Ede I.a Vas Ferenc II.b Szakkör Tanár Diák Osztály Számítástechnika Nagy Pál Kiss Rita III.b Álmos Éva II.c Video Gál János Réz Ede I.a Vas Ferenc II.b
Második normál forma (2NF) Az első normál forma nem elegendő feltétel a redundanciák megszüntetésére. Egy reláció második normál alakjában nem tartalmazhat tényeket a reláció kulcs egy részére vonatkozóan. A második normál pontos definíciója két kritériumnak tesz eleget: a reláció első normál formában van, és a reláció minden nem elsődleges attribútuma teljes funkcionális függőségben van az összes reláció kulccsal. A gyakorlatban ez azt jelenti, hogy egyszerű értékek szerepelnek a mezőkben és minden másodlagos attribútum teljes funkcionális függőségben van. Következmények: Ha a kulcs egy attribútumból áll, akkor a reláció 2NF. Ha csak egy mező van a relációban, akkor 2NF.
2NF példa Terem Időpont Előadás Férőhely B 10:00 Mitológia 250 A 8:30 Irodalom 130 11:30 Szinház 11:00 Festészet 13:15 Régészet Terem Időpont Előadás B 10:00 Mitológia A 8:30 Irodalom 11:30 Szinház 11:00 Festészet 13:15 Régészet Terem Férőhely A 130 B 250
2NF létrehozása Kiemeljük a kulcsból azokat az attribútumokat, amelyek önállóan is meghatározzák a másodlagos attribútumokat. Az előző lépés szerint összetartozó elsődleges és másodlagos attribútumokból relációt állítunk elő. Azokat a másodlagos attribútumokat, amelyek csak a kulcstól függnek, a kulcsban szereplő elsődleges attribútumokkal egy táblába fogjuk össze.
Harmadik normál forma (3NF) A második normál formájú relációkban nem lehetnek olyan tények, amelyek a reláció kulcs részeihez kapcsolódnak. Azonban ennek ellenére is lehet bennük redundancia, ha olyan tényeket tartalmaznak, amelyek a nem elsődleges attribútumokkal állnak kapcsolatban. Ezt a lehetőséget szünteti meg a harmadik normál forma. Egy reláció harmadik normál formában van, ha: A reláció második normál formában van. A reláció nem tartalmaz funkcionális függőséget a nem elsődleges attribútumok között.
3NF példa Szakkör Tanár Születési év Képzőművész Sár Izodor 1943 Iparművész Karate Erős János 1972 Szakkör Tanár Képzőművész Sár Izodor Iparművész Karate Erős János Tanár Születési év Erős János 1972 Sár Izodor 1943
3NF előállítása Megszüntetjük a másodlagos attribútumok közötti funkcionális függőséget, azaz szintén több relációra bontjuk az eredeti relációt.
Boyce/Codd normál forma (BCNF) A normál formákat olyan relációkra is lehet alkalmazni, ahol több kulcs van. A normál formák definíciója alkalmazható a több kulccsal rendelkező relációkra is. Ebben az esetben minden attribútum, amely valamely kulcsnak a része, elsődleges attribútum, de ez az attribútum függhet egy másik, ezt nem tartalmazó kulcs részétől. Ha ez a helyzet fennáll, redundanciát tartalmaz a reláció. Ennek a felismerése vezetett a harmadik normál forma egy szigorúbb meghatározásához, az úgynevezett Boyce/Codd normál formához. Minden elsődleges attribútum teljes funkcionális függőségben van azokkal a kulcsokkal, amelyeknek nem része.
3NF és Boyce/Codd példa Tanár Időpont Tantárgy Félév Diák_szám Kiss Pál 93/1 Adatbázis 1 17 Jó Péter Unix 21 93/2 2 32 19 KissPál 3 25 Időpont Tantárgy Félév Diák_szám 93/1 Adatbázis 1 17 Unix 21 93/2 2 32 19 3 25 Tanár Időpont Tantárgy Kiss Pál 93/1 Adatbázis Jó Péter Unix 93/2
Negyedik normál forma (4NF) Sajnos még a Boyce/Codd normál forma is tartalmazhat redundanciát. Mindeddig csak a funkcionális függőségeket tekintettük át, a többértékű függőségeket nem. A további két normál forma a többértékű függőségekből adódó redundancia kiszűrését szolgálja. Egy reláció negyedik normál formában van, ha egy XY többértékű függőséget tartalmazó relációban csak az X és Y-ban megtalálható attribútumokat tartalmazza. Sokáig a negyedik normál formát tartották a normalizálás utolsó lépésének. A többértékű függőségek külön relációkban tárolásával azonban információt veszíthetünk. A normalizálás során érdemes legalább a harmadik normál formáig eljutni, így a redundanciák nagy részét kiszűrhetjük. Azok az esetek, melyekben a negyedik, illetve az ötödik normálformák alkalmazására van szükség, ritkábban fordulnak elő.
4NF példa Személy Barát Hobbi Nagy József Elek Attila foci Varga Attila Kiss Péter Kiss Pál sakk video Személy Barát Nagy József Elek Attila Varga Attila Kiss Péter Kiss Pál Személy Hobbi Nagy József foci Kiss Péter sakk video
Ötödik normál forma (5NF) Az ötödik normál forma esetén a redundancia megszüntetése csak nagyobb tárterület felhasználásával valósítható meg. Így általában az adatbázis tervezője döntheti el, hogy az ötödik normál formát és a nagyobb adatbázist, vagy a redundanciát és a komplikáltabb frissítési, módosítási algoritmusokat választja.
5NF példa Tanár Tanfolyam Helyszín Nagy Éva Adatbázis I. Szeged Kiss Pál Győr Adatbázis II. Pécs Tanfolyam Helyszín Adatbázis I. Szeged Győr Adatbázis II. Pécs Tanár Helyszín Nagy Éva Szeged Kiss Pál Győr Pécs Tanár Tanfolyam Nagy Éva Adatbázis I. Kiss Pál Adatbázis II
KÖSZÖNÖM A FIGYELMET! A Felnőttképzési, Pedagógiai és Humán Szolgáltató Kft. Megbízásából készítette a PSZINFO Informatikai és Humán Szolgáltató Bt.