Szemantikai adatmodellek és a hierarchikus adatmodell

 

Adatmodellek

 

Mint már említettük, az adatbázisok készítésénél és használatánál modellekben kell gondolkodnunk. Az egyes DBMS-ekhez saját modellek tartoznak, melyeken keresztül valósítható meg a felhasználó vagy tervező és az adatbázis kapcsolata. Az adatok tárolásának leírására szolgáló modelleket nevezik adatmodelleknek. A következőkben az adatmodell fogalmát részletesebben fogjuk elemzni.

Nézzük, mint is tudunk már az adatmodellekről. Az előző rész alapján megállapíthatjuk, hogy az adatmodell

- egy eszközrendszer, mellyel leírható a vizsgált valóság

- több különböző absztrakciós szinten is létezhet

- megkülönböztetünk DBMS-hez kötődő és emberközeli adatmodelleket

Ha tehát mi magunk kívánnánk egy saját adatmodellt létrehozni, aminek egyébként semmi akadálya sincs (az irodalomban is számtalan különböző adatmodell változat lelhető fel), akkor mindenek előtt egy olyan eszközrendszert, jelölésrendszert kellene létrehoznunk, melyek elemeit a modellezett valóság különböző elemeihez hozzárendelve, leírható vele a problématerület minden lényeges eleme. Az egyes adatmodellek lényegileg az alábbi szempontokban térhetnek el egymástól:

- milyen szinten árják le a valóságot,

- a valóság mely elemeire terjednek ki, s

- milyen jelölésrendszert használnak.

Elméletileg a megoldások elképesztően széles skáláját lehetne létrehozni a különböző elemek változtatásával. Példaként vehetünk egy olyan modellt, melyben a valóság résztvevő elemeit lerajzoljuk. Ez a megoldás ugyan mindenki számára igen könnyen érthető jelölésrendszert ad, azonban könnyen látható e javaslat hátrányai is: a jelölésrendszer csak szűk problémakörre alkalmazható, a valóság egyes elemei nem fejezhetők ki vele, s nehézséget okozna a számítógépes értelmezés is. Az értelmes és hasznos adatmodellek köre tehát sokkal szűkebb az elméletileg létrehozható modellek körénél, de még így is számtalan modellváltozat él a gyakorlatban.

 

A különböző adatmodellek megjelenésével együtt felmerült az igény e fogalom pontosabb jelentésének tisztázására is. Szükség van tehát egy egységes értelmezésre, mely irányt mutat a későbbi adatmodellek kidolgozására, s mely alapján megitélhetők az egyes változatok jósága is.

Az adatmodell pontos fogalmának meghatározása az 1980-as évek elején jelent meg az irodalomban. Pontosabban, a nagyobb nyilvánosság számára 1981-re jelent meg Codd cikke, melyben elsőként adja meg az adatmodell egzaktabb értelmezését. Ezen megközelítést aktualizálva, mi a következőkben adjuk meg az adatmodell jelentését.

 

Az adatmodell olyan matematikai formalizmus, mely a valóság adatorientált leírására alkalmas. Az adatmodellnek a valóság teljes értékű megadásához az alábbi három komponenset kell tartalmaznia:

- struktúrális rész, mely a valóságban megtalálható adattipusok és kapcsolataik leírására szolgál

- műveleti rész, mely felhasználásával különböző lekérdezési vagy módosítási tevékenységeket végezhetünk

- integritási rész, mely az adatbázisban megvalósuló adattipusokra és kapcsolatokra, valamint az elvégezhető műveletekre ad megszorítást

 

E hármas tagolódás az adatmodellek lényeges jellemzője, s a gyakorlati DBMS adatmodellek leírásaiban, utasításaiban is jól megfigyelhetők e komponensek jelenléte. E komponensek jelentésének bemutatására vegyünk egy egyszerűsített példát. Egy bankkártya kezelő információs rendszert kiválasztva, az adatbázis leírására szolgáló adatmodell esetén, a felhasznált adatmodellnek

- a struktúrális részben biztosítania kell a lehetőséget az ügyfelek, a kártyák és a számlák adatainak nyilvántartására, illetve eszközt kell adnia az ügyfél és kártya, valamint az ügyfél és számla összetartozások nyilvántartását is.

- a műveleti részben lehetőséget kell adnia a kártyához tartozó számlák és ügyfelek adatainak lekérdezésére, és a számlákhoz kapcsolódó kifizetések és befizetések teljesítésére.

- az integritási részben eszközt kell adnia arra, hogy az adatbázisba beépítsünk olyan megszorításokat, mint pl.: csak annyi pénz adható ki, amennyi a számlán van, vagy egy másik megszorítás: egy kártyához csak egy ügyfél tartozhat, s nem létezhethez két azonos kódszámú kártya.

 

A modell egyes komponenseit igen különböző módon és formában meg lehet valósítani. Tekintsük át ezért a következőkben, milyen szempontokat lehet figyelembe venni egy adatmodell értékelésénél, mikor tekinthetünk egy adatmodell jónak. E szempontokat egy listában fogjuk össze.

 

- elméletileg megalapozott: az adatmodellek viselkedésének, kapacitásainak és továbbfejlesztésének megitélésénél számos előnnyel jár, ha a modell biztos matematikai alapokon nyugszik. E téren kiemelhető a relációs adatmodell, mely egzaktsága révén megbízható megoldást nyújt.

- a megfelelő absztrakciós szint és az egyszerűség: a modellnek minnél szélesebb körben érthetőnek, elfogadottnak kell lennie. Igazodjon az alkalmazási körülményekhez. Az egyszerűség a közérthetőség mellett a megbízhatóságot is növeli.

- teljesség: a modellnek lehetőség szerint a valóság minden igényelt elemére ki kell terjednie. Ugyan sokszor az egyszerűbb elemekkel is lehet szimulálni öszetettebb dolgokat (pl. az értékek egyediségét gyalogmódszerrel, azaz az értékek átolvasásával is el lehet végezni, ha nincs lehetőség ilyen integritási feltétel megadására), azonban ezek sohasem egyenértékűek a testreszabott megoldással.

- megvalósíthatóság: a DBMS adatmodellek fontos kritériuma, hogy a rendelkezésre álló hardware és software technológiák mellett az adatmodellt hatékonyan, elfogadható végrehajtási idő mellett kezelni tudja a DBMS.

 

A teljesség kedvéért megemlítjük, hogy az adatmodell megadott értelmezése mellett egyéb megközelítések is léteznek. E megközelítések jellemzője, hogy sokkal tágabban veszik az adatmodellek körét. Egy ilyen értelmezés olvasható például Halassy könyében, mely szerint az

 

adatmodell az egyed-, tulajdonság- és kapcsolat-tipusok ill. az ezekre vonatkozó korlátok szervezett együttese.

 

Mint látható ezen megközelítés két ponton tér el lényegesen az előző definíciótól:

- nem szerepel benne említés a műveleti részről, csak a struktúrális komponens meglétét kívánja meg,

- a struktúrális komponens megadásánál konkretizálja a modell leíró elemeit az egyed-, tulajdonság- és kapcsolat-tipusokra.

Most nem térünk ki, hogy mit is értsünk pontosab egyed, tulajdonság alatt, hiszen ezeken fogalmakra egy külön fejezetet fogunk szentelni az ER modellek keretében. A most megadott definícióról mindesetre megállapítható, hogy igen szoros kapcsolatban egy létező adatmodellel, az ER modellel. Ugyanis a gyakorlatban adatmodellnek tekintett rendszerek döntő része nem tesz eleget az általunk megadott kritériumoknak. Ugyis mondhatjuk, hogy a mi definíciónk egy szigurú, szűkebb értelemben vett adatmodellt jelölt ki.

 

A lazább, tágabb értelmeben vett értelmezés szerint az adatmodelleknek nem szükségszerű része a műveleti és integritási rész. Így a tágabb értelmű adatmodellek körébe vehető fel egy sor olyan modell is, melyek a tervezés elősegítése céljából, a valóság struktúrális vetületének a leképzésére szorítkoznak. A következő fejezetben, a szemantikai adatmodellek között részletsebben is meg foguk ismerkedni néhány ilyan szűkebb értelemben vett adatmodellel.

 

Az adatmodell definicóját azonban nemcsak szűkítési céllal lehet módosítani. Codd értelmezésében az adatmodellhez a fenti három komponens mellett hozzátartozik még egy negyedik, úgynevezett értelmezési, interpretációs rész is, amely megadja, hogy mi a jelentése az egyes modellelemeknek. Eszerint a jelentés nélkül létrehozott modell nem használható pragmatikus célokra.

E felfogás jogosságát vitatja Gilula, aki szerint különbséget kell tenni információs és adatmodell között. E két fogalom viszonya hasonló az információelméletben szereplő jelentés és jelhordozó fogalmak közötti különbséghez. Az egyikhez tartozik értelmezés, jelentés, míg a másik egy formális leírást takar.

Gilula értelemzése szerint csak az információs modellhez szükséges jelentést, interpretációt csatolni. Az adatmodell ezzel szemben egy formális leírást jelent, így nem szükséges hozzá interpretációt is kötni. Ez az érvelés azon a tényen alapszik, hogy egy adatbázisban szerkezetét akkor is fel tudom tárni, ha nem ismerem az egyes szerkezeti elemek jelentését, s akkor is tudunk adatokat lekérdezni és az integritási szabályok által meghatározott kereteken belül felvinni és módosítani, ha nem vagyunk tisztában az adatok, az értékek jelentésével.

 

 

Szemantikai adatmodellek áttekintése

 

A szemantika szó magyarul egy jelsorozat jelentésnek fordítható. Az szemantikai adatmodell (SDM) kifejezés nem egy, önálló modellt jelöl, hanem egy modellcsaládot, melybe több különálló modell is beletartozik. Ami közös ezekben a modellekben, hogy mindegyik a felhasználóhoz közelálló, jelentésgazdag, szemantikai eszközkészlettel, modellel írja le a modellezett valóságot. A szemantikai adatmodellek célja a valóság leírását a számítógépnél megszokott egyszínű, szintaktikai kezelés, leírás helyett szemantikailag gazdagabbá tenni.

Itt például gondolhatunk arra, hogy milyen hasznos lenne, ha a DBMS tudná, hogy nincs értelme mondjuk a kocsi súlyát a gyártási évével összehasonlítani, habár szintaktikailag mindkettô azonos, hiszen egy numerikus értékkel adható meg mindkettő. A szemantikai modellek célja olyan leírást nyujtani, amelyben sokkal sokrétűbben megadhatók a valóságban fennálló viszonyok.

Mint már említettük, az SDM modelleknek ma még elsôdlegesen csak a tervezés során van szerepe, mivel még nem készültek SDM modellen alapuló DBMS implementációk. Ha közvetlen megvalósításuk nincs is, de igen erôs hatást fejtettek ki az egyes SDM tervezetek az adatbázismodellek kutatásában, melyekbôl a jövô DBMS modelljei fejlôdhetnek ki. Ezt jól példázza az objektum orientált adatmodellek elterjedése, mely nem is olyan régen mégcsak SDM formájában létezett, mint tervezési segédeszköz, mára azonban már DBMS modellé nőtte ki magát.

Az SDM modellek igen különböznek eszközkészletükben, ábrázolási módjukban, de sok közös vonás is felfedezhetô bennük. Közös a modellek célja, és a legfontosabb irányelvek, melyek e célok elérését irányozzák elô.

 

