BEVEZETÉS AZ ADATBÁZIS KEZELŐ RENDSZEREK ALKALMAZÁSÁBA Ismétlő áttekintés Ismeret – Adat – Információ Az emberek (a gazdaság, a közigazgatás vagy egyéb tevékenységet folytató területek irányítói, résztvevői) arra törekszenek, hogy a környezetükből származó és tevékenységüket esetleg még meg is határozó i s m e r e t -eket valamilyen módon megőrizzék. Véges a memóriájuk és persze felejtenek is. A megszerzett ismereteiket tehát el kell "raktározni" de ehhez valamilyen formában rögzíteni, esetleg még átalakítani is kell azokat. Az így átalakított, és rögzített ismeretet nevezzük a d a t -nak. Az adatok tárolásának módja az idők folyamán változott, jelenleg erre a célra a számítógép látszik legalkalmasabbnak. Az adat a valóság valamilyen objektumához kötődik, leírja annak tulajdonságát. Beszélhetünk még az e l e m i a d a t –ról, amely tovább már nem osztható, önmagában még értelmezhető ismeret. Azzal a példával lehet ezt leginkább érzékeltetni, hogy egy személyi nyilvántartás lakcím adata [ Irányítószám, Helység, Utca név, Házszám, Emelet, Ajtó ] elemi adatokból áll. Az adatok eltárolásának azonban nem maga a tárolás a célja. Ez csak eszköz ahhoz, hogy a tárolt adatok gyors, gazdaságos feldolgozása által (szintetizálás, kiválogatás, elemzés) új ismerethez, azaz i n f o r m á c i ó -hoz jussunk. Az elemi adatot az objektumról a j e l közvetíti, amelyhez az észlelést végző jelentést társít, s így jut információhoz. A jel fizikai megjelenési formája a kommunikáció fajtájától függ. Az adatok tárolása Az adatokat természetesen azért tároljuk, hogy feldolgozhatóak legyenek. Egy adattároló rendszernek tehát minimum annak kell megfelelni, hogy adott tulajdonság alapján megtalálható legyen egy keresett adat. Ez nem jelent mást, mint, hogy előre meghatározott eljárásokkal (algoritmusokkal) hatékonyan feldolgozható legyen egy adathalmaz. Úgy is mondhatjuk, hogy meghatározott szerkezetben kell az adatokat tárolni. AZ ADATBÁZIS-KEZELÉS ALAPFOGALMAI Bevezető A számítógépek alkalmazásának egyik legrégebbi, és manapság is rendkívül fontos területe az adattárolás. A hagyományos (papír alapú) tárolási módszerekhez képest a számítógépes adattárolás számos előnnyel bír. (Olcsóbb, gyorsabb, szélesebb körben hozzáférhető stb.) Kezdetben minden egyes adattárolási feladathoz külön programot fejlesztettek, emiatt a számítógépes adattárolásra való átállás lassú és költséges folyamat volt. Később a fejlesztők észrevették, hogy a különféle adattárolási feladatokban sok hasonlóság található. (Pl. egy könyvtári katalógusban, egy cég könyvelésében, vagy egy menetrendi alkalmazásban lényegileg ugyanazokat a részfeladatokat kell elvégezni: adatfeltöltés, módosítás, keresés, tárolás stb.) Az adattárolási részfeladatokat részletes elemzés után kettéosztották általános (minden szituációban azonos) és specifikus (az adott szituációra jellemző, egyedi) típusú feladatokra. A modern gyakorlatban egy-egy adattárolási feladathoz nem készítenek önálló programot, hanem egy általános célú, ún. adatbázis-kezelő program egyéni igényeknek megfelelő „testre szabásával” alakítják ki a számítógépes adattárolási rendszert. Ehhez a „testre szabáshoz” – az adatbázis felépítéséhez – már nem kell programozói szaktudás, egy egyszerűbb rendszert akár középiskolás tudással is létre lehet hozni. Fogalmak Az ADATBÁZIS logikailag összefüggő meghatározott szerkezetben tárolt adatok halmaza.
Az adatbázis a számítógépen nem más, mint adatok szervezett gyűjteménye, amelyet egy – az adatok tárolására, lekérdezésére és szerkesztésére alkalmas – szoftvereszköz kezel. Az adatbázis lényege, 1. oldal
hogy az adatok mellett az adatok között lévő kapcsolatokat is tárolja. Az adatbázis fogalma nem keverendő össze az adatbázis-kezelővel, amely az adatbázis működtetésére, rendszerszintű és felhasználói folyamatainak szervezésére szolgáló szoftvereszköz (program). Az adatbázis-kezelő általában egy szerverprogram, amely egy számítógépes hálózaton keresztül több másik számítógépről is elérhető. (Az MS Access ebből a szempontból kivétel, ezért nem is tekinthető igazi adatbázis-kezelőnek.) A felhasználók (emberek) általában nem közvetlenül az adatbáziskezelő szerverrel lépnek kapcsolatba, hanem egy – a hálózat egyik munkaállomásán futó – ügyfélprogram (kliens) segítségével adnak utasításokat a szervernek. Egy számítógépes adattárolási rendszer kialakítása és működtetése a következő lépésekből áll:
Az adatbázis logikai szerkezetének megtervezése
Az adatbázis elemeinek létrehozása
Az adatbázis feltöltése adatokkal
Az adatbázis karbantartása (adatmódosítás, törlés, biztonsági mentések stb.)
Az adatbázis logikai szerkezetének kialakítása a legtöbb szakértelmet kívánó feladat. Sok szempontot kell figyelembe venni a tervezéskor, például pontosan azonosítani kell, hogy milyen adatok tárolását kívánjuk megvalósítani, azok összetettségéről, felbonthatóságáról, más adatokhoz fűződő viszonyairól kell határoznunk, de figyelni kell arra is, hogy az adatbázis hosszú távú használatából származó működési rendellenségeket már szerkezeti szinten is elkerüljük, illetve arra is, hogy minél kevesebb tárhelyet kelljen foglalni az adattároláshoz. A ma elterjedt adatbázis-kezelő rendszerek többsége az adatokat adattáblákban (táblázatokban) csoportosítva tárolja. Az adattáblák sorait rekordoknak, oszlopait mezőknek nevezzük. Például személyi adatok tárolásakor egy adatsorban (rekordban) egy bizonyos személy adatait tároljuk: NÉV Minta Elemér Gipsz Jakab
LAKCÍM 1690 Budapest, Zöld u. 2 …
SZÜLETÉSI IDŐ 1945.12.23 …
TELEFONSZÁM (34)513 2345 …
Azért nem egyetlen táblában tároljuk az adatokat, mert csak így kerülhető el az ún. redundancia, azaz az adatok többszörös, feleslegesen ismételt tárolása. Az adatbázis-tervezés kulcskérdése éppen az, hogy mely adatok kerüljenek közös táblába és melyeknek kell külön táblába kerülniük. Tekintsük a következő példát: Egy iskola diákjainak személyes adatai (név, lakcím, születési dátum…) mellett a diák osztályfőnökének nevét, lakcímét, telefonszámát is tárolni szeretnénk. Amennyiben ezeket az adatokat egy közös táblában tárolnánk, úgy az osztályfőnök összes adatát annyiszor kellene beírnunk az adatbázisba, ahány diák jár az osztályába. Ez a feleslegesen ismételt (redundáns) adattárolás megnöveli az adatbázis méretét, lassítja működését, növeli az adatbeviteli hibalehetőséget és megnehezíti az adatmódosítást. (Pl. ha megváltozik a tanár telefonszáma, akkor ezt minden diák sorában módosítani kell.) Az adatbázis táblái között logikai kapcsolatok állnak fenn. Ezek a kapcsolatok a táblákban tárolt adatok közötti viszonyt fejezik ki. Ezek a kapcsolatok alapvetően háromfélék lehetnek:
Egy-egy (1:1) kapcsolat esetén az egyik tábla egy bizonyos rekordjához (sorához) a másik táblának pontosan egy rekordja tartozik. Ilyen lehet például a házastársi kapcsolat a férfiak és nők adattáblái között. (Kivéve pl. a muzulmán országokban.)
Egy-több (1:N) kapcsolat esetén az egyik tábla egy bizonyos rekordjához a másik tábla több rekordja is tartozhat, de a másik tábla egy bizonyos rekordjához az egyik táblának pontosan egy rekordja tartozik. (Pl. egy osztályfőnöknek több diákja is van, de egy diákhoz pontosan egy osztályfőnök tartozik.)
Több-több (N:M) kapcsolat esetén bármelyik tábla egy bizonyos rekordjához a másik tábla több rekordja is tartozhat. (Pl. ismeretségi kapcsolat férfiak és nők között.) 2. oldal
Az adattáblák közötti kapcsolatok kialakításában döntő szerepük van az adattáblák kulcsainak. Egy adattábla elsődleges kulcsa az a mező (vagy mezők csoportja) amely egyértelműen azonosítja a tábla rekordjait (sorait). Egy mező akkor lehet elsődleges kulcsa az adattáblának, ha minden értéke egyedi, tehát nincs az adattáblában két olyan rekord, ahol a kulcsmező értéke megegyezik. Pl. Magyarországon a TAJ szám (Társadalombiztosítási Azonosító Jel) alkalmas elsődleges kulcsnak, mivel nincs két olyan ember az országban, akinek ugyanaz lenne a TAJ száma. Előfordulhat, hogy egy adattáblában nincs olyan mező, amely önmagában alkalmas lenne elsődleges kulcsnak, de több mező együttesen már igen. Az ilyen kulcsot összetett kulcsnak nevezzük. Pl. az emberek neve önmagában nem feltétlenül egyedi (sok Kovács János lehet a telefonkönyvben), de a név, születési idő, lakcím együttesen már alkalmas kulcsnak. Idegen kulcsnak nevezünk egy adattáblában egy mezőt, ha ugyanaz a mező szerepel egy másik adattáblában is, és a másik táblának ez az elsődleges kulcsa. Egy adattáblában tehát egy elsődleges kulcs és több idegen kulcs lehet. Az adatbázis-kezelő rendszerek fogalmai o Adatbázis: egymással kapcsolatban álló információk összessége. o Adatbázis-kezelő rendszer (DBMS): egy olyan szoftverrendszer amelyik lehetővé teszi adatbázisok kialakítását és kezelését. o Információs rendszer: az adatbázis-kezelő általában valamely szervezet (például egy cég) információit kezeli. Az adatbázis ilyen esetben a szervezet információs rendszerének a része. Az információs rendszer egy szervezetnek egy olyan részrendszere, amelyiknek a feladata az információ-feldolgozás. Az információs rendszer általában hardver és szoftverkomponensekből és a szervezet információkezelési folyamataiból áll. Az adatbázis-kezelő rendszer feladata: sok tárolt információ hatékony, biztonságos kezelése, megosztása több alkalmazás között. Az adatok kezelése o frissítés (beszúrás, törlés, módosítás) o visszakeresés o összetett lekérdezések Látható hogy különbséget tettünk az adatok visszakeresése és az összetett lekérdezések között. Valóban itt különböző felhasználási módokról van szó. A visszakeresésre egy példa az, amikor szeretnénk a telefonkönyvből kikeresni egy ismerősünk telefonszámát. Összetett lekérdezésnél általában összesítéseket, statisztikákat akarunk készíteni. Például szeretnénk tudni, hogy az egyes kerületekben hányan laknak és a lakók mekkora részének van telefonja. Az első esetben (a visszakeresésnél) operatív adatbázisról beszélünk. Az operatív adatbázisokat tranzakció-feldolgozásra (OLTP) használják. Ez azt jelenti, hogy az adatbázis tartalma dinamikusan változik, mindig az aktuális információkat tartalmazza. Például operatív adatbázisról beszélünk, ha egy könyvtárban egy adatbázisban tartják nyilván azt hogy ki melyik könyvet vette ki. A második esetben analitikus adatbázisról beszélünk. Az analitikus adatbázis egy olyan adatbázis, amelyiknek a tartalma ritkán változik. Az ilyen adatbázisokat általában statisztikai kimutatások készítésére, más szóval analitikus feldolgozásra használják.
3. oldal
Az adatbázis-kezelő környezetét az ábra mutatja:
Információs rendszer felhasználó Alkalmazás
DBMS
Az adatbázis-kezelő közvetlenül is kapcsolatban állhat a felhasználókkal, de gyakran a felhasználó egy alkalmazói programot használ, amelyik az adatbázis szolgáltatásait használja. A felhasználóval való kapcsolat parancssoros vagy grafikus interfészen valósulhat meg. Az adatbázis-kezelőtől elvárjuk az is, hogy több alkalmazást, több felhasználót tudjon kezelni. A több felhasználó miatt szükség van a jogosultságok és a párhuzamos elérés kezelésére. Az adatbázis definíciójához és az alkalmazások együttműködéséhez szükség van egy adatmodell támogatására. Mivel az adatbázis-kezelőben sok adatot tárolnak, fontos hogy az adatbázis-kezelő hatékony legyen. A hatékonyság elsősorban a műveletek futásidejére jelent megszorítást. Az adatbázisban levő adatokat sok alkalmazás használja, ezért az adatvesztést mindenképpen el kell kerülni. Az adatbázis-kezelőnek lehetőséget kell adnia integritási feltételek megfogalmazására és lehetővé kell tennie az adatbázis helyreállítását akár rendszerösszeomlás esetén is. Adatbázis-kezelők szolgáltatásai Felsoroljuk, hogy egy adatbázis-kezelőnek milyen tulajdonságokkal kell rendelkeznie 1. Adatmodell támogatása Az adatmodell használatával tudjuk specifikálni az adatbázisban levő adatok formátumát és integritási feltételeit. Az alkalmazások közötti együttműködéshez és az adatbázis integritásának biztosításához az adatbázist pontosan specifikálni kell, ehhez ad eszközöket az adatmodell. 2. Konkurens hozzáférési lehetőség, tranzakció-kezelés Ha egyszerre többen férnek az adatbázishoz, akkor kezelni kell a zárolásokat, stb. A tranzakciókezelés az adatbázison végzett műveleteket olyan egységekre bontja, amelyek vagy teljesen lefutnak, vagy változatlan állapotban hagyják az adatbázist. 3. Több felhasználó, jogosultságok kezelése 4. Biztonsági másolatok készítése, helyreállíthatóság 5. Interfész az alkalmazások felé Adatdefiníciós, adatmanipulációs, lekérdező és vezérlő nyelvek. Adatmodellek Az adatok formátumának és jelentésének leírására használható fogalomrendszert nevezzük adatmodellnek. Általában elvárjuk, hogy egy adatmodellhez legyenek o o o o
jóldefiniált alapfogalmak, pontosan meghatározott szemantika, kidolgozott elmélet, tervezési módszerek, szabványos jelölésrendszer.
4. oldal
Az adatmodellt három absztrakciós szintre lehet osztani o A fizikai szint az adatfájlok tárolási módját és fizikai megvalósítási módját adja meg. o A fogalmi szint leírja az adatbázis logikai felépítését. A fogalmi szinten van megadva, hogy az adatbázisban milyen adatok szerepelnek, és hogy az adatok között milyen kapcsolatok vannak. o Az alkalmazói szint megmondja, hogy kívülről hogyan lehet elérni az adatbázist. Az adatbázishoz kapcsolódó programok az alkalmazói szintet látják. Mindegyik szinten vannak sémák és előfordulások. A séma az adatok formáját, típusát ábrázolja. A sémában vannak megadva a táblák nevei és az, hogy egy táblában milyen oszlopok szerepelnek. Az adatbázisra vonatkozó megszorítások is a séma részét képezik. Az adatbázis előfordulás az adatbázisban levő konkrét értékekből áll. Logikai és fizikai adatfüggetlenség o Fizikai adatfüggetlenség: az adatbázis fizikai tárolási módja független a fogalmi szint szerkezetétől. Ilyenkor a fájlok fizikai formátumát, az indexek felépítését megváltoztathatjuk, úgy hogy az adattáblák nem változnak. o Logikai adatfüggetlenség: az alkalmazói programok függetlenek az adatbázis fogalmi szintjének szerkezetétől. Ilyenkor a fogalmi séma bővíthető vagy kisebb mértékben változtatható, attól még az alkalmazásokat nem kell átírni. A logikai adatfüggetlenség megvalósítható nézettáblák használatával. Fontosabb adatmodellek: o Történeti jelentőségű adatmodellek: hálós, hierarchikus. Ezeket manapság már szinte sehol nem használják. Közös jellemzők: adatok elérése API felületen keresztül, egyszerre egy rekordhoz tudunk hozzáférni. o Hierarchikus adatmodell: az adatbázis fába szervezett rekordokból áll. Bizonyos esetekben egy információt többször is el kell tárolni, vannak olyan kapcsolatok, amiket csak ronda trükkökkel lehet megvalósítani. Az összetettebb keresések és lekérdezések sokszor fabejárás implementálását igénylik az alkalmazói programban. o Hálós adatmodell: az egyes rekordok között 1:n kapcsolatokat lehet megadni. A kapcsolatok expliciten el vannak tárolva, ezért bizonyos integritási szabályok könnyen megvalósíthatók, de a kapcsolatok módosítása nehézkes. A hálós adatbázist kezelő programokban sok mutatóüldözési feladatot kell megoldani. o Manapság használatos adatmodellek o A relációs modellben az adatbázis adattáblákból áll. A rekordok közötti kapcsolatokat nem tároljuk el közvetlenül, hanem a kapcsolatokat a táblákban szereplő azonos értékekkel reprezentáljuk. A legtöbb relációs adatbáziskezelőnek van saját API felülete, amelyiken keresztül a táblákat úgy tudjuk kezelni, mintha rekordokból álló fájlok lennének. Összetett lekérdezéseket és frissítéseket SQL-ben tudunk leírni. A relációs modell előnyei: egyszerű, pontosan definiált alapfogalmak és kidolgozott elmélet; vannak tervezési módszerek, amelyekkel az adatbázis integritása biztosítható. A relációs modell hátránya: bizonyos adatokat nem lehet benne tárolni: CAD és egyéb tervek, verziókövetés, multimédia klipek és metaadatok, térinformatikai adatok. o Adatbányászati rendszerekben többdimenziós adatmodellt szoktak használni. Az adatokat egy többdimenziós kockában tároljuk, lehetőség van gyakorlatilag bármilyen összesítéskombináció lekérdezésére. A többdimenziós adatmodell lehetővé teszi nagy adatbázisok statisztikai elemzését. Adatbányászati rendszereket az üzleti döntéselőkészítési folyamatban használnak. o Az objektumrelációs adatmodellről: ez lényegében a relációs modell bővítése összetett adattípusokkal. Az új adattípusok lehetnek sor vagy mező-típusok. A sortípus esetén egy tábla azonos típusú objektumokból áll. Összetett mező-típus lehet például a BLOB (binary large object) típusú mező. 5. oldal