kategória | ||||||||||
|
||||||||||
|
||
Az ODL-modellező nyelv
1. Az adatmodellezésről általában
Az adatmodellezés a DB logikai vázának megalkotását jelenti. Ez fogalmi szintű művelet, mely az alábbi ábrával írható le:
A folyamat tehát felfogható úgy, hogy egy "a valóság egy darabjáról" - pl. egy cég nyilvántartásáról szeretnénk adatmodellt és arról később egy DB sémát, azaz konkrét adatbázist készíteni. A DB séma már egy tényleges. értelmezhető kód.
A fázisok közötti átmenetek a következők:
a.) adatmodellező eszközöket használva (pl. ODL, E/K) készítjük el az adatmodell leírását
b.) DDL segítségével alakítható ki a DB séma.
A folyamat legfontos 616e46g abb része az a.)-ban zajló tevékenység; b.) ebből már nagyrészt automatikusan adódik.
Az adatmodellező eszköz többé-kevésbé formális jelölésrendszert biztosít adatok, kapcsolataik és a rajtuk végzett műveletek kifejezésére.
Az adatmodellezés egyes eszközeinek kapcsolata és eredménye:
2. Az ODL (Object Definition Language) módszertan
Az ODL elemei
Lehetővé teszi az objektumos DB-tervezést (a módszer közel áll a szabványossághoz);
és része a CORBA-nak, az osztott objektumos számítások tervezett szabványának.
Az ODL tulajdonságai
a világot elsősorban objektumokkal írja le. Pl.: Emberek, Termékek, stb.
az objektumok tartalmuktól független azonosítóval, OID-vel rendelkeznek. (Az objektumos világban két azonos példány két különböző elem lehet.)
az objektumokat osztályokba csoportosítja:
egy adott osztály objektumai hasonlók
ábrázolt tulajdonságaik (típusaik, jellegzetességeik) azonosak
képet róluk a rekordsablon alapján kaphatunk.
Az ODL osztály-megvalósításának fő tényezői
Attribútumok
Az osztály-objektumok egyszerűbb tulajdonságai egyszerűbb típusokkal vannak ábrázolva (egész, valós, mutató, struct, enum, char, string, stb.). Osztály nem számít egyszerű típusnak!
Kapcsolatok osztályok között
Két alapvető formája van:
lehet hivatkozás egy (másik) osztály egy objektumára (egyértékű kapcsolat), vagy
hivatkozás egy (másik) osztály több objektumára (többértékű kapcsolat).
Metódusok
Az osztály objektumaira alkalmazott függvények. (A metódusok DB szempontból kevésbé relevánsak, de a modern SW-technológiának központi kérdése a metódusok tervezése és implementálása.)
Az osztálydeklaráció formája az ODL-ben:
interface < Osztálynév > ;
Az "interface" kulcsszó az ún. osztálykonstruktor.
Példák
filmes példa
interface Film szalagFajta; }
Tapasztalatok:
az attribútumnak van típusa és neve;
enum: felsorolás típusú
típusneve: Szalag
neve: szalagFajta
egy objektum képe ennek megfelelően:
OID
színészes példa
interface Színész lakcím}
Kapcsolatok leírása
A kapcsolatok (relationship) osztályszinten más objektumhoz való viszonyokat írnak le. Két alapvető leírási formájuk van:
< osztálynév > < kapcsolatnév >, és
< kollekció típus > << osztálynév >> < kapcsolatnév >. A kollekció típusa lehet Set, Bag, List, vagy Array.
Az 1. leírás azt fejezi ki, hogy az objektum az adott típusú (nevű) kapcsolatban van a megadott osztállyal, a 2. pedig azt, hogy az objektum kapcsolatban van osztályok egy kollekciójával.
A kapcsolat megfordítható, annak az objektumnak a szempontjából is megfogalmazható, amivel a kitüntetett objektumunk kapcsolatban áll. Ezt a fordított kapcsolatot (reverse) jelölni is kell, tehát maga a kapcsolat mindkét (ill. valamennyi) érintett objektumnál fel kell tüntetni.
Lényeges, hogy a kapcsolat (relationship) - inverz kapcsolat (reverse) pár egybetartozó szerkezet, ne válasszuk őket külön! Az inverz feltüntetése fontos konzisztencia-tényező.
Példák
filmes példa (kapcsolat a Film oldaláról)
relationship Set < Színész > szereplők;
reverse Színész: szerepel benne;
A filmben szereplő színészek egy halmazba vannak foglalva. A Filmnek annyi kapcsolata lesz a Színésszel, ahány színész benne játszik. Ez a kapcsolatok leírásának 2. formája.
relationship Színész szereplője;
reverse Színész: szerepel benne;
A kapcsolat leírható az 1. módon is, bár ez nem szerencsés.
színészes példa (kapcsolat a Színész oldaláról)
relationship Set < Film > szerepel benne;
reverse Film: szereplők;
konkrét adatokkal a kapcsolatok így néznek ki:
Film |
Színész |
Berlin fölött az ég |
Bruno Ganz |
Távol s mégis közel |
Bruno Ganz |
Távol s mégis közel |
Peter Falk |
Columbo |
Peter Falk |
Tanulság: egy színész több filmhez is tartozhat, ill. egy filmhez több színész tartozik.
Kapcsolatok osztályozása
Két osztály - pl. C és D - közötti kapcsolat lehet:
a.) egy-több (sok-sok, N:N) típusú: egy C osztálybeli objektumhoz az adott kapcsolatra nézve a D-ből több tartozhat, és fordítva.
D= Színész
Ez a kapcsolat-típus a leggyakoribb (strukturálatlan) eset.
Az N:N kapcsolat árulkodó jele az ODL-leírásban a két kollekció-operátor. (Színészek halmaza, Filmek halmaza - mindkét oldalon több objektum van megengedve.)
b.) több-egy (sok-egy, N:1) típusú: egy C osztálybeli objektumhoz az adott kapcsolatra nézve legfeljebb egy D-beli tartozhat, de fordított irányban nincs megkötés (egy D-beli több C-belihez is tartozhat).
D = Stúdió
Jó példa a gyermek-anya kapcsolat is (egy gyereknek legfeljebb egy anyja lehet, de egy anyának lehet több gyereke).
Az N:1 kapcsolat árulkodó jele az ODL-leírásban: egyértékű kapcsolat C-nél és kollekció D-nél.
c.) egy-több (egy-sok, 1:N) típusú: ez az N:1 kapcsolat fordítottja.
d.) egy-egy (1:1) típusú: egy C osztálybeli objektumhoz az adott kapcsolatra nézve legfeljebb egy D-beli tartozhat, és fordítva.
Pl.: C = Stúdió köztük az "elnök" kapcsolat 1:1 típusú, feltéve, hogy egy stúdiónak
D = Személy legfeljebb egy elnöke lehet, és egy személy nem lehet több stúdió elnöke.
Figyelem! A "legfeljebb egy" és "pontosan egy" nem ugyanazt jelenti. Az 1:1 kapcsolatban szerencsésebb a "legfeljebb egy"-et kikötni.
A kapcsolatok osztályozásánál tehát azt vizsgáljuk, hogy a kapcsolat két oldaláról mennyire függvényszerű a kapcsolat (mikor egyértelmű a hozzárendelés). Alapvető tehát, hogy "mennyi dolog kötődik mennyihez". A kapcsolatok jó megválasztása rendkívül fontos szemantikai és hatékonysági szempontból is.
Megj.: az ODL gyenge értelemben képes többágú kapcsolatot leírni.
Pl.: (a felírás megengedi két azonos egyed felvételét)
interface Szerződés
Típusok az ODL-ben
Az ODL az alaptípusokra és bizonyos építkezési szabályokra (melyeket a bonyolultabb adatszerkezetek kialakításához használ fel) támaszkodik. Ezen készlettel (adattípusok + szabályok) rendkívül sokféle feladat megoldható.
Alaptípusok: ide tartoznak az
Atomi típusok: a szokásos számítástechnikai adattípusok tartoznak ide, vagyis az egészek (integer), lebegőpontos számok (float), karakterek (character), karakterláncok (string), logikai értékek (boolean), felsorolt adatok (enum).
Interface típusok: ezeket az interface kulcsszó vezeti be (ilyen pl. a Film).
Típuskonstruktorok: ezek adják az ODL építkezési szabályait. Tegyük fel, hogy T egy típus.
1. Set < T > típus értéke T típusú elemek véges halmaza.
Pl.: Szereplők halmaza a Filmnél.
2. Bag < T > típus értéke T típusú elemek véges multihalmaza, vagyis a halmazban lévő elemek multiplicitással rendelkezhetnek (az ismétlődés megengedett). Akkor használják, amikor a Set nem alkalmazható.
3. List <T > típus értéke T típusú elemek véges - esetleg üres - listája. A Set-től annyiban különbözik, hogy benne fontos az elemek helye, sorszáma.
Pl.: string = List < char >
4. Array < T, i > típus értéke T típusú elemek i-hosszú tömbje.
Rekordkonstruktor
Adott a T1, ..., Tn (attribútum) típus-sorozat és az
f1, ...., fn mezőnév-sorozat.
Ekkor a Struct N egy N nevű, n komponensű rekordstruktúra. Az i. komponens (mező) típusa T1, neve fi.
Pl. A Színésznél a Cím egy kétkomponensű struktúra (rekord).
Az 1.-4. típuskonstruktorok az ún. kollekció-operátorok. Ezek valamilyen homogén összességet definiálnak, amelyekben eltérő lehet az, hogy megengednek-e ismétlődést vagy hogy fontos-e a pozíció, stb.
Az attribútumok típusa lehet
atomi típus,
atomi típusokból álló struktúra,
vagy egy, az előzőekre alkalmazható konstruktor 1.-5. közül.
Példa: Array < Struct T ... , 3 >
A kapcsolat típusa lehet
interface típus
egy, interface típusra alkalmazott konstruktor 1.-4. közül.
Alosztályok és öröklődés
Az alosztály egy osztály speciális tulajdonságú objektumaiból jön létre (differenciális specifikációval). Ehhez a tevékenységhez tartozik a szűkítés és a részképzés.
Alosztály jelölése: feltüntetjük a felettes osztály(oka)t.
Pl.: filmes példa
interface Rajzfilm: Film ;
interface Krimifilm: Film :
interface Krimirajzfilm: Rajzfilm, Krimifilm ;
Az alosztály örökli az összes felettes osztály (ún. "szuperosztály") tulajdonságait. Ezek az attribútumok, metódusok és kapcsolatok.
Pl.: a Krimirajzfilm örökli a Filmtől a címet.
Az alosztály-szerkezet hierarchiát definiál (egy felfelé irányított gráfot). Ez nem feltétlenül fastruktúra, bár ez a legjellemzőbb.
Pl.: a filmes példa öröklődési gráfja:
Az öröklődés révén konfliktus merülhet fel, ha egy alosztály többfelől örökölhet tulajdonságokat.
Pl.: rajzfilm: vég = boldog / szomorú
krimi: vég = ítélet / felmentés.
Megoldás: átnevezést hajtunk végre a felsőbb szinteken, vagy újradefiniáljuk a tulajdonságot az alsóbb szinten. (Például, ha a Sokszög - Négyszög - Négyzet alosztály öröklődési struktúrát nézzük, akkor célszerű a területet alsóbb szinten definiálni.)
Megszorítások modellezése az ODL-ben
Általunk az adatok közt további összefüggések is definiálhatók. Ezek ugyanúgy megszorítást jelentenek, mint a séma részei - például az N:1 kapcsolat, mert a kapcsolat másik oldalán egyetlen objektum állhat csak.
A megszorítások fő típusai:
Kulcsok
Olyan attribútum-halmazok, melyek egyértelműen azonosítják az objektumot. (Ha ismerjük a kulcsok értékét, akkor az azonosítás elvégezhető.)
0 vagy több attribútum lehet kulcs; ugyanekkor több kulcs is megadható.
A kulcs általános alakja:
interface < osztálynév >
(key(s) K1, K2, ... , Kn ) ;
A Ki kulcsleírás alakja:
< attribútumnév >; vagy (attr1, ... , attrn)
Példák
filmes példa
interface Film (key (cím, év)) ;
dolgozói nyilvántartás
interface Dolgozó (keys dolgAzon, tbSzám)
Egyértékűségi megszorítások
Azt rögzítik, hogy egy érték (-kombináció) az adott helyzetben egyedi. Pl. a termék meghatározza az árat.
Attribútumoknál a kollekció-operátorok mellőzése szolgál az egyértékűség kifejezésére.
Kétfajta értelmezés kapcsolódik az egyértékűséghez:
"legfeljebb egy": ez felel meg az N:1 felfogásnak
"pontosan egy": ez már egy "hivatkozási épség" (lásd később) típusú követelmény.
A "legfeljebb egy" értelmezés hatására vezették be a NULL értékeket. Ezen érték azt mutatja, hogy adott esetben megengedett "üresen" hagyni egy attribútum-mezőt.
Pl.: - ebből a halmazból kerül ki a filmszalag típusa. Ha a NULL érték van megadva, az azt jelenti, hogy a szalag típusa nem ismert.
Hivatkozási épség (referential integrity)
Az a követelmény, hogy a hivatkozott dolognak léteznie kell (vagyis nem fordulhatnak elő "lógó" mutatók, hivatkozások).
Lényeges, hogy az ODL a hivatkozási épség kérdését nem kezeli, csupán a megvalósítás szintjén ajánl különböző módszereket:
létrehozáskor kötelező a "pontosan egy" kapcsolat kitöltése;
hivatkozott objektum nem törölhető - ez az ún. gyenge törlési elv (az előbbi pont inverze);
a hivatkozott objektum csak a hivatkozóval együtt törölhető.
Értelmezési tartomány korlátozása
Ezen korlátozások a típusok értelmezési tartományára vonatkoznak!
Általános megszorítások
Általános követelmények, pl. a kapcsolat fokának korlátozása tartozik ide. Megadhatjuk például, hogy legfeljebb hány színész szerepelhet egy filmben. Ha ez történetesen 10, akkor ez így írható le:
relationship Array < Színész, 10 > Szereplők;
3. Adatmodellezési alapelvek
Valósághű modellezés
a fontos adatelemek és
a fontos kapcsolatok is legyenek benne a modellben!
A redundancia elkerülése
Ugyanazt a dolgot két vagy több helyen ne jelenítsük meg az ábrázolt modellben. Ez azért fontos a következők miatt:
helygazdálkodás: nem ez a legfontosabb szempont, de mérlegelni kell;
konzisztencia: a két vagy több helyen lévő azonos adatnak minden előfordulási helyén mindig ugyanolyan tartalmúnak kell lennie. Ha ez nem teljesül, akkor anomáliák lépnek fel;
egyszerűség: a redundancia bonyolítja a modellt.
Megfelelő típusú elemek kiválasztása
Alapkérdések
mit reprezentálunk attribútumként?
mit reprezentálunk kapcsolatként?
A megfelelő típusú elemek kiválasztásának szempontjai:
az attribútum: egyszerűbb, mint a kapcsolat (hiszen ez direkt köthető alaptulajdonság)
az egyedhalmaz, osztály (azaz a kapcsolat): bonyolultabb, de kifejezőbb.
:
2297