A valós világ tudatos modellezésének kérdése az emberiség igen régi problémája. Ismereteink szerint, már az antik görög kulturában, főleg Arisztotelész nevéhez kapcsolódóan, megjelent az a mai is élő világszemlélet, mely szerint a világ több egymástól elkülöníthető egységből áll, melyek között különböző struktúrális, asszociációs kapcsolatok állhatnak fönn. Magunkon is megfigyelhetjük, hogy amikor egy problémakört modellezünk, leírunk, a valóságot valamiképpen lebontjuk több, egymástól jól elkülöníthető, önálló léttel bíró egységekre, melyeket objektumoknak is nevezhetünk. A modellezés során önálló fogalmakat használunk az egyes objektumok azonosítására. Az egyes objektumok között különböző asszociácókat fedezhetünk fel, melyek utalhatnak tartósabb, mélyebb, struktúrális kapcsolatokra, de lehetnek ideiglenes jellegű kapcsolatok is.

Egy iskolai osztály modellezésénél önálló egységként megjelenő fogalmak lesznek többek között a diák, a név, az életkor, a lakcím, az iskolai pad, stb. Az egyes objektumok közötti tartósabb kapcsolatkora lehet példa a diák és a név, a diák és a lakcím (feltéve, hogy minden diáknak kell lennie nevének, lakcímének), míg a diákok közötti baráti viszony egy lazább kapcsolatot reprezentál a modellen belül.

 

Az SDM modellek célja a bennünk megjelenő valóság modell minnél hűbb és teljesebb leírása, mely során a számítástechnikai realizálhatóság hatékonysága csak másodlagos szerepet játszik. Az SDM modellekben megvalósuló legfontosabb törekvések a következô pontokban foglalhatók össze:

 

- Az SDM-nek lehetôséget kell adnia az modellezett világ emberközeli, természetes leképzésére. A modellnek expliciten ki kell tudnia fejezni az adatbázis jelentését. A modell ne tárolási hatékonyság orientált módon, hanem felhasználó orientált módon írja le a modellezett valóságot, ezáltal hatékonyabb eszközt adva a tervezônek.

- Az absztrakciós szintek megnövelése. Az adatmodellnek lehetôséget kell adnia a valóságban megjelenô komplex objektumok rugalmas leképzésére, mely során a kevésbé fontos részletek fokozatos eltüntetésével (information hiding) a kívánt absztrakciós szintre hozhatjuk az objektum leírását. A modellben több absztrakciós szint is megvalósítható, melybôl a felhasználó szabadon, rugalmasan választhat a feladat jellegétôl függôen. A modellnek lehetôséget kell adni a relatív nézetek, szemléletmódok kifejezésére is, ne legyen a tervezô keze megkötve a szemantika megjelenítésénél.

- Az objektumok közvetlen, direkt leképzése, az objektum egysége álljon a középpontban. Ez a törekvés arra irányul, hogy a modellezett világ bármely, tetszôlegesen komplex objektuma, egyedé, a modell egyetlen elemével leírható legyen. Azaz ne kelljen a valóságban egy egyedként elôforduló objektumot mesterségesen szétbontani, mivel a modellben csak így írható le az objektum. Ezáltal a modellnek képesnek kell lennie tetszôleges komplex struktúrák egy elemként történô megjelenítésére is.

Teljesség. A teljesség alatt azt értjük, hogy a modellben minden olyan eszköznek rendelkezésre kell állnia, mellyel bármely modellezett problémakör valósághűen, szemantikai veszteség nélkül leírható. Ez megköveteli a modell eszköz- és fogalomkészletének jól átgondolt kiválasztását, hogy lefedjen minden lényeges szemantikai elemet. Ez természetesen nem azt jelenti, hogy a valóság minden szemantikai eleméhez léteznie kell egy modellelemnek, megengedhetôk olyan specifikumok is, melyeket a modell több elemébôl felépített konstrukciókkal lehet csak leírni.

Egzaktság. A modell eszközkészletének, leíró nyelvének egyértelműnek, pontosnak kell lennie, nem fordulhat elô benne bizonytalanság, többértelműség. Az egzakt nyelvezet biztosítja az elkészített modellek

- konzisztenciáját (ellentmondás-mentességét)

- jóságát

- egyértelműségét

 

A SDM modellekben a fogalmak két nagy csoportját különböztethetjük meg, hiszen az SDM is, mint minden más adatmodell, tartalmazhat statikus, struktúra leíró elemeket, és a műveletek leírására alkalmas dinamikus elemeket.

 

A statikus elemek leggyakoribb képviselôi:

Elemi egyedtípusok és típuskonstruktorok. A típuskonstruktorok segítségével az elemi típusokból tetszôleges struktúrájú új típusok hozhatók létre. Az elemi adattípusok lehetnek standard típusok, mint az egész vagy karakter típus, és lehetnek absztraktabb jellegűek is, mint a ref vagy pointer típus. A típuskonstruktorok között kiemelt szerepet játszik a csoportképzés és az aggregáció operátorai. Az aggregáció különbözô típusokat fog össze, azaz az eredményül kapott új típus minden elôfordulása a hozzá tartozó típusok egy-egy elôfordulását fogja tartalmazni. Az aggregáció jól használható a kapcsolatok tárolására. A legtöbb modell megengedi az aggregáció ortogonális bôvítését, azaz amikor az aggregáció egy másik aggregáció típust is tartalmazhat. A csoportképzés egy csoportot képez a megadott típusú egyedekbôl, azaz a csoportképzéssel megalkotott egyedtípus minden elôfordulása az alaptípus több elôfordulásának halmazát tartalmazza. A csoportok és aggregációk egymásba ágyazásával tetszôleges mélységű struktúrák, típusok alakíthatók ki. A rugalmas felhasználhatóság alkalmazásának egyik problémája a rekurzív hivatkozások kezelésében rejlik.

Tulajdonságok. A tulajdonság az objektum egy jellemzôjét tartalmazza. A tulajdonság mint az egyed része, felfogható az objektum struktúra tagjaként is, mint egy passzív elem szerepelhet. Ebben a megközelítésben az alapobjektum egy aggregációként értelmezhetô. Egy másik megközelítési mód, hogyha azt az állítást, hogy Péter kora 38 év, úgy értelmezzük, hogy a Péter egyedhez hozzárendeljük a kor típus egy egyedét, a 38 évet. Tehát a tulajdonságot, mint hozzárendelést értelmezzük, mely az egyik egyedtípus egyik egyedelôfordulásához hozzárendeli egy másik egyedtípus egyik egyedelôfordulását. Ez a leképzés függvényként jelenik meg, így a tulajdonság mint függvény is értelmezhetô. Ez a megközelítés egy aktívabb szemléletmódot tükröz.

Specializáció (is_a) kapcsolat. Az egyedek, objektumok közötti kapcsolatokban kiemelkedô szerepet játszik a specializáció. Ez azt jelenti, hogy az egyik objektum a másik objektumnak egy speciális megvalósulása, tehát hordozza mindazon tulajdonságokat, ami a szülô objektumot is jellemzi. A hallgató és az oktató is egy speciális megjelenése az ember objektumnak, a hallgatóra is mindazon tulajdonságok hozzárendelhetôk, ami egy általános emberre jellemzô, de itt kötött a foglalkozás tulajdonság értéke, illetve emellett létezhetnek csak a hallgatóra jellemzô tulajdonságok is, mint pl. a tankör tulajdonság. Bizonyos modellek nemcsak az általánosabb típusból történô specializálást engedik meg, hanem a fordított eljárást is, amikor a speciálisabb típusokból képezünk egy általánosabb típust. A specializáció fogalmát eddig ugyan elsôdleges egy típus tulajdonság öröklési mechanizmusként értelmeztük, de emellett az fogalom is értelmezhetô egy másfajta megközelítésben, ha arra gondolunk, hogy a specializáció révén a speciális típus bármely elôfordulása egyben az általános típus elôfordulása is, vagyis amely feltételek az általános típus elôfordulásaira teljesülnek, azoknak a speciális típus elôfordulásaira is teljesülni kell, akkor a specializáció egyfajta integritási feltételként kezelhetô. Mind a specializáció, mind az általánosítás ugyanazon eredményhez vezet, csak a komponensek létrehozásának sorrendje különbözik. Az általánosításnál elôbb a speciálisabb típusok jönnek létre, s ezeket követi az általánosított típus. A specializációnál épp fordított a tevékenységi sorrend. A kialakult szerkezet rendszerint bonyolultabb egy sima fánál, hiszen ugyanazon típus több más típus általánosítása vagy specializációja is lehet. Ez a típusmegosztás jelensége. Ha a specializációnál az általános típus minden elôfordulása csak maximum egy speciális, leszármazott típushoz tartozik hozzá, akkor diszjunkt specializálásról beszélhetünk.

Meta egyedtípusok. A meta egyedtípusokat az elvontabb fogalmak leírására lehet felhasználni, melyek a létezô egyedtípusok alapján definiálhatók. A meta egyedtípus olyan típust jelent, melynek elôfordulásai maguk is típusok, s ekkor minden elôforduláshoz, vagyis típushoz hozzárendelhetô egy vagy több tulajdonságérték, mely érték tehát az egész típusra, az adott típus minden elôfordulására azonos értéket jelent.

Statikus integritási feltételek. Az integritási feltételek az egyedek között fennálló kapcsolatokat írják le és szabályozzák. Ebbe a tulajdonságok közötti kapcsolatok is beletartoznak, hiszen a tulajdonság is értelmezhetô objektumként, egyedelôfordulásként.

 

A dinamikus elemek leggyakoribb képviselôi:

- A modellben értelmezett műveletek köre. A műveletek magukban foglalják az egyedtípusokhoz és egyed-elôfordulásokhoz tartozó operációkat, az adatkezelés, adatlekérdezés lehetôségeit.

Leszármaztatott tulajdonságok. Olyan tulajdonságok megadására ad ez a fogalom lehetôséget, melyek értéke egy műveletsorral határozódik meg, tehát más, már létezô tulajdonságértéktôl függ az érték. A leszármazást egyes modellek nemcsak a tulajdonságokra, hanem típusokra is értelmezik. Erre jó példa a tinédzserek típusa, amely az emberek típusából származtatható oly módon, hogy a megadott intervallumba esô korral rendelkezô ember elôfordulások tartoznak a tinédzser típushoz. Ez a fajta leszármazás szoros rokonságban van a típus specializációval.

-  Triggerek. A trigger egy alapvetô fogalom az adatbázis-kezelésben. A trigger egy eseménylekezelô mechanizmus, mely két elembôl áll:

- esemény megadása

- választvékenység megadása

A választevékenység akkor hajtódik végre, amikor az esemény bekövetkezik. Az SDM-ben a triggerek az adatmodellt érintô változásokhoz, pl. új egyedelôfordulás felvitele vagy tulajdonság módosítása kötôdnek. Hasonlóan a választevékenységek köre is az SDM műveletekhez kapcsolódik.

Műveleti integritási feltételek. Ebbe a fogalomkörbe a modellben értelmezett műveletekre vonatkozó megkötések tartoznak. A megkötések tipikus esetei, amikor a műveleteket leszűkítjük speciális egyedtípusokra.

 

A fenti felsorolás megadja a SDM modellek legfontosabb komponenseit. Ez a felsorolást azonban semmiképpen sem szabad egy szigurú szabályként értelmezni, hiszen nagyon sokféle SDM modell létezik, melyek egymástól mind kifejezőképességben, mind formalizmusban eltérhetnek. Így több olyan modell is létezik, melyek a felsorolt elemekenek csak egy részét, néha csak egy töredékét tartalmazzák. Így a fenti felsorolás inkább egy összesítésnek tekinthető, mely lefedi az egyes SDM modelleket.

