Az adatbáziskezelés alapjai Klárné Barta Éva Az adatokat fájlokba szervezve tárolják a számítógépek háttértárain, elsődlegesen a merevlemezeken. Az első adatfeldolgozó rendszerek néhány fájlban tárolt kis mennyiségű adattal dolgoztak, amelyek csak egyetlen számítógépen voltak elérhetők. Ezt az adatmennyiséget még jól lehetett kezelni az operációs rendszerek saját fájlkezelő rendszerével. Később az adatok mennyisége és bonyolultsága egyre növekedett, az adatokat használó felhasználók számával együtt. Az adatokat már nemcsak tárolták és visszakeresték, hanem különböző alkalmazások segítségével feldolgozták, elemezték azokat. A számítógépes világhálózat létrejöttével pedig felmerült az igény, hogy a tárolt adatokhoz a világ bármely pontjáról hozzá lehessen férni. Ezek az elvárások egyre sokrétűbb adatkezelő eszközök kidolgozását igényelték, így alakultak ki a ma széleskörűen használt adatbáziskezelő rendszerek.
Adatbázisok és adatbáziskezelő rendszerek Az adatbázis együtt tárolt, egymással összefüggő adatok rendszere. Az adatok meghatározott szerkezet szerint kerülnek tárolásra, ez a szerkezet az adatbázis struktúrája. A struktúra leírását szintén az adatbázisban tárolják, ezt az adatbázis sémájának nevezzük, a séma leírására szolgáló adatokat szokás metaadatoknak is hívni. Az adatbázisok fájlokból épülnek fel, de speciális szerkezetük miatt hagyományos fájlkezelő rendszerekkel nem lehet a bennük tárolt adatokhoz hozzáférni. Az adatbázisok kezelésére adatbáziskezelő rendszereket fejlesztettek ki. Az adatbáziskezelő rendszer (ABKR) egy programcsomag (software), amely tulajdonképpen egy bonyolult fájlkezelő rendszer. Ennek része a tényleges adatkezelést végző program, az adatbázis motorja (engine). Adatmodellezés Az adatbázis mindig egy adatmodellen alapul, melyet az adatmodellezés során alakítanak ki. Az adatmodellezés olyan eljárás, melynek során a valós világ tényeit és összefüggéseit tükröző adatok lényeges sajátosságait és lényeges összefüggéseit emeljük ki. Egy adatmodellt az alábbi jellemzők segítségével adjuk meg, írjuk le: Azokat a dolgokat, amelyek adatait le szeretnénk írni, egyedeknek, vagy objektumoknak nevezzük. Ezek lehetnek tárgyak, személyek, vagy akár események is. Például Hallgatók, Tantermek, Vizsgák. Az egyedek konkrét előfordulásai például "Kiss Jolán", "112-es terem", "2007.01.22-i Információs rendszerek vizsga". Egy adott egyed által képviselt összes előfordulás halmazát egyedhalmaznak nevezzük. Például a Hallgatók nevű egyedhalmaz az összes hallgatóból áll, a Terem nevű egyedhalmaz pedig az összes teremből.
2
Az adatbáziskezelés alapjai
Az egyedeket tulajdonságokkal, attribútumokkal írjuk le. Az adatmodellezés fontos lépése, hogy az egyed számtalan tulajdonsága közül kiválasszuk azokat, amelyek számunkra lényegesek. Az adatmodellben csak ezek a tulajdonságok szerepelnek. Például egy hallgató tulajdonságai lehetnek a név, születési dátum, szak, évfolyam, testmagasság, szeme színe stb. Ha egy egyetemen hallgatói nyilvántartást készítenek, úgy ezek közül a név, születési dátum, szak, évfolyam tulajdonságokkal fogják jellemezni a hallgatókat, míg egy rendőrségi nyilvántartásban a név, születési dátum, testmagasság, szeme színe tulajdonságokat fogják használni. Amennyiben egy tulajdonság, vagy a tulajdonságok egy csoportja egyértelműen meghatározza, hogy az egyed melyik értékéről, vagyis az egyedhalmaz melyik eleméről van szó, akkor ezeket a tulajdonságokat kulcsnak, vagy azonosítónak nevezzük. Elvileg minden egyedhalmaznak van kulcsa, hiszen az egyedeket úgy határoztuk meg, hogy egymástól megkülönböztethetők legyenek. Így legrosszabb esetben az összes tulajdonság együtt alkotja a kulcsot. Ha nem tudunk kiválasztani olyan tulajdonságokat, melyek az egyedhalmaz elemeit egyértelműen meghatározzák, nagyon sok tulajdonság értékét kell megadni az egyértelmű azonosításhoz, akkor be kell vezetnünk egy olyan tulajdonságot - például sorszám, kódszám - amely ezt biztosítja. A Hallgatók egyedhalmazban például hallgatókódot rendelhetünk a hallgatókhoz, a termékeket pedig cikkszámmal látják el a könnyebb azonosítás végett. A hallgatónak a hallgatókód nem természetes tulajdonsága, épp így a cikkszám sem természetes tulajdonsága a terméknek. Ha a kulcs egyetlen tulajdonság, akkor egyszerű kulcsnak nevezzük, amennyiben több tulajdonság alkotja a kulcsot, akkor összetett kulcsról beszélünk. A különböző egyedhalmazok kapcsolatban állhatnak egymással. Azokat a logikai összefüggéseket, amelyeket az egyedhalmazok közös tulajdonságai fejeznek ki, kapcsolatoknak nevezzük. Például a Hallgatók és a Vizsgák egyedhalmazok közötti kapcsolat lehet az, hogy kik vizsgáznak az adott napon a megadott tárgyból. A kapcsolatoknak három típusát különböztetjük meg: Egy-egy típusú kapcsolat (1:1 kapcsolat) Az egyik egyedhalmaz egy eleméhez a másik egyedhalmaz pontosan egy eleme kapcsolódik. Például a vidéki önkormányzatok halmaza és a polgármesterek egyedhalmaza között egy-egy típusú kapcsolat van. 1:1 típusú kapcsolat
3
Az adatbáziskezelés alapjai
Egy-több típusú kapcsolat (1:N kapcsolat) Az egyik egyedhalmaz egy eleméhez a másik egyedhalmaz több eleme is tartozhat, de a másik egyedhalmaz egy eleméhez az egyik egyedhalmaz csak egy eleme tartozhat. Például a Raktárak és a Dolgozók közötti kapcsolatban egy raktárhoz több dolgozó is tartozhat, de egy dolgozó csak egy raktárban dolgozhat. 1:N típusú kapcsolat
Több-több típusú kapcsolat (N:M kapcsolat) Az egyik egyedhalmaz egy eleméhez a másik egyedhalmaz több eleme is tartozhat és ennek a fordítottja is igaz. Például az Áruk és a Szállítások közötti kapcsolat több-több típusú kapcsolat, hiszen egy szállítás során többféle árut is vihetnek, de egy áruféleséget több szállítással is szállíthatnak. N:M típusú kapcsolat
Az adatmodell elkészítése során meg kell adnunk az adatokra vonatkozó megszorításokat is, ezek szintén a séma részei lesznek. A legfontosabb megszorítástípusok: Kulcsok: a megszorítások között szokás megadni az egyedhalmazok kulcsát. Egyértékűségi megszorítások: megköveteljük, hogy egy egyedhalmazon belül egy adott tulajdonság értéke minden egyednél különböző legyen. Ennek speciális esetei a kulcsok, de nem azonosító tulajdonságnál is előfordulhat ilyen megszorítás,
4
Az adatbáziskezelés alapjai
például egy hallgató egyedhalmaz kulcsa a hallgatókód, de a személyigazolványszámnak is minden egyednél egyedinek kell lennie. Hivatkozásépség-megszorítások (referenciális integritás): megköveteljük, hogy egy hivatkozott érték szerepeljen az adatbázisban. Például egy hallgató nem vehet fel olyan tantárgyat, amely nem szerepel a tantárgyak egyedhalmazában. Értékkészlet-megszorítások: egy tulajdonság értékeit csak egy meghatározott halmazból veheti fel, például az érdemjegy csak 1, 2, 3, 4, 5 lehet. Értékhatár megszorítások: a tulajdonság értékei csak megadott intervallumba eshetnek, például a tanulmányi átlag csak 1 és 5 közötti szám lehet. Általános megszorítások: tetszőleges követelmények, amelyeket az adatokkal szemben támasztunk. Például, egy dátum nem lehet későbbi az aktuális dátumnál. Relációs adatmodell A relációs adatmodell az adatok táblázatos ábrázolásán alapul. Ebben az adatmodellben a reláció egy névvel ellátott táblázat. Egy táblázat sorai egy egyedhalmaz egyedeinek leírását tartalmazzák. Egy adatmodellben általában több egyedhalmaz szerepel (hallgató, oktató, tantárgy, terem, vizsga), így több táblázatban kell leírni őket, ezek a táblázatok pedig kapcsolatban állnak egymással, hiszen ezért tartoznak egy adatmodellhez. Az egyedeket tulajdonságaikkal írjuk le, ezek a tulajdonságok alkotják a táblázat oszlopait. Például a Hallgató táblázat egyik oszlopa a név, a másik a születési dátum, stb. A táblázat struktúrájának leírása Egy relációs adatbázisban meg kell adnunk minden táblázat struktúrájának leírását. Ennek során rögzíteni kell az egyes oszlopok nevét, típusát és méretét. Egy oszlopban csak a típusának megfelelő adat tárolható. A legfontosabb adattípusok: − számok (numerikus adatok) − szövegek (karakteres adatok) − dátum, vagy idő adatok Az oszlopok mérete rögzített, nem függ a benne tárolt adat méretétől. Ha például a Név oszlop méretét 40 karakternek definiáljuk, akkor abban 0-tól 40 karakterig terjedő hosszúságú neveket tárolhatunk, de az oszlop mérete akkor is 40 karakter lesz, ha a leghosszabb név sem éri el ezt. Szintén a struktúraleírásban kell megadni az egyes oszlopokra vonatkozó megszorításokat is. Egy adatbázisban tárolhatók hosszabb összefüggő szövegek is, ezeket feljegyzés, vagy hosszú karakteres típusú mezőkbe lehet felvinni. Ennek az adattípusnak nincs meghatározott mérete. Multimédiás objektumokat – pl. képek, hang-fájlok – szintén elhelyezhetünk egy adattáblában, ezeket vagy hosszú karakteres mezőkben, vagy speciális OLE (Object Linking and Embedding) objektumokat tartalmazó mezőkben, vagy BLOB (Binary Large OBject) - nagyméretű bináris objektum - típusú mezőben kell tárolni.
5
Az adatbáziskezelés alapjai
Kulcsok Ahhoz, hogy a táblázatban szereplő egyedeket egyértelműen azonosítani tudjuk, a táblázatnak rendelkeznie kell kulccsal. Az adatmodell elkészítésekor rögzítenünk kell, hogy a lehetséges kulcsok közül melyiket fogjuk a tábla sorainak, vagyis az egyedeknek az azonosítására használni, ezt a kulcsot elsődleges kulcsnak, vagy primary key-nek nevezzük. Például a Hallgató táblában lehetséges kulcs a név és a születési dátum együttes megadása, de lehetséges kulcs a hallgató kód is. Az adatmodell készítésekor meg kell adnunk, hogy melyiket fogjuk elsődleges kulcsként használni. A táblák közötti kapcsolatot sok esetben az biztosítja, hogy az egyik táblázatban benne szerepel a másik táblázat elsődleges kulcsa. Ezt a mezőt az első táblázatban idegen kulcsnak nevezzük. Példa: ANYAG tábla Mennyiségi Egységár egység (Ft)
Cikkszám
Megnevezés
120306
Lemezcsavar
db
5
302564
Facsavar
db
4
523652
Alumínium lemez
db
1500
212121
Vaspor
kg
842
A példánkban a tábla neve ANYAG, a sorai egy-egy anyag leírását tartalmazzák, az anyagokat jellemző tulajdonságaikkal – cikkszám, megnevezés, mennyiségi egység, egységár – írjuk le, ezek a tábla oszlopai. A tábla elsődleges kulcsa a cikkszám.
KÉSZLET tábla Raktárszám
Cikkszám
Mennyiség
2100
120306
1000
2200
302564
5000
2100
302564
3500
2300
120306
1200
A KÉSZLET tábla elsődleges kulcsa a raktárszám és a cikkszám (összetett kulcs). Ebben a táblában benne szerepel az ANYAG tábla elsődleges kulcsa, vagyis a cikkszám. Itt a cikkszám idegen kulcs is, mert egy másik tábla elsődleges kulcsa. Ez a mező biztosítja a kapcsolatot a két tábla között, a KÉSZLET tábla adataiból nem tudjuk megmondani, hogy mi a 120306 cikkszámú anyag, és hogy a mennyiség miben értendő, csak az ANYAG tábla segítségével derül ki, hogy ez lemezcsavar és a
6
Az adatbáziskezelés alapjai
mennyiség darab. Az idegen kulcs általában nem része az elsődleges kulcsnak, de – mint példánk mutatja -, az is lehet
Adatbáziskezelő rendszer A korszerű adatbáziskezelő rendszerek nagyrészt interaktív módon működnek, vagyis párbeszédet folytatnak a felhasználóval, aki megfogalmazza kéréseit, és a program azonnal végrehajtja azokat. A felhasználó, illetve azok az alkalmazások, amelyek segítségével a felhasználó az adatbázisban tárolt adatokat feldolgozza, csak az adatbáziskezelő rendszeren keresztül férhetnek hozzá az adatbázisban tárolt adatokhoz.
1. ábra: A felhasználók az adatbáziskezelő rendszeren keresztül érik el az adatbázisban tárolt adatokat
Egy adatbáziskezelő rendszer legfontosabb feladatai: − − − − −
az adatbázis létrehozása az adatok karbantartása az adatok lekérdezésének biztosítása a felhasználók munkájának szinkronizálása az adatok védelme
Az adatok karbantartásán az új adatok felvitelét, a meglévő adatok módosítását, vagy törlését értjük. A felhasználók munkájának szinkronizálására akkor van szükség, ha az
7
Az adatbáziskezelés alapjai
adatbázis adataihoz egyszerre több felhasználó is hozzáférhet. Ekkor az adatbáziskezelő rendszernek biztosítania kell, hogy a felhasználók ne akadályozzák egymás munkáját, illetve ne történjen adatvesztés, vagy hibás adatfelvitel a közös munka során. Az adatbázisban tárolt adatokat több szempontból is védeni kell. Ki kell szűrni az adatfelvitel során az esetleges hibás adatokat, védekezni kell az illetéktelen felhasználók ellen, valamint meg kell védeni az adatbázis adatait az adathordozók fizikai sérüléseitől. Az adatkarbantartás során különböző ellenőrzésekkel lehet meggátolni a hibás adatok felvitelét. Az adatokhoz történő illetéktelen hozzáférések megakadályozására a felhasználók azonosítót kapnak, és csak jelszó segítségével férhetnek hozzá az adatbázisban tárolt adatokhoz. A felhasználói névhez különböző jogok rendelhetők, például lekérdezési jog, vagy módosítási jog. Az adatbázisban található objektumokhoz szintén rendelhetők jogok. A felhasználó tényleges jogát egy objektum esetén a felhasználóhoz rendelt jogok és az objektumokhoz rendelt jogok metszete adja, vagyis például csak akkor módosíthatja az objektumban tárolt adatokat, ha rendelkezik módosítási joggal, és az objektumon is engedélyezett a módosítás. Az adatok fizikai védelmét különböző mentésekkel, az adatbázis duplikálásával (tükrözésével) lehet biztosítani. A software-piacon számos adatbáziskezelő rendszer található. Minden adatbázistípushoz saját adatbáziskezelő rendszer tartozik, egy adatbáziskezelő csak azokat az adatbázisokat tudja feldolgozni, amelyeket ugyanezzel a típusú adatbáziskezelő rendszerrel hoztak létre, ugyanis a különböző adatbázisok belső szerkezete nagymértékben eltér egymástól. Sok esetben ugyanannak az adatbáziskezelőnek a különböző verziói sem egyforma felépítésű adatbázis-szerkezetet hoznak létre, így ha át akarunk térni egy másik verzióra, az adatbázist át kell konvertálni. A vezető relációs adatbáziskezelő rendszerek az SQL (Structured Query Language) nyelvet használják az adatok karbantartására, lekérdezésére. ezért ezeket SQL alapú adatbáziskezelő rendszereknek nevezzük. Ebbe a csoportba tartozik az egyik legelterjedtebb adatbáziskezelő rendszer az ORACLE, továbbá a DB2, INFORMIX, SYBASE és a Microsoft SQL-szerverei is. Ezek az adatbáziskezelők általában fejlett adatvédelmi rendszerrel és számos, a felhasználó munkáját segítő, vagy a bonyolult adatrendszerek kezelését lehetővé tevő funkcióval rendelkeznek. Több felhasználós adatbázisok A nagyobb adatbázisok általában több felhasználó kiszolgálására jönnek létre. Ebben az esetben biztosítani kell, hogy az adatbázis adataihoz minden felhasználó hozzáférhessen. Ekkor az adatbázist egy központi gép (szerver) merevlemezein helyezik el, a felhasználók pedig egy lokális hálózaton keresztül érik el az adatbázisban tárolt adatokat. Az SQL alapú adatbáziskezelő rendszerek általában kliens-szerver architektúra szerint felépülő hálózatokon működnek, ami azt jelenti, hogy a központi gépen fut maga az adatbáziskezelő rendszer, a kliens gépeken pedig az alkalmazások. Az alkalmazások SQL parancsokat küldenek a központi gépnek, ott
8
Az adatbáziskezelés alapjai
az adatbáziskezelő végrehajtja azokat, és az eredményt visszaküldi a kliensnek. Egy módosítás eredménye például az, hogy a módosítás sikeresen megtörtént, egy lekérdezés eredménye pedig a feltételeknek megfelelő adatok csoportja.
2. ábra: Kliens-szerver architektúra Az Internet használatának széleskörű elterjedésével megjelentek az Interneten keresztül elérhető adatbázisok, biztosítva azt, hogy egy adatokhoz a kliensek a világ bármely pontjáról hozzáférhessenek. Az adatbázis továbbra is egy központi szerver gépen helyezkedik el, kliens pedig lehet bármely olyan számítógép, amely Interneteléréssel rendelkezik.
9
Az adatbáziskezelés alapjai
Tartalomjegyzék Az adatbáziskezelés alapjai............................................................................................. 1 Adatbázisok és adatbáziskezelő rendszerek ............................................................... 1 Adatmodellezés ....................................................................................................... 1 Relációs adatmodell ................................................................................................ 4 A táblázat struktúrájának leírása ....................................................................... 4 Kulcsok ................................................................................................................ 5 Adatbáziskezelő rendszer............................................................................................ 6 Több felhasználós adatbázisok ............................................................................... 7