Adatbázisok. II. rész |
|||||||||||||||||||||||||||||||||||||||
Az adatbázisokról szóló előző cikkemben az adatbázisok, adatok fogalmának jelentését jártam egy kicsit körül. A mostani fejezetben az adatbázisok logikai szerkezetét meghatározó adatmodellek kerülnek napirendre. Az adatmodell - mint tudjuk - adatmodell-elemekből (egyed, tulajdonság, kapcsolat) épül fel. Az adatbázisainkat többféle adatmodell szerint építhetjük fel. A kezdetektől fogva többféle adatmodell létrehozására volt kísérlet, de a sok próbálkozásból mindössze három típus látszott "életképesnek" és terjedt el. Nézzük meg kialakulásuk szerinti sorrendben a három adatmodellt: |
|||||||||||||||||||||||||||||||||||||||
Hierarchikus adatmodell |
|||||||||||||||||||||||||||||||||||||||
A hierachikus adatmodell szerkezete leginkább egy fastruktúrához hasonlít, amelyet gráffal adunk meg. Az egyedeket a csomópontok, míg a kapcsolatokat az élek jelzik. Csak azokat az egyedeket kötjük össze élekkel, amelyek között valamilyen kapcsolat van. (Ezt a típusú gráfot fának nevezzük, ugyanis egy gyökércsomópontból minden csomópont csak egyetlen úton érhető el.) 1. ábra: Hierarchikus adatmodell szerkezete |
|||||||||||||||||||||||||||||||||||||||
Hálós adatmodell |
|||||||||||||||||||||||||||||||||||||||
A hálós adatmodell szerkezetét (2. ábra) is gráffal adjuk meg, ahol a csomópontok szintén az egyedeket, míg a élek az egyedek közötti kapcsolatokat jelentik. Nézzük meg a 2. ábrát! 2. ábra: Hálós adatmodell szerkezete Van három egyedhalmazunk: vásárlók, rendelések és termékek. Ezek az egyedhalmazok egyedeket tartalmaznak, pl. a vásárlók egyedhalmaz az összes vásárlót, termékek az összes terméket stb. Nézzük meg a 2. ábrát! Minden vevő egyedhez tartozhat legalább egy, de akár több rendelés egyed is, amely egyszerre több terméket is magában foglal. Nevesítsünk pár egyedet az egyedhalmazból és rendeljünk hozzá tulajdonságokat: Ebből a gráfból már kiderül, hogyan kereshetünk konkrét értékeket. Ha pl. kíváncsiak vagyunk arra, hogy Adat Aladár milyen termékeket rendelt, akkor megkeressük a hozzátartozó rendelés egyedet, majd ennek alapján továbbmegyünk a rendeléshez tartozó termékekre. Az egyes egyedek közötti navigációs kapcsolatot pointerek (mutatók) segítségével valósítják meg. Ez az adatmodell nagyon sokáig egyeduralkodó volt, majd lassan felváltotta a napjainkban is használt relációs adatmodell. Ez az adatmodell képzi az alapját a mai modern adatbázis-kezelő rendszereknek. |
|||||||||||||||||||||||||||||||||||||||
Relációs adatmodell |
|||||||||||||||||||||||||||||||||||||||
Még ez előző két adatmodellnél fontos szerepet játszott az adatok közötti kapcsolat, a relációs adatmodellnél ez háttérbe szorul, átadva a fő hangsúlyt a az egyedeket meghatározó tulajdonságoknak. Az adatmodell logikai szerkezetét tehát a tulajdonságokkal határozzuk meg. Mennyiben más ez az adatmodell az előző kettőhöz képest? A relációs adatbázist egy táblázattal adjuk meg, ahol a táblázat oszlopai lesznek a tulajdonságok. A táblázat sorai pedig az egyed egyes értékei. A relációs adatbázis-kezelő rendszerekben a táblázat egyes sorait rekordoknak fogjuk nevezni. Nézzük meg ezt a következő példán.
Minden tábla egy-egy egyedhalmaz, de a táblázatok vagyis az egyedek közötti kapcsolatokat nem definiáltunk az adatmodell felírásakor!! Ez viszont nem azt jelenti, hogy az egyedek között nincsen semmilyen kapcsolat!! Eddig azt mondtuk egy táblára, hogy az adatbázis. Egy relációs adatbázis nagyon gyakran nem egyetlen táblából (relációból), hanem több táblából áll. Azt, hogy hány táblát hozunk létre egy adatbázis létrehozásakor, csakis tőlünk illetve a feladattól függ. Az mindenki számára egyértelmű, hogy ezek a táblák valamilyen kapcsolatban kell, hogy álljanak egymással, hiszen akkor mi értelme lenne magának az adatbázisnak? Ezt nagyon könnyen belátható, ha szétbontjuk az előbbi táblát két különálló táblára.
Az első táblát még fel tudjuk használni, de a második tábla gyakorlatilag semmit sem "ér". A két tábla között jelenleg nincsen semmilyen kapcsolat. Ha viszont a második táblát egy olyan oszloppal bővítjük, amely az adott egyed személyi számát tartalmazza, akkor a két tábla között máris kapcsolatot alakítottunk ki.
A relációs adatbázisokban az egyes táblákat közös attribútumokkal (oszlopokkal) tudjuk összekötni. Az ilyen oszlopokat kulcsoszlopoknak nevezzük. A relációs adatmodellben - a hierarchikus és hálós adatmodellel szemben - nem rögzítjük a kapcsolatokat és a kapcsolatok számát. (Úgyis mondhatjuk, hogy a hálós és hierarchikus adatmodellben az egyedek között fennálló kapcsolat statikus.) A relációk között fennálló kapcsolat mindig dinamikus. Mára ennyit az adatmodellekről. A következő cikkben egyre jobban belemélyedünk a relációs adatbázis-kezelő rendszerek tulajdonságaiba. |
|||||||||||||||||||||||||||||||||||||||
Kiszely Gábor |