Nyilvánvalóan felmerül a kérdés, ha a fenti komponensek együttese biztosítja a legjobb megoldást, miért léteznek még egyéb, egyszerűbb SDM modellek is. Erre a kérdésre a válaszunk az, hogy e szempontok fontossága nem egycsapásra vált ismerté a köztudatban, hanem egy hosszabb folyamat eredményeként alakult ki. Előbb egyszerűbb modellek jöttek létre, melyek folyamatosan búvültek újabb és újabb elemekkel. Másrészt azt is be kell valanni, hogy habár azt mondtuk, hogy az SDM esetén nem elsődleges a DBMS megvalósíthatóság hatékonysága, azonban teljesen nem vethető el ez a szempont sem. Így olyan SDM modellek elterjedése valószínű, melyek jól igazodnak a létező DBMS kezelő nyelvhez. Így például hiába tudunk az SDM modellben műveleti integritási feltételeket megadni, ha az alkalmazott DBSM ezt a szolgáltatást nem tudja nyujtani. A gyakorlatiasság igénye tehát az egyszerűbb SDM modelleket is életben tartja.

Zárójelben megjegyezzük, hogy ez a gyakorlatiasság hosszabb távon azzal járthat, hogy egy szintaktikailag erősebb DBMS installálása után újra kell tervezni (reengineering) az addigi alakalmazás modelljét, hogy kihasználjuk az új rendszer előnyeit.

 

A következőkben áttekintjük a gyakorlatban legfontosabb SDM modelleket, melyeket tehát majd az adatbázisok tervezése során fogunk felhasználni. Előbb az egyszerűbb, a relációs DBMS-ekhez közel álló E/R adatmodellt vesszük, majd a fejletteb objektum orientált irányba haladunk tovább.

 

 

E/R adatmodell

 

A kidolgozott számtalan SDM modell közül elsôként a legegyszerűbb, gyakorlatban igen elterjedt módszert, az E/R modellt vesszük át. Az E/R modell, vagy rövidítés nélkül az egyed-kapcsolat (Entity Relationship)

modell az SDM modellek legismertebb képviselôje. Az E/R modell alapjai 1976-ban jelentek meg, Chen publikációja nyomán. Az E/R modell igen szoros kapcsolatban áll a korábban kidolgozott relációs adatmodellel, habár indulásként önálló adatmodelleként kívánták bevezetni, ma már, számos kiegészítés és javítás után, mint a relációs modellezés bevezetőjeként alkalmazzák. Előnyei közé tartozik az egyszerűség és a szoros kapcsolat, a könnyű konvertálhatóság a relációs modell felé.

 

Az E/R modell, mint az a neve részben mutatja, három alapelemen nyugszik: az egyedek (entity), az egyedek közötti kapcsolatok(relation) és az egyedek tuéajdonságok (attributes) fogalmain. az E/R modell kizárólag a valóság struktúrális leírásán alapszik, megengedve bizonyos egyszerűbb integritási feltéleket is. E egyszerűség miatt , korábban vita bontakozott ki, hogy menyiben tekinthető egyáltalán adatmodellnek az E/R rendszer. Codd, a relációs modell atyja, így jellemzete a modellt:

 

'I wouldn't call the E/R stuff s model because a data model must do more then support data base design,... the E/R model is narrow and shallow. It has no real susbtance and lacks precision and rigor.'

 

Vagyis Codd értelmezésében az E/R modell csak az adattervezést támogatja, nem biztosít megfelelő precizitást, ezért nem tekinthető adatmodellnek. Mi azonban már kissé tágabban értelmezzük az adatmodell fogalmát, hasonlóan Date-hez, aki szerint

 

'E/R model is indeed a data model, but one that is essentially just a thin layer on top of the basic relational model.'

 

Mint látni fogjuk, az E/R modellel egy egyszerű és elterjedt modellezési segédeszközt fogunk megismerni. Az E/R alapfogalmak pontosabb megismeréséhez induljunk ki a modellezett világból. Hogyan írnánk le mondjuk egy egyetem szerkezetét? Azt mondhatnánk, hogy az egyetemen vannak hallgatók, tanárok, tantárgyak, órák. Minden hallgatót meg tudunk különböztetni egymástól, hasonlóan a tanárokhoz, tantárgyakhoz vagy órákhoz. Mindegyik a világ egy önálló darabja, szereplôje, korábbi szóhasználattal élve objektuma. Az E/R terminológiában a modellezett világ azon szereplôit, melyel önálló léttel bírnak és melyekről több különböző információt tartunk nyilván, egyedeknek nevezik. Így egyednek tekinthető pl. a hallgató, melyről nyilvántartjuk többek között a nevét, a korát, az érdemjegyeit, stb.

Az egyedek között vannak hasonló szerkezetűek, és vannak egymástól igen különbözô felépítésűek. A hasonló felépítésű egyedek pl. hallgatók alkotnak egy egyedtípust. Ilyen egyedtípus a hallgatók, a tanárok, a tantárgyak típusa is. Ekkor minden egyedtípus több egyedelôfordulást ölel át, ahol egy egyedelôfordulás egy konkrét egyedet, egy konkrét hallgatót, vagy egy konkrét tanárt jelöl.

A valóságban jól meg tudjuk különböztetni az egyik hallgatót a másiktól, az egyik tantárgyat a másiktól. Hogyan tesszük ezt? Úgy hogy az egyik hallgató barna hajú, a másik fekete hajú, vagy az egyik hallgatót Nagy Gabriellának hívják, a másikat pedig Varga Tibornak. Tehát mindegyik hallgató rendelkezik egy sor tulajdonsággal, melyek más-más értékeket vehetnek fel az egyes hallgatóknál. A tulajdonságok az egyedhez kapcsolódó leíró szerepet betöltő értékeket jelölnek. Az egyedelôfordulásokat is az egyed tulajdonságai alapján azonosíthatjuk be. Az egyes egyedtípusok pedig elsôdlegesen a típushoz tartozó tulajdonságok körében térnek el egymástól. Hiszen más adatokat tartunk nyilván egy tanárról, mint egy tantárgyról. Az egyedtípus lényeges jellemzôje tehát a hozzá tartozó tulajdonságok köre.

 

Az egyedelôfordulások és az egyedtípusok azonban nem izolált, elszigetelt szereplôi a modellezett világnak, az egyedek kapcsolatban állnak más egyedekkel, egy összetettebb struktúrát hozva létre. A példánknál maradva egy hallgató több tantárgyhoz is kötôdik, egy tanár is kapcsolódhat több tantárgyhoz. Tehát a modellben az egyedek mellett a kapcsolataiknak is szerepelni kell. Az egyedek között különbözô bonyolultságú kapcsolatok állhatnak fel, s a modell akkor jó, ha alkalmas a kapcsolatok árnyalt kifejezésére.

 

Az E/R modell a valóság hűbb leképézésére az egyszerű egyed és kapcsolat elemek mellett megkülönböztet több változatát mind az egyedeknek, mind a kapcsolatoknak. E változatok között lényeges jelentésbeli és viselkedési különbségek vannak, s ezen kívül egészen másféle relációs modellbeli elemekre képződnek le.

 

Az E/R modell egyik lényeges tulajdonsága, hogy egy grafikus jelölésrendszert alkalmaz. A grafika, a szöveges leírástól eltérően sokkal kifejezőbb és lényegretörőbb a emberek számára, így kiválóan alkalmas a fontosabb fogalmak és kapcsolatok kiemelésére. A ma használatos E/R modell teljes elemkészletének részletes leírását és grafikai szimbólumaikat a következôkben adhatjuk meg:

 

- Egyed:

egy a külvilág többi részétôl egyértelműen megkülönböztethetô dolog

altípusai:

- normál egyed: rendelkezik olyan tulajdonságcsoporttal, mely egyértelműen azonosítja az egyedet. Egy autó például normál egyed, hiszen mind a rendszáma, mind a gyártási száma egyedi azonosítóként szolgálhat. Jele egy téglalap, melynek belsejében az egyedtipus azonosító neve áll:

 

 

 

- gyenge egyed: nincs azonosító tulajdonságrendszere, így más egyedhez fűzôdô kapcsolata szükséges az azonosításához. Előfordulhat példásul, hogy egy személynek nem tudjuk az azonosító adatait, csak egy nevét és azt hogy egy másik azonosított személynek valamilyen rokona. Így az illető egyértelmű kijelöléséhez szükség van a másik ismert személy megadására is. A gyenge egyed grafikus jele a duppla kerettel rajzolt téglalap, középen az azonosító névvel:

 

 

- Tulajdonság

az egyed egy meghatározott jellemzôje

altípusai

- egyszerű tulajdonság: egy elemi értékkel leírható tulajdonságot ad meg. A testmagasság például egyszerű tulajdonság, hiszen egy skalár szám elegendő a megadásához. A hobby ezzel szemben nem egyszerű tulajdonság, hiszen több értékket is felvehet egyidűjeleg az ember egyed eseteén, hiszen egy embernek több hobbyja is lehet. A tulajdonságok ellipszisben adjuk meg, az ellipszis közepébe írva a tulajdonság azonosító nevét. Mivel tulajdonság önmagában nem állhat, ezért mindíg meg kell adni, hogy mely egyedhez (vagy kapcsolathoz) kötődik. A kapcsolódást egy vonallal jelöljük, amely a megfelelő tulajdonságot és az egyedet köti össze:

 

 

- összetett tulajdonság: olyan tulajdonság, amely több elemi tulajdonság együttesére bontható. Ilyen tulajdonság például a lakcím, amely felbontható a város, útca, házszám, lakásszám elemi adatok együttesére. Az összetett tulajdonságot is ellipszissel jelöljük, melyhez hozzákötjük az illeszkedő elemi tulajdonságok szimbólumait:

 

 

- kulcs tulajdonság: az egyed egyértelmű azonosítására szolgáló tulajdonság. Az eutó egyed esetén például a rendszám játszhat azonosító szerepet. A grafikonon a kulcstulajdonságot úgy jelöljük ki, hogy a tulajdonság azonosító nevét aláhúzzuk egy folytonos vonallal:

 

- többértékű tulajdonság: olyan tulajdonság, amely nem egy elemi értéket, hanem több elemi értéket, az értékek egy tömbjét vehet fel. Így például a dolgozó egyed képzettség tulajdonságának leírására több elemi értéket is meg lehet adni, hiszen több képzettsége is lehet valakinek. Egy elemi érték egy sztringet jelent. A többértékű tulajdonságot egy duppla keretű ellipszissel reprezentáljuk:

 

 

- leszármaztatott tulajdonság: olyan tulajdonság, melynek értéke más tulajdonságokból vezethetô le, származtatható. Így például egy termék esetén az ÁFA kiszámolható a termék árából és az ÁFA-kulcs mértékéből. Az E?R modellben egy szagatott vonallal határolt ellipszis a leszármaztatott tulajdonság jele. A grafikonon nem jelöljük, hogy mely más tulajdonságokból és mi módon származtatható az érték:

 

 

- Kapcsolat

az egyedek között fennálló viszonyt hordozza.

altípusai

- 1:1 kapcsolat: a kapcsolatban mindkét egyedtípus előfordulásai csak egyetlenegy elôforduláshoz rendelődnek a másik egyedtipusból. Így például nálunk a házasság kapcsolat a férfi és a nő egyedtipusok között egy-egy jellegű, hiszen egy házasságban egy férfi és egy nő előfordulás ker-l kapcsolatba egymással. A kapcsolatot egy rombusszal szokás jelölni, melybe megadják a kapcsolatot leíró azonosító nevet. A négyszög átellenes csúcsaiból egy-egy nyilat húzunk, melyek a kapcsolódó egyedekhez vezetnek.

 

 

