online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  

Az ODL-modellező nyelv

irodalom



bal sarok

egyéb tételek

jobb sarok
 
Petöfi Sandor forradalmi latomas költészete
Babits Mihaly
Honoré de Balzac Goriot apó címü müvének elemzése és értelmezése
JÓKAI MÓR: A KŐSZÍVŰ EMBER FIAI
Ady Endre
Jules Verne: A dunai hajós
 
bal also sarok   bal jobb sarok

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.


  Pl.: C = Film           köztük a "szereplők", "szerepel benne" kapcsolatok N:N típusúak

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).


  Pl.: C = Film           köztük a "gyártó" kapcsolat N:1 típusú

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.


: 2197


Felhasználási feltételek