- 1:N kapcsolat: Annyiban különbözik az előző kapcsolattipustól, hogy az egyik, mondjuk A egyedtípus elôfordulásai több elôfordulással tarthatnak kapcsolatot a másik, mondjuk B típusból, de B egy elôfordulás továbbra is csak egy A előforduláshoz kapcsolódhat. Az autó és ember kapcsolata a tulajdonosság alapján, példa az 1:N kapcsolatra, hiszen egy autónak csak egy tulajdonosa lehet, de egy ember több autónak is lehet tulajdonosa. A 1:N kapcsolat ábrázolásánál azon egyedbe, melyből több is kapcsolódhat a másik egyedhez, egy kettősnyíl vezet. Az autó-ember példa esetén az autó egyedbe kell a dupplanyílnak vezetnie.

 

 

- N:M kapcsolat: olyan kapcsolattipus, melyben mindkét egyedtípus elôfordulásai több elôfordulással is tarthatják a kapcsolatot a másik egyedtípusból. Jó példa az N:M kapcsolattipusra a szereposztás kapcsolat a szinészek és a szindarabok között, hiszen egy szinész több szindarabban is játszhat, míg egy színdarabban is több színész szerepelhet. A kapcsolat ábrázolásánál mindkét kapcsolódó egyedbe kettősnyíl mutat:

 

 

- n-ed fokú kapcsolat: a kapcsolatban nemcsak kettő, hanem n egyed vesz részt. A valóságban ugyan a binér kapcsolat dominál, de elôfordulhat terciel, vagy magasabb fokszámú kapcsolat is. A hártmas kapcsolatra példa a rendelés kapcsolat, melyben a vevő, a szállító és az árú kapcsolódik össze, hiszen egy rendelésnél egy vevő, egy megadott terméket rendel egy megadott szállítótól. Az n-ed fokú kapcsolat ábrázolása abban különbözik a binér kapcsolatok ábrázolásától, hogy a rombuszból több nyíl fut ki.

 

 

- totális kapcsolat: egy A egyed totálisan vesz részt a kapcsolatban, ha minden egyedelôfordulása az A-nak részt vesz egy kapcsolatelőfordulásban, azaz nincs olyan A-beli egyedelőfordulás, mely nem kapcsolódna a másik egyedtipus valamely előfordulásához. Ha feltesszük, hogy minden autónak van tulajdonosa, akkor az autó totális kapcsolatban van ez emberrel a tulajdonosi kapcsolatban. Azon egyedek, melyek nem totálisan vesznek részt a kapcsolatban, parciális kapcsolatot alkotnak. Az előbbi példánál maradva, az ember csak parciálisan vesz részt a tuljadonosi kapcsolatban, mivel lehetnek olyan emberek, akiknek nincs autójuk. A totális kapcsolatban lévő egyedekhez egy duppla szárú él vezet, míg a parciális kapcsolatnál az eddig is használt egyszeres él vezet:

 

 

Az E/R modell használatára tekintsük a következô ábrát, mely egy képzeletbeli üzemi konyha nyilvántartásának egy részletét ábrázolja.

 

 

A minta modellben három egyed van, az étel, nyersanyag és szállító. Mindhárom erős egyed, mivel vannak kulcs tulajdonságaik. A tulajdonságok, a rendelés tulajdonságot kivéve egyszerű, elemi értékkel rendelkező tulajdonságok. A rendelés pedig egy összetett, többértékű tulajdonságként szerepel a modellben. Egy ételre tehát több rendelés is vonatkozhat, s minden rendelésnél a dátumot és a mennyiséget kell megadni. Az összár tulajdonság a többitől eltérően származtatott tulajdonság, hiszen a készlet és ear, azaz egységár tulajdonságokból, azok szorzataként megadható az értéke. A nyersanyag és a szállító között 1:N, míg az étel és nyersanyag között N:M tipusú a kapcsolat. A benne jelzésű kapcsolatnál látható, hogy tulajdonságot nemcsak egyedekhez, hanem kapcsolatokhoz is rendelhetünk az E/R modell keretein belül.

 

 

Modellezés az E/R modellel

 

Az adatbázis létrehozása során első lépésként rendszerint az E/R modell segítségével hozzák létre a problémakör adatstruktúrájának szemantikai leírását. Mint minden összetett rendszert, az E/R leírást is több különböző úton haladva hozhatjuk létre. Itt is célszerű azonban azt a bevált módszert alkalmazni, hogy előbb a fontosabb, lényegesebb elemeket határozzuk meg, majd ezekre alapozva később finomítjuk, kibővítjük a modellt egyéb kevésbé fontos elemekkel.

Az E/R modell esetén a központi szerepet az egyedek játszák, hiszen köréjük csoportosulva léteznek a tulajdonságok és a kapcsolatok is, azaz egyedek nélkül sem tulajdonság, sem kapcsolat nem létezik. Ezért a tervezés során célszerű elsőként a problématerületen megjelenő egyedeket számba venni, nevet és jelentést adva nekik.

Az egyedek felrajzolása után sorra vehetjük az egyedek között fennálló kapcsolatokat, kijelölve a kapcsolatok jellegét is. Az egyedek és a kapcsolatok együtt alkotják az E/R modell gerincét, vázát. Alapvetően e váz határozza meg a későbbiekben létrehozandó DBMS adatmodell struktúráját is.

Az egyedek és kapcsolatok megadása után sorba vehetjük, hogy milyen információkra van szükség az egyes egyedekre és kapcsolatokra vonatkozóan. A tulajdonságok kijelölésénél ügyeljünk arra, hogy milyen értékeket vehetnek fel, megkülönböztetve a többértékű és összetett és származtatott tulajdonságokat.

A tervezés előbbiekben megadott lépéseit, azaz a

- egyedek meghatározása

- kapcsolatok meghatározása

- tulajdonságok meghatározása

nem egy szigorú szekvencia mentén hajtódik végre, hiszen a bonyolultabb rendszerek esetén sokszor csak a későbbi lépésekben derülnek ki olyan módosítási igények, melyek korábbi lépések eredményeire vonatkoznak, azaz az E/R modell tervezése esetén is, hasonlóan a szoftver termékek általános tervezési metódikájához, ciklikus, ismétlődő tevékenységek mentén haladunk előre.

 

Az E/R modellezés egyik sajátsága mutatkozik meg abban a tapasztalatban, hogy amikor egy hallgatói csoportnak maximálisnak vélt részletezetettséggel kijelölünk egy adott modellezendő problémakört, sohasem lesznek az önállóan elkészült modellek egyformák. A jó, elfogadott modellek sem lesznek egyformák, vagyis egy problémakörre több, egymástól valamelyest eltérő megoldás is létezik. Nézzük meg, miből is fakadhatnak ezek a különbségek, a Codd által is kifogásolt hiánya a precizitásnak.

 

Az E/R modell egyik jellemzője, hogy az emberközlei fogalmakkal dolgozik, azaz egy tulajdonság megadása egyetlen emberi fogalommal történik, mint például név, cím. Az emberi fogalmakhoz viszont, mint közismert, igen gyakran bizonyatlan, pontatlan értelmezések és jelentések társulnak. Vegyük pélsául a cím fogalmát. A cím önmagában nagyon sokmindent jelenthet, pl. egy azonosító nevet vagy egy lakcímet. Ezenkívül a lakcím értelmezésére is több különböző megoldás kínálkozhat, hiszen ha akarjuk belevesszük az országkódot, az irányítószámot, s ha akarjuk kihagyhatjuk őket. Hasonló problémával találjuk magunkat szemben a név mező esetén is. Talán még felsorolni és szép munka lenne, hogy hányféleképpen lehet megadni egy nevet, igen érdekes kérdés, például hogy hol helyezkedjenek el a címek és rangok a néven belül. Egy másik gyakori félreértési forrásra mutat rá a videokölcsönző példánál előforduló eset. Az elkészült modellben mindenki szerepelteti a kölcsönzés fogalmat. De a kölcsönzés fogalom mást-mást jelent az egyes modellekben, ugyanis valaki a kölcsönzés alatt az éppen élő kölcsönzéseket veszi, míg mások a már valaha megtörtént kölcsönzéseket értik a megjeleölés alatt. e kéféle megközelítés pedig egészen másféle kezelési módot kíván a tervezés későbbi fázisaiban.

 

A kialakult modell szempontjából a bizonyatlanság másik forrása, hogy a tulajdonságok szerkezetét mennyire részletesen vegyük. A lakcím példájánál maradva a kérdés az, hogy egy egyszerű lakcím mezőt, vagy egy összetett lakcím mezőt szerepeltessük, amely az irányítószám, város, ország, utca, házszám mezőkra bomlik fel. Mi adhat itt útmutatást? Tanácsként azt javasolhatjuk, hogy abban az esetben, ha a feldolgozás során szükség van a részadatokra, mint önálló adatokra, akkor célszerű felbontani a tulajdonságot elemeire. Így például, ha szükség van az emberek város szerinti statisztikájára, akkor célszerű kiemelni a város tagok a lakcím tulajdonságból. Ha viszont semmi szükség sincs a részletek önálló elérésére, akkor feleslegesnek látszik a felbontás, habár ezzel szemantikai hibát nem okozhatunk.

 

A tervezőnek a modellezés során számos esetben egy fogalom ábrázolására is több lehetősége is van. Természetesen az egyes változatok nem teljesen egyenértékűek, de mindegyiknek lehet létjogosultsága. Elsőként nézzük azt az esetet, amikor egy fogalom egyed és tulajdonság is lehet. Ehhez vegyük az ügyosztály fogalmát példaként. Egy vállalati struktúra modellezésénél szerepelni kell a dolgozoók, projektek mellett az egyes ügyosztályoknak is, tehát az ügyosztálynak, mint egyednek kell megjelennie, mint az a következő modellréászlet is mutatja:

 

 

Ha viszont, mondjuk a vállalat egy önállóan működő könyvtári rendszerét modellezük, melyekben szintén nyilvántartjuk a dolgozókat az adataikkal együtt, akkor a dolgozó munkahelye, az ügyosztály tulajdonságként is szerepelhet. Az ügyosztály tulajdonságot akár összetett tulajdonságként is szereplethetjük:

 

 

Mindkét modell elfogadható. Miért volt tehát ez egyik esetben egyed a másikban tulajdonság ugyanaz a fogalom. Az első esetben az ügyosztály úgy szerepel, mint önálló egysége a problémakörnek, amely önállóan, a többi egyedtől függetlenül létezik. A másik esetben az ügyosztály nem létezik önállóan, csak a dolgozókhoz kötődve, a dolgozóhoz kapcsolódva, annak egyik jellemzőjeként él. Ezért ebben az esetben nem egyed, csak tulajdonság. A kétféle megközelítés tehát a fontosság, az önállóság tekintetében tér el egymástól.

 

A foglamak ábrázolási lehetőségeit vizsgálva olyan esetek is előfordulhatnak, amikor a fogalmat egyedként és kapcsolatként is ábrázolhatjuk. Vegyük példaként a házasság fogalmát. Egy polgármesteri, anyakönyvi hivatalban a nyilvántartás kiterjed a házasságkötésekre is. Ekkor a modellben a házasság, mint önálló léttel bíró fogalmo, mint egyed szereplhet, melyen önálló kérdéseket, műveleteket végezhetünk el, pl. lekérdezhetjük, hogy mennyi házasságot kötöttek az elmúlt negyedévben. A elkészült modell egy részletét mutatja a következő ábra:

 

 

Ha viszont pl. egy adónyilvántartási adatbázist dolgozunk ki, akkor nem a házasság, mint önálló egyed a lényeges, hanem csak az általa megvalósuló kapcsolat, hogy kik tartoznak egy családba. Ezért ebben az esetben a házasság, mint kapcsolat jelenik meg az adófizető polgárok között:

 

 

Itt a házasság fogalomból azért lett kapcsolat, mert nem a fogalom közvetlen előfordulásai, hanem az általa kijelölt kapcsolatok játszanak szerepet a modellben.

 

A harmadik döntési helyzet, amikor egy fogalomról el kell dönteni, hogy tulajdonság vagy kapcsolat legyen. Vegyük példaként az autó-ember tulajdonosi viszonyt. Ekkor lehet úgy is gondolkodni, hogy a tulajdonosi viszonyt úgy is nyilván lehet tartani, hogy az autóhoz (pl. annak forgalmi igazolásába) bejegyezzük a tulajdonos azonosítóját. Így a tulajdonosi viszonyt egy tulajdonságon keresztül tartjuk nyilván:

 

 

A másik megoldás, hogy a tulajdonlást egy kapcsolaton keresztül ábrázoljuk:

 

 

E megoldás azt emeli ki, hogy kapcsolatban áll a két egyed egymással. Az irodalomban ezt a megoldást javasolja, az előző változattal szemben, hiszen ez szamantikailag helyesebb és többet mond. Alapszabályként elfogadhatjuk, hogy csak azon fogalmakat vegyük tulajdonságként, melyek csak az egyedhez kapcsolódnak, az egyed elválaszthatatlan része, mely akkor is megvan, ha az egyed önmagában létezne. Az első megoldás ennek az elvnek nem tesz eleget, hiszen a tulaj mező csak akkor kell az autóhoz, ha vannak tulajdonosok. Ha az autó csak önmagában létezne, akkor nem lenne szükség tulajdonos jellemzőre sem.

Nem követendő az a furcsa megoldás sem, amellyel szintén lehet találkozni a megoldások között, s mely ötvözi az első kettő változatot, azaz mind a kapcsolat mind a tulajdonság megadás szerepel:

 

 

Ezzel nemcsak felesleges tulajdonságot vittünk fel, hanem redundáns adatokat is megadtunk a modellben, ami zavarólag hat a tervezés későbbi fázisaiban a DBMS modell kialakításánál is.

 

A fenti példákból látható, hogy az E/R modell értelmezése nem túl szigorú, számos esetben többféle változat is létezek a valóság modellezésére. Ezek a változatok egymástól bizonyos hangsúly eltolódásban különböznek, melyekre érdemes odafigyelni a tervezés során.

 

 

EE/R adatmodell

 

Az objektum orientált szemlélet elterjedésével egyre nőtt az igény az olyan SDM modellek felé, melyek már tartalmaznak bizonyos eszközöket a fejlettebb modell elemek leírására is. Az E/R modell ezirányú közvetlen továbbfejlesztésének eredményeként jöttek létre az EE/R modellek, amelyek az Extended E/R, azaz kibővített E/R modell elnevezést viselik.

 

Az EE/R modelleknek több különböző változatai vannak, melyek formalizmusban és elemkészletben különböznek egymástól. Mi most a Lawrence Berkeley Laboratory által kidolgozott EE/R modellt mutatjuk be. A modell leírását egy 1994-ben megjelent cikk alapján adjuk meg. A megadott modellhez hasonló elemeket tartalmaznak a többi kiterjesztések is.

A kiterjesztések alapvető eleme az osztályok és az osztályok közötti öröklési kapcsolatok figyelembe vétele. Az EE/R modell két új elemet tartalmaz az E/R modellel összevetve, mindkettő az egyedek közötti kapcsolatokra vonatkozik. Az egyik elem a tartalmazási kapcsolat, a másik új elem a specializációs kapcsolat.

 

A tartalmazási kapcsolat két egyedtipus között azt jelképezi, hogy az egyik egyed minden előfordulása tartalmazza a másik egyed előfordulásait. Például minden autónak van motorja, így a modellben az autó és a motor egyedek között egy tartalmazási reláció lesz. A tartalmazási reláció nem szimmetrikus, hiszen abból hogy az autó tartalmazza a motort, jön hogy a motor nem tartalmazhatja az autót. Így az EE/R modellben a tartalmazási relációt egy asszimmetrikus szimbólummal, egy nyíllal reprezentálják, amely a tartalmazó egyedből mutat a tartalmazott egyedbe. A nyil mellé odaírják a HAS szimbólumot, mivel a nyíl másféle szerepben is előfordulhat még. Az alábbi ábrában az A egyed tartalmazza a B egyedet:

 

 

A másik bővítés a specializáció. Egy B egyed akkor specializációja az A egyednek, ha B úgy is viselkedik, mint A, azaz A minden tulajdonsága megvan B-ben is és A előfordulásai közé beletartoznak B előfordulásai is. Egy autó például specializációja a járműveknek, hiszen a járművek minden tulajdonsága (sebesség, tömeg, stb) megvan az autónál is, és amikor a járműv előfordulásokat kell felsorolni, belevesszük az autó előfordulásokat is. A specializáció is asszimmetrikus kapcsolat, ezért ezt is egy nyíllal jelöli az EE/R modell, de most a nyíl mellé egy IS_A azonosító feliratot tesz. Az ábrán a B egyed az A egyed specializációjaként szerepel:

 

 

Mivel a specializáció megadásával azt is megadjuk, hogy A minden tulajdonsága egyben B-nek is tulajdonsága, ezért B-nél már nem tüntetjük fel az A-tól örökölt tulajdonságokat. Az előző példában a B egyedet az Y tulajdonság mellet az X tulajdonság is jellemzi.

 

 

AZ IFO szemantikai adatmodell

 

Az említett E/R alapú modellek mellett számos egyéb megközelítésű modellek is kialakultak. Ezek közül érdemes legalább a nevüket megemlíteni a funkcionális adatmodelleknek. A funkcionális adatmodell megjelölés arra utal, hogy a modellben a kapcsolatok függvényszerű formalizmussal adhatók meg. E modellek jellemzői, hogy a fogalmakat, objektumokat nem bontják szét egyedkre és tulajdonságokra. Mindkettő egy közös objektumként viselkedik. A kapcsolatok pedig ezen objektumok közötti leképzésnek tekinthető. Az autó példát véve, e megközelítés szerint, mint az autó, mint a rendszám egy-egy objektum. Azt a tényt, hogy minden autónak van egy rendszáma, a modellben egy függvénnyel adjuk meg, amely az autó objektum elemeit képzei le a rendszám objektumokra, azaz minden autó objektumhoz hozzárendel egy rendszám értéket. A többértékű tulajdonságok leképzésére e modellekben a többértékű függvényeket alkalmazzák.

 

Az 1970-es évek közepén kialakult funkcionális modellek egy módosított, kibővített változtatának tekinthető az 1987-ben megjelentetett IFO adatmodell. E modell Abiteboul és Hull nevéhez fűződik. Ugyan e modell kisebb jelentőséggel bír napjaink gyakorlatában, de számos olyan eleme van, amely továbbél az újabb adatmodellekben is. Mi e modellnek csak informális, intuitív részét vesszük át, a legfontosabb modellelemek bemutatására szorítkozva.

 

Az IFO modell is egy grafikus jelölésrendszert alkalmaz. A problémakör leírására szolgáló, elkészített modellt sémának nevezik. Az IFO séma egy irányított gráffal reprezentálható, melyben az egyes csomópontok az objektumokat, míg az irányított élek a kapcsolatokat jelölik ki.

 

A objektumok ábrázolásánál háromféle objektumtipust kkülönböztet meg az IFO modell. Az első csoportba tartoznak az elemi (printable) objektumok, melyek kiíratható, képernyőn megjeleníthető értékkel rendelkeznek. Ilyen elemi objektumnak tekinthető pl. a név vagy életkor, hiszen a név objektum egy sztringet, a kor objektum egy számot tartalmaz, melyek a képernyőre kiírathatók.

Az objektumok második csoportjába az absztrakt objektumok tartoznak. Az absztrakt objektumok olyan objektumokat jelölnek ki, melyek mögött nem egy elemi érték áll. Az ember, vagy autó egy ilyen absztrakt objektum, hiszen mindkettő nem egy elemi értékkel reprezentálható, hanem a hozzá kapcsolódó egyéb értékek rendszerével.

A harmadik csoportba a származtatott objektumok tartoznak. Ezek olyan objektumok, melyek más rendszerint absztrakt objektumokból származnak specializáció utján. Az IFO modellben a származtatott objektumok fő funkciója ugyanazon objektumnak több különböző szerepben való megjelenését biztosítani. Az autó-ember tulajdonosi rendszert az IFO modellben úgy ábrázolnánk, hogy az autó és ember absztrakt objektumok mellett létezik egy tulajdonos objektum is, amely az ember objektumból származtatható le. Az autó objektum e tulajdonos egyeddel állna kapcsolatban a tulajdonos viszony nyilvántartására.

A IFO formalizmusban az elemi objektumokat téglalappal, az absztrakt objektumokat rombusszal és a származtatott objektumokat ellipszissel jelölik:

 

 

A komplex értékstruktúrák ábrázolására két speciális konstruktor operátort taratlmaz az IFO modell: az aggregáció és a csoportképzés. Az aggregáció több különböző tiposú objektum együttesét jelenti. A keletkezett struktúra egy rekordnak feleltethető meg, mely több mezőt is tartalmazhat. A lakcím például az irányítószám, város, utca, házszám objektumok együtteséne, azaz aggregációjának tekinthető. Az aggregáció jelölésére egy körbe rajzolt + jel használható, melyből élek mutatnak az aggregációba bevont objektumokra:

 

 

A csoportképzés ezzel szemben azt a műveletet jelenti, amikor egy másik objektum több előfordulását fogjuk össze. Ez a konstruktor a Pascal tömb fogalmához köthető. Mivel egy embernek több szakképzettsége is lehet ezért az emberhez nem egy szakképzettség előfordulás, hanem szakképzettségek csoportja köthető. A csoportképzés grafikus szimbóluma a körbe írt csillag jel, melyből él mutat a többszörözött alapobjektumra:

 

 

Az objektumok közötti asszociációs kapcsolatok ábrázolására szolgálnak az irányított nyilak, melyek jelentése és funkciója hasonló a funkcionális adatmodellnél említettel:

 

 

Az ábrán az A objektumból indul ki nyíl a B objektum felé. Ez azt jelenti, hogy minden A-beli objektumelőforduláshoz rendelhető B-beli objektum előfordulás. Az E/R terminológia esetén e nyil vagy tulajdonságként, vagy egyedek közötti kapcsolatként jelenne meg. Az IFO modellben minden asszociációs kapcsolat kap egy azonosító nevet, melyet az ábrán a c betű szimbolizál.

 

Egy adott objektum struktúráját és asszociációs kapcsolatrendszerét leíró gráf részletet fregmentnek nevezik. A fregment elnevezés arra utal, hogy az így előálló gráfrészlet a séma egy önálló, logikailag összekapcsolódó részletét jelenti. Az irányítottságnak köszönhetően a fregmentek egy hierarchikus struktúrát alkotnak.

 

Az IFO modellből sem maradhatnak ki az objektumokhoz kapcsolódó specializációs operátorok. Az egyféle ISA kapcsolat helyett itt kétféle módon is megadhatók az öröklés: specializációval és általánosítással. Az specializáció egy létező objektumhoz különböző szerepköröket rendel. Ha az A objektum a B objektum specializációja, akkor B minden kapcsolata érvényes A-ra is, és a B-re való hivatkozás magába foglalja az A objektumokat is. A specializáció jele egy duppla vonalú nyíl, mely itt abba az objektumba mutat, amely általánosabb:

 

 

Az ábrán az A objektum lesz a B specializációja.

 

Az általánosítás azt jelenti, hogy több különböző objektumokból alkotunk azokat átfogó új objektumot. Így például az autó és a vonat általánosításával létrehozható egy jármű objektum. Az általánosítás, mely mintegy inverze a specializációnak, során az új objektum felfelé örökli az alap objektumok közös tulajdonságait. Az általánosítás grafikus jele egy vastagított élű nyíl az alapobjektumokból az újonnan létrehozott objektumba:

 

 

Az ábrán az A objektum jön létre az X és Y objektumok általánosításaiként.

 

Az IFO modell elemeinek együttes bemutatására vegyük az alábbi sémát, az IFO modellen alapuló SNAP nyelv mintapéldája alapján. Az ábrán egy utazási iroda nyilvántartási rendszerének részlete látható.

Az modellben szerepel egy személy absztrakt objektum, amelyhez egy név asszociálható, azaz minden személynek van neve a modellben. A személynek kétféle specializációját is láthatjuk, egyik a tárista, a másik az alkalmazott. A túrista annyiban gazdagabb a személynél, hogy hozzá már egy kategória objektum is kapcsolható tulajdonságként. Az alkalmazotthoz pedig nyelvek egy csoportja köthető, megadva hogy milyen nyelveket beszél az illető. Minden nyelvhez, mint elemi objektumhoz asszociálható egy szint, a beszédkészség szintje. Ezen hozzárendelés segítségével minden alkalmazotthoz megadható a beszélt nyelvek köre a hozzá tartozó készségszinttel együtt.

Az út objektumhoz három más objektum köthető tulajdonságként. Egyrészt az út azonosító id száma, másrészt az idegenvezető és a résztvevők egy csoportja. Minden résztvevő egyben egy túrista is, ezért a résztvevő a tárista egy specializációjaként van feltüntetve. Mivel minden idegenvezető egyben alkalmazott is, ezért ő is mint az alkalmazott specializációja van megadva. Ez útóbbit úgy is mondhatnánk, hogy az alkalmazott a modellben idegenvezető szerepben is fellép.

 

 

 

Hierarchikus adatmodell strukturális része

 

Az előzőekben ismertetett SDM modellek után áttérünk a DBMS adatmodellek tárgyalására. Mint már említettük e modellek lényeges jellemzője, hogy létező DBMS rendszerek futnak mögöttük, ebből következően e modellek figyelembe veszik a megvalósítás lehetőségeit, hatékonysági problémáit. A várakozásnak megfelelően e modellek sokkal alacsonyabb absztrakciós szinten állnak, sokkal közelebb vannak a fizikai megvalósításhoz.

 

Különösen igaz ez a most bemutatandó hierarchikus adatmodellre. Ezt a modell a legelső adatmodellként tartjuk számon, mely a hatvanas évek közepén alakult ki. Ugyan még ma is futnak elvétve hierarchikus modellen alapuló alkalmazások, de jelentősége mára már igen kicsi. Ennek megfelelően, mi sem fogunk részletesen foglalkozni vele, inkább csak bepillantást kívánunk adni pár oldal erejéig a legelső DBMS adatmodell felépítésébe működésébe. Az igazi súlypont majd a relációs modellre fog esni, de e kis kitérő révén talán mégjobban sikerül majd értékelni a relációs modell által nyújtott szolgáltatásokat, s sikerül jobban megérteni az adatbáziskezelés területén folyó fejlődést is.

 

A hierarchikus modell a valóságban előforduló hierarchikus szerkezetek leképzésére szolgál. A gyakorlati életben a társadalmi, vagy ipari rendszerek, de sokszor a természeti rendszerek is hierarchikus felépítést mutatnak. Egy vállalat például felbontható több üzemre, egy üzem felbontható több részlegre, s egy részleg felbontható több egységre, vagy munkacsoportra. A technológiai folyamatoknál egy gyártmány több technológiai folyamatból áll elô, s minden folyamat felbontható lépésekre.

A hierarchia olyan adatszerkezet, amikor az egyedelôfordulások egy fastruktúrát alkotnak, az egyedelôfordulások különbözô szinteken helyezkednek el, s egy egyedelôforduláshoz, mint szülôhöz több gyermekelôfordulás kapcsolódik, ahol a gyerekek a szülô alatt helyezkednek el. A fa élei a szülôket és a gyerekeket kötik össze. A fában egy szülônek több gyereke is lehet, de egy gyereknek csak egy szülôje lehet.

A hierarchikus modell egyik jellegzetessége, hogy nincs elméleti indíttatása. Ez a modell a különbözô és egymástól viszonylag független gyakorlati alkalmazások során fejlôdött ki fokozatosan. Elterjedését a sikeres és úttörô szerepű alkalmazások mint pl. IMS, segítették elô. A gyakorlatiasabb szemléletmódja egyszerűbb kezelô felülettel párosul, de egyszerűsége késôbb hátrányát növelte, ugyanis nem tudott a megnövekedett igényekhez alkalmazkodni, s így végképp kiszorult a DBMS piacán folytatott versenybôl.

 

A hierarchikus modellben az adatokat hierarchikus fákban tárolják. A modell két alapelembôl építhetô fel:

- rekordok ( mezők)

- gyerek-szülő kapcsolat (hierarchia, PCR)

A PCR angolul a szülô-gyerek kapcsolatot (Parent Child Relation) jelent. Egy PCR séma egy szülő rekord típusból és egy gyerek rekord típusból áll. Egy szülô egyedelôforduláshoz több gyermek egyedelôfordulás is tartozhat, pl. egy embernek több autója is lehet. Ezért a szülô és a gyermek egyedtípusok között 1:N típusú kapcsolat áll fenn.

 

A hierarchikus modellben tehát a hagyományos programozási nyelvekhez hasonlóan az adatok rekordokba rendezve helyezkednek el. Így minden adathoz léeteznie kell őt tároló rekordtipusnak, amelyben ő mint mező szerepel. A rekordon belül az egyes mezők csak elemi értéket tárolhatnak. Tehát a hierarchikus modell nem alkalmas közvetlenül a többértékű vagy összetett tulajdonságok, az aggregációk és csoportképzés megvalósítására.

A másik építő elem a PCR kapcsolat. A hierarchia felépítéséhez fel kell tárni a rekordtipusok közötti kapcsolatokat. A hierarchikus modell egyedül az 1:N kapcsolattipust tudja megvalósítani, ezért a többi kapcsolattipusnál a tervező hárul a feladat, hogy valamilyen formában bele tudja préselni az elképzelését a hierrachikus séma adta keretekbe.

A modellből ennek megfelelően minden specializációs vagy általánosítási kapcsolatot leíró eszközrendszer is hiányzik. Ez nem is csoda, hiszen, amikor e modellt kidolgozták, még nem született meg az objektumorientáltság hatékony szemlélete.

A hierarchikus modell tehát igen szerény eszköztárat bocsát rendelkezésre a valóság leírására. Ami a szemantikai kifejezőerőt gyöngítette, az hatékonyságot viszont fokozta. A modell alkalmas volt az akkori korlátozotabb hardware lehetőségek mellett is a megfelelő adatkezelési gyorsaság biztosítására. A gyakorlati alkalmazhatóság igénye viszont elsődleges szempont a DBMS modellek megitélésénél.

 

Visszatérve a hierarchia struktúrához, elmondható, hogy az egyes egyedtípusok közötti kapcsolatok több szinten keresztül is lenyúlhatnak, tehát egy gyermekegyed szerepelhet szülôegyedként egy harmadik egyedre vonatkozó relációban. Így több egymásba kapcsolódó PCR sémát kapunk. Egy közös gyökér PCR sémából kiinduló hierarchiát neveznek hierarchia sémának. A hierarchia séma tehát a rekordtípusok és PCR típusok együttese. A hierarchia séma szemléletesen egy fával reprezentálható.

 

Mivel a modellezett világ sokszor bonyolultabb annál, hogy egyetlen hierarchikus fával le tudnánk írni, ezért megengedett, hogy több fát is használjunk. A hierarchikus adatbázis séma több hierarchia séma összességébôl áll elô. A vállalat példánál maradva, külön hierarchikus sémát készíthetünk a technológiai folyamatokra, a szervezeti felépítésre, a raktározásra, számlázásra.

 

A modell szemléletesebb leírására rendelkezésre áll egy grafikus jelölés rendszer, a hierarchikus diagramm. A diagrammal ábrázolhatjuk a fák szerkezetét, ez lesz a séma diagramm, illetve az egyes fa elôfordulásokat is, melyet elôfordulási diagrammnak neveznek.

 

A hierarchikus diagrammok az egyedeket és a tulajdonságaikat nem elkülönülten ábrázolják, mint ahogy azt az ER modellben megszoktuk, hiszen ott külön grafikai szimbólum volt az egyed és a tulajdonság jelzésére. Ebben a leírásban egyetlen egy téglalap foglalja össze az egyed azonosítóját, és tulajdonságainak összességét. A következő ábra egy vállalati struktúrát mutat be.

 

 

A megadott példában az ügyosztály egyedtípus helyezkedik el a hierarchia gyökerében, s alatta vannak az alkalmazottak és a projektek. Ez az alárendeltség azt jelenti, hogy egy ügyosztályhoz több alkalamzott és több projekt is kapcsolódhat. Az sémából az is kiolvasható, hogy az ügyosztályt egy id azonosító, egy megnevezés és egy cím adat ír le. A másik két rekordtipus szerkezete is megállapítható az ábra alapján.

Az ábrában egyes mezők nevei aláhúzottan jelennek. E kiemelés mutatja, hogy az adott mező kulcsszerepet tölt be a többi mező között. A kulcsmező, hasonlóan a kulcs tulajdonsághoz, arra szolgál, hogy értékével egyértelműen kijelölje a rekordelőfordulást.

 

A hierarchia sémák szerkezetét összefoglalhatjuk néhány pontban, melyek a hierarchia séma egy-egy jellemző oldalát emelik ki:

- van olyan rekordtípus (a gyökér), mely nem szerepel gyerekként egyetlen, a fához tartozó PCR-ben sem

- minden más rekordtípus pontosan egy PCR-ben szerepel gyerekként

- egy rekordtípus több PCR-ben is szerepelhet szűlőként

- levélnek nevezzük azokat a rekordtípusokat melyek sehol sem szűlők

- egy szülőhöz tartozó gyerekrekordok típus szerint rendezettek

- egy gyerekelôfordulásnak egy szülôelôfordulása van

 

A fenti formálisabb leírás lehetôséget ad a szerkezet automatizált ellenôrzésére. A megkötések, mint szerkezeti integritási feltételek is értelmezhetôk, a szerkezet felépítése során mindvégig érvényben kell maradniuk.

 

A hierarchikus modell fô elônye, az egyszerűség nemcsak a modellezésben, a koncepcionális szinten jelentkezik, hanem a fizikai, belsô szinten is. A hierarchikus sémához tartozó előfordulási fákat ugyanis egyszerű eszközökkel és egyszerű struktúrákban is könnyen tárolhatjuk. Mindez különösen akkor volt fontos, amikor még nem álltak rendelkezésre a gyorsabb közvetlen direkt szervezést megvalósító lemeztárolók, s csak a szalagos adattárolással együttjáró kötöttségekhez kellett alkalmazkodni. A hierarchikus elôfordulási fa a szekvenciális szervezésben is hatékonyan letárolható, az előfordulási fa ugyanis linearizálható. A fák bejárására több különbözô módszerek léteznek, s mindegyik bejárás végül is linearizálja a fát, minden csomóponthoz egy bejárási sorszámot rendelve, mely sorszám megfeleltethetô a csomópont szalagon elfoglalt pozíciójának. A fa pl. bejárható az elsőként baloldal utána jobboldal elven, amikor egy adott részfánál elôbb a gyökér, majd a gyermekek részfái következnek balról jobbra haladva. Ennél a bejárásnál egy csomópont

leszármazottai mind az elem után helyezkednek el. A kiíratás megvalósítható

pl. az alábbi algoritmussal:

kiir(cs) {

output (cs);

for (i=1; i<cs.gyerekszam; i++) {

kiir(cs.gyerek[i]);

}

}

 

A visszaolvasásnál az eredeti elôfordulási fa egyértelmű helyreállítást úgy érik el, hogy minden rekordtípushoz rendelnek egy típusjelzést és ezt is letároljuk az állományban. Ezáltal követni tudjuk, hogy a hierarchia mely szintjén járunk, s megtudjuk határozni a testvéreket is. A típusjelzésnek azonban elegendô csak a fizika nézetben szerepelnie, s nem kell külön típusjelzô tulajdonságot hozzáfűzni az egyes egyedtípusokhoz a koncepcionális modellen belül. Ez egyben jó példának tekinthetô az egyes nézetek tartalmi különbségének szemléltetésérte is.

 

Ugyan a linearizálás, a szekvenciális tárolási mód egyszerű, és hatékony a teljes hierarchia visszaállításánál, de ez a hatékonyság eltűnik, ha a műveleteknek csak egy részfát kell visszaadniuk, illetve ha a fa olyan nagy hogy nem fér be a memóriába, s sokszor a fa különbözô szeleteiért visszanyúlni a szalaghoz. A hierarchia másik hátránya, hogy alapvetôen csak egyféle keresési irányt támogat, a fentről lefelé irányt. Egy adott elem ôseinek, elérési útvonalának a meghatározásához az egész fát át kell olvasni, ha csak az adott elem pozíciója ismert. E visszafelé keresés megkönnyítésére bizonyos módosításokat, bôvítéseket kell végrehajtani az alapmodellen. Ennek egyik változata lehet, hogy pointereket építünk be az egyedelôfordulásokba, melyek a szülô felé mutatnak. Mindez már mutatja, hogy a hierarchikus modellnek vannak bizony hiányosságai.

 

Az elôbb említett hatékonysági problémák mellett az más modellezési nehézségek is fellépnek a hierarchikus modell használatakor, mint pl az:

- N:M kapcsolatok tárolása

- egy rekordtípus több PCR-részt venne mint gyermek

- többszörös kapcsolatok

 

A felvázolt hierarchikus modell ugyan jól simul a valóságban elôforduló hierarchikus szerkezetekhez, de a hierarchikus szerkezetek mellett gyakran találkozhatunk ettôl bonyolultabb rendszerekkel is, melyek már nem simulnak a hierarchikus fa felépítéshez. Gondoljunk csak a színészek és színdarabok kapcsolatára, ha ezt mondjuk egy évadra vonatkozóan vizsgáljuk. Egy színész több színdarabban is játszhat, s egy színdarabban több színész is szerepelhet. Ez már nem egy hierarchikus kapcsolat. Hogyan lehet tehát a nem 1:M kapcsolatokat, az N:M típusú relációt megvalósítani ?

Az elmondottakból következik, hogy közvetlen reprezentáció nem lehetséges. Egy kerülôutat jelent, ha feloldjuk azt a megkötést, hogy egy gyermekelôfordulásnak csak egy szülôelôfordulása lehet. Pontosabban feltesszük, hogy egy gyermekelôfordulás többször is szerepelhet egy PCR kapcsolatban. A séma tehát egy 1:N kapcsolatot sugallna, s csak az elôfordulási fa mutatná, hogy itt valójában N:M kapcsolatról van szó.

 

A vázolt problémák tehát rekord előfordulás duplikálással megoldható . A rekord duplikálás viszont számos újabb problémát hoz magával. Ezek között az egyik legszignifikánsabb a redundancia kérdése. A felesleges redundancia ugyanis felesleges helyfoglalást okoz, nehezebb az adatkezelés, hiszen gondoskodni kell a módosítások konzisztens, minden példányon történô végrehajtásáról.

A nehézségek elkerülésére egy új koncepciót vezettek be a HDBMS-eknél, mellyel elkerülhetôk a felesleges redundanciák, mégis látszólag megmarad a többszörös rekordelôfordulás.

 

A kapcsolatok tárolására a közvetlen fizika elhelyezkedés helyett bevezetjük a pointer használatát, s a pointer segítségével kötjük össze a gyereket a szülővel. Tehát nem kell a rekordot még egyszer elhelyezni a szülô mögé, hogy jelezzük a kapcsolatot, azaz nem fogjuk fizikailag megsokszorozni az egyedelôfordulást. A kapcsolatot egy pointer jelzi, melynek technikai okok miatt a gyerekbôl kell kiindulni a szülô felé. A szülôbôl ugyanis meghatározatlan számú pointer indulhatna ki a gyerekek felé, míg a gyerekbôl csak egy pointer indul ki. S egy rögzített méretű struktúrát egyszerűbb implementálni, mint egy dinamikusat, fôleg a régi, hagyományos programozási környezetben.

A pointerek átmutathatnak más hierarchia előfordulási fában elhelyezkedô rekordokra is. A pointerek tehát összeköthetik az egyes elôfordulási fákat. Azon rekord típusokat, melyek ilyen pointert tartalmaznak, virtuális rekord típusnak nevezik (VR). A pointerek révén megvalósított PCR-t nevezik virtuális gyerek-szülő-kapcsolatuk (VPCR). A VPCR is egy 1:N kapcsolatot valósít meg, de nem fizikai pozícionálással, hanem a pointerek felhasználásával.

 

 

Az ábrában a B és a C rekordtipusok fizikailag, pozició alapján kapcsolódnak az A rekordtipushoz, mint ahogy az E is kapcsolódik a D-hez. A C tipus azonban pointeren keresztül, VPCR révénkapcsolódik a másik fa gyökerhez a D rekordtipushoz. Ekkor mind A és mind D egy-egy előfordulásához a C előfordulások egy halmaza köthető.

 

Nézzük, hogyan alkalmazhatók a VPCR-ek az N:M típusú kapcsolatok letárolására. Ekkor a VCR, virtuális gyerek rekord, gyerekegyed szerepét tölti be. A kapcsolathoz tehát két hierarchia séma kellett, melyek gyökérben a két kapcsolódó egyedtípus áll. A fenti séma megvalósulásakor egy A előforduláshoz több VCR előfordulás is csatlakozik, s mindegyik egy B előfordulásra mutat.

Az előfordulás alapján egy B előfordulásra több VCR rekordelőfordulás is mutathat. Az N:M kapcsolat tárolására tehát létre kellett hozni egy virtuális egyedtípust, egy kapcsoló egyedtípust, mely egyrészt fizikailag kapcsolódott az egyikegyedhez, míg másrészt pointeren keresztül kapcsolódott a másik egyedhez, tehát mindkettônek a gyereke egyidejűleg. Az egyiknek fizikai gyereke, a másiknak virtuális gyereke.

 

A VPCR szerkezettel megszűntethetők a fajlagos redundanciák, viszont az eddigi pozíciókban leképzett kapcsolat mellett új kapcsolat-nyilvántartás módszer jelent meg. Ebben VCR egy segédszerepet tölt be, jelentése nem egy önálló objektum kapcsolható, hanem a kapcsolathoz magához. Ha e kapcsolatnak vannak egyedi tulajdonságai is ( pl. a szerep szerepelhet a színész és színdarab vonatkozásban ilyen, a kapcsolatra magára jellemzô tulajdonságként), akkor ezen adatok a VCR-hez kapcsolható, a pointerekkel együtt tárolhatók. Ezen adatokat nevezik intersection adatoknak.

 

 

Az előző ábrán két hierarchia fát láthatunk. Az egyik a szervezeti egységekre, a másik a projektekre vonatkozik. Az adatbázis sémában a következô kapcsolatok tárolódnak:

- osztály:helyiség

- osztály:dolgozó

- dolgozó:képzettség

- projekt:dolgozó

A kapcsolatokból a projekt:dolgozó egy N:M típusú kapcsolat, a többi 1:M típusú kapcsolatként értelmezett. A projekt:dolgozó kapcsolat egy segéd rekordtipus alkalmazásával oldható meg, amely fizikailag a dolgozó alatt van, de logikailag, pointerekkel a projekthez is kapcsolódik.

 

A hierarchikus modellhez számos integráció feltétel kapcsolódik, melyeket eleve beépítettek a modellbe. Az elôzôekben már felsoroltuk ezen integritási feltételeket. Ezeket nem a felhasználónak kell definiálnia, eleve be vannak építve a hierarchikus modellbe. A hierarchikus modellek viszont nem támogatják új egyedi integritási feltételek definiálását , tehát csak a beépített integritási feltételek kapcsolódnak az adatbázishoz. Ha az alkalmazás ezenfelüli, egyedre vagy kapcsolatra szóló integritási feltételt tartalmaz, hogy pl. egy színész maximum 5 színdarabban játszat, akkor minden ilyen jellegű egyedi megkötést a kezelő programban kell megvalósítani, s nem lehet az adatmodellben letárolni. Ahány alkalmazói program érinti ezt a megkötést, annyi helyen kell ügyelni a betartására. A legfontosabb beépített integritási feltételek a következôkben foglalhatók össze:

 

- csak a gyökér rekordtípus előfordulás létezhet szülő nélkül

- egy gyerek rekord típus előfordulás csak a szülőkapcsolattal együtt vihető be az adatbázisba.

- szülő rekord előfordulásának törlése a gyereket, azaz a leszármazottak is törli

- VPR addig nem törölhető, amíg mutat rá egy pointer.

- ha egy gyerekrekordtípus előfordulásnak több különböző típusu szülőrekord előfordulása van, ekkor VPCR alkalmazható.

 

 

Hierarchikus adatmodell műveleti része

 

A következőkben az adatmodell jobb megértésére egy minta kezdő nyelvet mutatunk be, mely nem egy konkrét HDBMS nyelve, ez egy példanyelv, mely a létező HDBMS nyelvek leglényegesebb elemeit emelik ki. A nyelv egy beágyazott használatra épül.

 

Adatdefiníciós utasítás (HDDL)

 

A HDDL rövidítés a hierarchikus adat definiáló nyelv (hierarchical data definition language) rövidítése. A DDL nyelvek célja az adatbázisban tárolandó struktúrák leírása. A DDL nyelv segítségével lehet az adatbázisban létrehozni az adatstruktúrákat. A DDL emellett a létező struktúra elemek módosítására és megszüntetésére is tartalmaz utasításokat. A hierarchikus modell definiálandó elemei a következôk:

- rekord

- mezők

- típus

- gyökér

- szülő

- PCR

- VPCR,

 

A nyelvet egy példán keresztül mutatjuk be. A példában egy minta grafikus sémához készítjük el a DDL utasítássorozatot. A mintapélda egy vállalati struktúra részletét mutatja:

 

 

A séma megadásához előbb a keret, a sémát kell léátrehozni:

 

SCHEMA NAME = VALLALAT

 

Eztkövetően ki kell jelölni, milyen hierarchi-fákat fog tartalmazni a séma, megadva az egyes hierarchiák azonosító nevét is:

 

HIERARCHIES = HIER1, HIER2

 

A hierarchiák kijelölése után következhet a hierarchiák részletes szerkezetének leírása. Ehhez ki kell jelölni a hierarchában előforduló rekordtipusokat, s definiálni kell az egyes rekordtipusok szerkezetét is. A rekordtipusok struktúrájának és az egymáshoz való kapcsolódásuknak a leírása egyazon nyelvi szerkezetben, a rekordot definiáló részben történik. A rekord definiálásakor ugyanis nemcsak a hozzá tartozó mezőket, hanem a szülőrekordtipust is meg kell adni. A hierarchia csúcsán álló rekordtipusoknál a szülő helyett a hozzá tartozó hierarchiát adjuk meg. A soronközvetkező uatsításokban rendre az alkalmazott, osztály, projekt és a segédrekord szerepét betöltő osztalkal rekordtipusok definícióját láthatjuk.

 

RECORD

NAME = ALKALMAZOTT

TYPE = ROOT OF HIER2

DATA ITEMS =

NEV CHAR 15

KOD INTEGER

SZULHELY CHAR 20

SZULIDO DATE

LAKCIM CHAR 30

FIZETES INTEGER

KEY = KOD

ORDER BY NEV

RECORD

NAME = OSZTALY

TYPE = ROOT OF HIER1

DATA ITEMS =

MEGNEVEZ CHAR 15

KOD INTEGER

KEY = KOD

ORDER BY MEGNEVEZ

 

RECORD

NAME = PROJEKT

PARENT = OSZTALY

CHILD NUMBER = 1

DATA ITEMS =

MEGNEVEZ CHAR 15

KOD INTEGER

KEY = KOD

ORDER BY MEGNEVEZ

 

RECORD

NAME = OSZTALKAL

PARENT = OSZTALY

CHILD NUMBER = 2

DATA ITEMS =

KOD POINTER WITH VIRTUAL PARENT =

ALKALMAZOTT

 

Ezzel teljes egészében ismerté vált a DBMS számára is a létrehozandó struktúra.

 

Összefoglalva, a HDDL nyelvben a következő kulcsszavak fordultak elő az alábbi jelentést hordozva:

 

- SCHEMA NAME: az adatbázis séma azonosító neve

- HIERARCHIES: az adatbázisban lévô hierarchikus sémák nevei

- RECORD: egyedtípus azonosítás

- NAME: egyedtípus neve

- TYPE = ROOT OF: az egyed gyökér a hierarchiában

- DATA ITEMS: mezô azonosítások

- KEY: kulcsmezô

- ORDER BY: egyedelôfordulások rendezési elve

- PARENT: szülô egyedtípus

- CHILD NUMBER: egyedtípus sorszáma a gyerekek között

- POINTER WITH VIRTUAL PARENT: pointer egy virtuális szülôre

 

A fenti utasításkészlet elegendô egy egyszerű hierarchikus adatbázismodell megadására. A minta is érzékelteti a modell viszonylag merev szerkezetét. Szembetűnhet például, hogy az adatbázis megadásánál rögtön fel kell sorolnunk az oda tartozó hierarchiákat, tehát elôre ismernünk kell az adatbázis szerkezetét. Egy rugalmasabb modelltôl elvárnánk, hogy széttagoltan, izoláltan lehessen definiálni a hierarchiasémákat.

 

Az utasítások másik nagy csoportja az adatkezdő utasítások ( HDML ) köre. A HDML a hierarchikus adatkezelő nyelv (hierarchical data manipulation language) rövidítése. A DML nyelv azon utasításokat fogja össze, melyek az adatbázisban letárolt adatok lekérdezését, módosítását, bővítését és kitörését teszik lehetővé.

A hierarchikus modellek a rekordorientált műveleteket támogatják, ezért a kezelô nyelve is a rekordonkénti feldolgozásra épül. Mivel a műveletek rekordszinten hajtódnak végre, a feldolgozásnál lényeges szerepet játszik, hogy hol tart a feldolgozás, mi lesz a következő feldolgozási rekord. Ezért a rendszer nyilván tartja az aktuálási rekord pozíciót. Mivel a modellben a hierarchikus sémák és a rekordtípusok is viszonylag önálló szerepet töltenek ezért a következő szinteken végzik a kurrens rekord nyilvántartását az adatbázison belül:

- adatbázis szintje

- hierarchiafa szintje

- egyedtípus szintje

 

A HDML parancsok jellegének szemléltetésére a következő parancsokat emeljük ki:

 

- GET: az aktuális rekord beolvasása a kijelölt memóriaváltozókba

- INSERT: új rekord beszúrása

- DELETE: rekord törlése

- REPLACE: rekord módosítása

- GET HOLD: rekordpointer rögzítése

 

Az egyes parancsok részletesebb szintaktikája megmutatja a műveletek jellegét, működési elveit is.

 

- GET FIRST típus WHERE feltétel:

az elsô, feltételnek megfelelô egyedtípus elôfordulás meghatározása

- GET NEXT típus WHERE feltétel:

a következô, feltételnek megfelelô elôfordulás meghatározása

- GET HOLD FIRST | NEXT típus WHERE feltétel:

egy rekord kiválasztása törléshez, vagy módosításhoz

- DELETE típus:

a kurrens elôfordulás törlése

- INSERT típus FROM változó:

egyedtípus elôfordulás beszúrása

- REPLACE típus FROM változó:

egyedtípus elôfordulás módosítása

 

A fenti műveleteket értelmezéséhez figyelembe kell venni, hogy a DML és a DDL utasítások egy gazdanyelve beágyazva használhatók. A gazdanyelv és az adatbázis adatkapcsolata a program munkaterületén keresztül valósul meg. A programban olyan rekordváltozókat kell definiálni, melyek azonosító nevei megegyeznek az egyedtípusok neveivel. Ez a programváltozó mindig a kurrens adatbázis rekord értékét tartalmazza minden egyedtípusnál. Így egy GET után ebben a változóban találhatjuk meg az adatbázisrekord értékét is. A beszúrásnál és módosításnál az új értékeket egy másik, de ugyanilyen szerkezetű programrekordból veszi a rendszer. Az utasítások, mint látható rekordorientáltak, s ennek szemléltetésére álljon itt egy példa az összes 10000 Ft-ot keresô alkalmazotti egyedelôfordulás kiíratására:

 

HDBMS GET FIRST ALKALMAZOTT WHERE

ALKALMAZOTT.FIZ = 10000;

while (!DB_STATUS) {

printf ("%s\n",ALKALMAZOTT.NEV);

HDBMS GET NEXT ALKALMAZOTT WHERE

ALKALMAZOTT.FIZ = 10000;

}

 

A példában a C nyelvet választottuk gazdanyelvként. A HDBMS kulcsszó jelzi, hogy az adott sor egy DDL vagy DML utasítást tartalmaz (laza csatolás). A DBMS és az alkalmazás közötti kapcsolat egyik lényeges, eddig nem említett elemét is megfigyelhetjük itt. Lényeges ugyanis, hogy az alkalmazás értesüljön a kiadott utasítások végrehajtásának sikerességérôl, hiszen ennek függvényében adódnak a következô lépések. A hibakezelés egy foglalt változón, a DB_STATUS-on keresztül valósul meg, értéke jelzi, hogy sikeres volt a végrehajtás vagy sem. A rekordorientáltság miatt a teljes elôforduláshalmazra vonatkozó utasításokat ciklus szervezéssel oldhattuk meg.

 

 

E/R - hiererchikus modellek konverziója

 

Mint korábban említettük, az adatbázisok tervezésébek általános menete alapján az adatmodellt előbb SDM, majd DBMS adatmodellben fogalmazzuk meg, s az adatbázis fizikai létrehozásához ez utóbbi alapján létrehozzuk a megfelelő DDL utasításokat, melyeket a DBMS már megért és végre is hajt. A ma használt SDM modellek között az E/R modellnek van a legnagyobb jelentősége, azért erre vonatkozólag követjük nyomon az átalakítás lépéseit, feltételezve egy E/R SDM modellt és a hierarchikus DBSM modellt.

 

A két modell struktúrális elemeit összevetve, bizonyos párhuzamot lehet vonni a két modell között, mely alapján felállítható egy általános konverziós szabály. Mindkét modellben fellelhető egy olyan struktúra elem, amely az elemi értékek együttesét jelenti. Az E/R modellben az egyed, míg a hierarchikus modellben a rekord jelenti ezt a szerkezti elemet. Ez alapján fő konverziós irányelvként e két egység egymásnak való megfeleltetését lehet megadni.

 

Maga az átalakítást nehezíti, hogy a tulajdonságok viszont nem minden esetben feleltethetők meg mezőnek. Ennek oka, hogy a hierarchikus modell csak az elemi értékű mezőket támogatja. Ezért az összetett vagy többértékű mezőket csak közvetve, nem egyszerű mezőként lehet tárolni. Az összetett mező esetén megoldás lehet, ha az összetett mező helyett rögtön a komponenseit adjuk meg mezőknek. A többértékű mezők esetén a megoldás az, hogy a tulajdonságot egy új rekordként tároljuk, amely PCR révén kapcsolódik az E/R modellbeli egyedhez tartozó rekordhoz.

 

A kapcsolatok átalakítása sem problémamentes. Az 1:N kapcsolatokat ugyan közvetlenül lehet ábrázolni PCR és VPCR segítségével, de az 1:1 és N:M kapcsolatok esetén már kerülőutakra van szükség. Az 1:1 tipusú kapcsolatokat ábrázolásánál az ad segítséget, hogy az 1:1 kapcsolat tulajdonképpen egy speciális 1:N kapcsolatként is felfogható. Így ábrázolása PCR vagy VPCR segítségével történik. Az N:M kapcsolat esetén, mint már korábban említettük, egy segédrekord bevezetése ad megoldást, amely célja a kapcsolat reprezentálása. E segédrekord minden előfordulása egy kapcsolat előfordulást reprezentál. A segédrekord PCR útján kapcsolódik az egyik rekordhoz mint szülőhöz és VPCR útján a másik rekordhoz, mint másik szülőhöz.

 

A konverzió menetének durva szabályait a következőkben foglalhatjuk össze:

egyed -> rekord

elemi tulajdonság -> mező

összetett tulajdonság -> több mező

többértékű tulajdonság -> rekord + PCR

1:N kapcsolat -> PCR vagy VPCR

1:1 kapcsolat -> PCR vagy VPCR

N:M kapcsolat -> segédrekord + PCR + VPCR

 

Az átalakítás szemléltetésére vegyünk egy egyszerű példát. Az E/R séma legyen egy video kölcsönző modellje.

 

 

A modellben a téma többértékűnek lett feltüntetve és a kölcsönzésnél az eddigi valamennyi kölcsönzést nyilvántratjuk, ezért lesz a kapcsolat N:M kellegű. A megfelelő hierarchikus sémát a következő ábra mutatja be.

 

 

 

A sémában két külön fa létezik, a két fő egyedre vonatkozólag. A téma rekord a többértékűseg, míg a kölcsönözte rekord az N:M kapcsolat miatt került be a rendszerbe.