Objektumorientált adatbázisok – haladóbb ismeretek
˝ 11. eloadás
Ispány Márton Kósa Márk Pánovics János
Objektumorientált adatbázisok – haladóbb ismeretek ˝ Adatbázisrendszerek eloadás 2016. december 5.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
Ispány Márton, Kósa Márk és Pánovics János Debreceni Egyetem Informatikai Kar ˝ Az eloadások Elmasry & Navathe: Database Systems alapján készültek. 11.1
Vázlat és célok ˝ Az eloadás vázlata: • Az ODMG objektum modellje
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az ODL (Object Definition Language) objektum definíciós
nyelv • Az OQL (Oject Query Language) objektum lekérdezo˝
nyelv • A C++ kötés áttekintése • OO adatbázisok koncepcionális modellje
Célok: • A szabványok fontosságának áttekintése (hordozhatóság,
interoperábilitás) • Object Data Management Group (ODMG) szerepe:
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
objektum modell, ODL és OQL • Az ODMG objektum kötéseinek bemutatása a fontosabb programozási nyelvek felé (pl. C++) • Az objektumorientált koncepcionális adatbázis modellezés
ismertetése 11.2
Az ODMG objektum modellje
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Standard modellt nyújt objektumorientált adatbázisok
számára. • Támogatja az objektumok definícióját az ODL-en
keresztül. • Támogatja objektumok lekérdezését az OQL-en keresztül. • Számos adattípust és típus konstruktort támogat.
˝ Az objektum modell alap építokövei: • objektumok
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
• literálok
11.3
ODMG objektumok
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
˝ van: Egy objektumnak 5 jellemzoje • Azonosító (object identifier): egyedi rendszerfüggo˝
azonosító • Név (name): egyedi egy adatbázison vagy programon
belül, de már az egész rendszerben nem(!), opcionális • Élettartam (lifetime): állandó (perzisztens) vagy átmeneti (tranziens) • Szerkezet (structure): azt specifikálja, hogy hogyan jön
létre az objektum a típus konstruktor révén illetve, hogy atomi objektum-e
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
• Létrehozás (creation): az objektum létrehozásának módja
11.4
ODMG literálok
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
Literál
A literálnak van aktuális értéke viszont nincs (objektum) azonosítója. A literálok háromféle típusa: • atomi: eloredefiniált, ˝ alapveto˝ adattípus érték (pl. short, float, boolean, char) • strukturált: olyan érték, amelyet rekord konstruktorral
állíthatunk elo˝ (pl. date, struct) • kollekció: értékek vagy objektumok egy kollekciója (pl.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
array)
11.5
ODMG interfész: egy példa
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
Az interface az ODMG egy kulcsszava osztályra/típusra. Az alábbiakban a Date (dátum) típust hozzuk létre a megfelelo˝ interfész definiálásával. interface Date:Object { enum weekday{sun,mon,tue,wed,thu,fri,sat}; enum Month{jan,feb,mar,...,dec}; unsigned short year(); unsigned short month(); unsigned short day(); ... boolean is_equal(in Date other_date); };
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.6
A kollekció objektumok beépített interfészei
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
˝ Egy kollekció objektum az alapveto˝ collection interfészbol örökli az alábbiakat: • cardinality() (a kollekció számossága) • is_empty() (tartalmaz-e elemet a kollekció)
Bevezetés
• insert_element() (elem beszúrása)
Az ODMG objektum modellje
• remove_element() (elem törlése)
Az ODL nyelv
• contains_element() (tartalmaz-e egy adott elemet)
Az OQL nyelv C++ kötés
• create_iterator() (iterátor változó, amely befutja a
kollekció elemeit)
OO koncepcionális tervezés
11.7
Kollekció típusok
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• A kollekció objektumok tovább specializálódnak olyan
típusokká mint halmaz, lista, zsák, tömb és szótár. • Minden kollekció típus kaphat további interfészeket, mint például • create_union() (kollekciók egyesítése) • create_difference() (kollekciók különbsége) • is_subset_of() (részhalmaza-e a zárójelbeli
kollekciónak) • is_superset_of() (bovebb-e ˝ a zárójelbeli kollekciónál) • is_proper_subset_of() (valódi részhalmaza-e a zárójelbeli kollekciónak)
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.8
Objektumorientált adatbázisok – haladóbb ismeretek
˝ Az objektumok öröklodési hierarchiája
Ispány Márton Kósa Márk Pánovics János
Object
Bevezetés
Iterator
Collection
Date
Time
Interval
Az ODMG objektum modellje Az ODL nyelv
Timestamp
Az OQL nyelv C++ kötés
set
list
bag
array
dictionary
OO koncepcionális tervezés
11.9
Atomi objektumok Atomi objektum
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
Egy a felhasználó által a class kulcsszóval definiált objektum. Példa class Dolgozo (extent mind_dolgozo key szsz) { attribute string nev; attribute string szsz; attribute short kor; relationship Iroda munkahely; void reassign(in string uj_nev); }; A példában a Dolgozo atomi objektumot hozzuk létre, melynek attribútumai a nev, szsz, kor. Az szsz személyi szám a kulcs, melyet a key kulcsszóval adunk meg. Az összes ˝ dolgozót a mind_dolgozo extentbe rakjuk (ld. késobb). A Dolgozo atomi objektum kapcsolatban van az Iroda atomi objektummal, a Dolgozo.munkahely() adja vissza a dolgozó munkahelyét. Végül a dolgozó kaphat új nevet.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.10
Extent és kulcs Extent:
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Egy ODMG objektumnak lehet extent-je, amelyet az
osztály deklarálásakor definiálunk. • Minden extent-et egy névvel adunk meg, és tartalmazza
az abba az osztályba tartozó összes perzisztens objektumot. • Pl. a Dolgozo osztálynak az extentje a mind_dolgozo.
Bevezetés
• Ez hasonló ahhoz, mintha létrehoznánk egy
Az ODMG objektum modellje
Set
objektumot és perzisztensé tennénk. Kulcs:
Az ODL nyelv Az OQL nyelv C++ kötés
• A kulcs egy vagy több egyedi attribútumból áll. • A Dolgozo osztály kulcsa az szsz, így minden
OO koncepcionális tervezés
dolgozónál azt várjuk, hogy egyedi lesz ennek az attribútumnak az értéke. • A kulcsok összetettek is lehetnek, pl. (key dszam,
dnev). 11.11
Object Factory
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az egyedi objektumok eloállítása ˝ az object factory
(objektumgyár) segítségével, annak muveletei ˝ révén történik. • Példa: Bevezetés
interface ObjectFactory { Object new (); }; • A new() egy új objektummal tér vissza, amely egy
object_id-vel rendelkezik.
Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
• Saját factory interfészeket a fenti interfész örököltetése
útján hozhatunk létre.
11.12
Interfészek és osztályok
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az ODMG objektum típusok kétféle fogalmát specifikálja: • interfész (interface) • osztály (class) • A kétféle fogalom között vannak hasonlóságok és
különbségek. • Mindkettonek ˝ van viselkedése (muveletei) ˝ és állapota (attribútumai és kapcsolatai).
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.13
ODMG interfészek és osztályok ODMG interfész
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az interfész egy objektum típus absztrakt viselkedésének
specifikációja. • Az interfész állapotának tulajdonságai, így attribútumai és
˝ kapcsolatai, nem örökölhetoek. • Objektumok nem példányosíthatóak interfészen keresztül.
ODMG osztály • Az osztály egy objektum típus absztrakt viselkedésének
és állapotának specifikációja.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés
• Az osztály példányosítható. • Támogatja mind az állapot, mind a viselkedés öröklodést ˝
OO koncepcionális tervezés
osztályok között az extends kulcsszóval. • Többszöri öröklodés ˝ az extends útján már nem megengedett.
11.14
Object Definition Language (ODL)
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az ODL támogatja az ODMG szemantikus konstrukcióit. • Független bármely programozási nyelvtol. ˝ • Arra használjuk, hogy létrehozzunk objektum
specifikációkat, úm. osztályokat és interfészeket. • Nem használható adatbázis manipulációk végrehajtására.
Bevezetés Az ODMG objektum modellje
Egy egyszeru˝ osztály definíciója (az egyetem séma alapján):
Az ODL nyelv Az OQL nyelv
class Diploma { attribute string szak; attribute string diploma; attribute string ev; };
C++ kötés OO koncepcionális tervezés
11.15
Két további ODL példa Egy kicsit bonyolultabb példa extent és key kulcsszavakkal: class Szemely (extent szemelyek key szsz) { attribute struct Szn {string vnev knev} nev; attribute string szsz; attribute date szul_datum; ... short kor (); }; A fenti örököltetése extends kulcsszóval és inverz kapcsolattal: class Oktato extends Szemely (extent oktatok) { attribute string fokozat; attribute float fizetes; attribute string telefon; ... relationship Iroda munkahely inverse Iroda::oktatoja; relationship set<Mester> szakdolgozo inverse Mester::konzulens; };
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.16
˝ ˝ Öröklodés kettospont (:) útján ˝ Eloször egy általános alakzat objektumot definiálunk:
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
interface Alakzat { attribute struct pont {...} referencia_pont; float perimeter (); ... }; Bevezetés
Majd az alakzatból származtatjuk a háromszög objektumot olyan további tulajdonságokkal, mint pl. az oldalak hossza: class Haromszog:
Alakzat (extent haromszogek)
{
Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
attribute short oldal1; attribute short oldal2; ... };
11.17
Object Query language (OQL)
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az OQL a DMG (Data Management Group) lekérdezo˝
nyelve. • Az OQL szorosan együttmuködik ˝ olyan programozási
nyelvekkel, mint a C++. • A beágyazott OQL utasítások olyan objektumokkal térnek vissza, amelyek kompatibilisek a hívó nyelv rendszer típusaival. • Az OQL szintakszisa hasonló az SQL-éhez kiegészítve az
˝ objektumok további jellemzoivel.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.18
Egyszeru˝ OQL lekérdezések • Alapveto˝ szintakszis: select ... from ... where ... • SELECT t.nev • FROM t in tanszekek • WHERE t.kar=’Informatika’;
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Minden lekérdezés végrehajtásához szükséges egy
belépési pont az adatbázisba. • Egy extent név (pl. a tanszekek a fenti példában)
szolgálhat ilyen belépési pontként. • Amikor egy kollekcióra hivatkozunk egy OQL lekérdezésben, akkor iterátor változókat definiálunk. • A fenti példabeli t iterátorként szolgál és befutja a
kollekcióbeli összes objektumot (azaz az összes tanszéket). • Egy iterátor specifikálására az alábbi szintaktikus ˝ lehetoségek vannak:
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
• t in tanszekek • tanszekek t • tanszekek as t 11.19
Lekérdezések eredménye és elérése • Egy lekérdezés eredményének adattípusa lehet az ODMG
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
modellben definiált bármelyik típus. • A lekérdezésnek nem kell feltétlen a korábban megadott
formátumot (select...from...where...) követni. • Egy perzisztens név önmagában lekérdezésként szolgálhat, melynek az eredménye a perzisztens objektumra való hivatkozás. Pl. • tanszekek; melynek típusa a set
• Ún. útkifejezést használunk az attribútumok és az
objektumokhoz a belépési ponttól vezeto˝ út specifikálására. • Egy útkifejezés egy perzisztens objektumnévtol ˝ (vagy
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
iterátor változójától) indul. • Ezt a nevet követi több, ponttal összekapcsolt kapcsolat
vagy attribútum név, esetleg semmi. Pl.: • tanszekek.vezeto;
11.20
Nevesített lekérdezések mint nézetek • A define kulcsszót használjuk az OQL-ben egy nevesített
lekérdezés azonosítására.
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Ennek a névnek egyedinek kell lenni, különben azt
eredményezi, hogy felülírunk egy már létezo˝ nevesített lekérdezést. • Ha egy lekérdezés definícióját már létrehoztuk, úgy az
megmarad addig, amíg azt nem töröljük, vagy újra nem definiáljuk. • Egy nézet definíciója paramétereket is tartalmazhat. • Példa olyan nézetre, amely egy kar azon diákjait
tartalmazza, akik már teljesítették a mellékszakjukat (minor): define van_minor (kar_nev) as select h from h in hallgatok where h.minorja.knev = kar_nev
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
• Ezután a van_minor már használható a további
lekérdezésekben (egyfajta beágyazott select). 11.21
Kollekciók elemei és muveletei ˝ • Egy OQL lekérdezés egy kollekcióval és sosem egy
elemmel tér vissza.
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Ahhoz, hogy egy egy elemet tartalmazó kollekciónak
ehhez az eleméhez hozzáférjünk, az OQL element muveletét ˝ kell használni: element (select t from t in tanszekek where t.nev = ’Információtechnológia’); • Az OQL számos csoportképzo˝ muveletet ˝ támogat, amelyet a lekérdezés eredményeiben használhatunk fel. • A csoportképzo˝ muveletek ˝ kollekció felett operálnak és az alábbiak lehetnek: • min, max, count, sum, avg
• Ezek közül a count egész értékkel, az összes többi pedig
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
a kollekció típusával megegyezo˝ típussal tér vissza. • Példa a PTI BSc szakos hallgatók átlagos kredit
összegének kiszámítására: avg (select h.kredit from h in hallgatok where h.szak = ’PTI BSc’); 11.22
Tagság és korlátozás
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az OQL-ben az alábbi tagsági és korlátozási muveletek ˝
biztosítottak: • (e in c) igaz, ha e benne van a c kollekcióban, • (for all e in c: b) igaz, ha a c kollekció összes e
eleme eleget tesz b-nek, b) igaz, ha a c kollekció legalább egy e eleme eleget tesz b-nek.
• (exists e in c:
• Az összes olyan hallgató megkeresése, aki teljesítette az
Adatbázisrendszerek kurzust: select h.nev.vnev h.nev.knev from h in hallgatok where ’Adatbázisrendszerek’ in (select k.nev from k in h.telj_felevek.felev.kurzus);
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.23
Rendezés és csoportosítás • A lista vagy tömb típusú kollekcióknak megengedett az
˝ utolsó és i-edik elemének kinyerése (first, last, ith). elso,
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az OQL további muveleteket ˝ biztosít részkollekciók
kinyerésére és két lista egyesítésére. • Az OQL muveleteket ˝ nyújt az eredmények rendezésére. • Példa: legmagasabb fizetésu˝ kari dolgozó vezeték neve:
first (select struct (kar: k.nev.vnev, fizetes: k.fizetes) from k in kar ordered by k.fizetes desc); • Az OQL támogatja a csoportképzo˝ muveletet ˝ is a group by révén. Pl.:
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
select tanszek_nev, atl_kredit: avg (select sz.h.kredit from sz in szak from h in hallgatok group by tanszek_nev: h.telj_minor.tnev having count (szak) >100); 11.24
A C++ nyelvi kötés • A C++ kötés specifikálja azt, hogy hogyan képzodnek ˝ le
az ODL konstrukciók C++ utasításokká, továbbá tartalmazza az alábbiakat:
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• C++ osztálykönyvtár, • adatmanipulációs nyelv (ODL/OML), • fizikai pragmák, amelyek eszközöket adnak a programozó
számára a fizikai tárolás vonatkozásában. • Az ODMG standardok számára kiadott C++
• •
•
•
osztálykönyvtár a d_ prefixet használja osztály deklarációknak. Minden T adatbázis osztályra definiálva van d_Ref, amellyel erre az adatbázis osztályra hivatkozunk. Az ODMG kollekció típusok használatára különbözo˝ templatek definiáltak, pl. d_Object azokat a muveleteket ˝ specifikálja T-n, melyeket minden objektum örököl. Ezek a template osztályok adottak minden ODMG kollekcióra: d_Set, d_List, d_Bag, d_Varray, d_Dictionary. Pl.: d_Set> a hallgatók halmaza.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.25
Adattípusok és kapcsolatok
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az ODMG adatbázisok attribútumainak az adattípusai
szintén használhatóak a C++ programozók számára a d_ prefix segítségével. Pl.: • d_Short, d_Long, d_Float.
• Néhány strukturált literál szintén használható: • d_Date, d_Time, d_Interval.
Bevezetés
• A kapcsolatok specifikálására a Rel_ prefixet használjuk
Az ODMG objektum modellje
a típusnevek prefixével belül. Pl.: a tanszékekhez az általuk gondozott kurzusokat hozzárendelve • d_Rel_Ref tan_kurzusok;
• A C++ kötés megengedi extent-ek létrehozását is a
Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
d_Extent osztály könyvtárt használva: • d_Extent<Szemely> Minden_Szemely
(Adatbázisrendszerek)
11.26
OO koncepcionális tervezés • Az objektum adatbázisok (ODB) és a relációs adatbázisok
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
(RDB) összehasonlítása: • A kapcsolatokat eltéroen ˝ kezelik. • Az öröklodést ˝ ˝ eltéroen kezelik. • A muveleteket ˝ az ODB-ben korán kell kifejezni, mivel azok
az osztály specifikáció részét képezik. • Kapcsolatok ODB-ben: • referencia attribútumként kezelodnek, ˝ amelyek a kapcsolódó objektumok OID-jét is tartalmazzák, • a referencia attribútum lehet egyszeru˝ és kollekció, • a bináris kapcsolatok referenciái egy illetve két irányban is ˝ kifejezhetoek, az utóbbi az inverz muvelet ˝ révén. • Kapcsolatok RDB-ben: • a különbözo˝ rekordok közötti kapcsolatokat egyezo˝ értéku˝ attribútumok révén specifikáljuk (külso˝ kulccsal), • a külso˝ kulcsok egyszeruek, ˝ • az M : N kapcsolatokat elkülönített relációban (táblában) kell kezelni.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.27
OO koncepcionális tervezés
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az öröklési strukturák az ODB-ben beépítettek és a :
˝ el. illetve extends muveletekkel ˝ érhetoek • Az RDB-ben nincs beépített támogatás az öröklési
˝ kapcsolatok számára, bár számos lehetoség van ezek leképezésére. • Az ODB-ben a muveleteket ˝ már a tervezés során
specifikáljuk mivel az osztály specifikáció részét képezi. • Az RDB-ben a muveletek ˝ specifikációját egészen az
implementációig lehet késleltetni.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.28
EER sémák ODB sémákra való leképezése
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• Az EER sémák ODB sémákra való leképezése viszonylag
egyszeru˝ mivel az ODB sémák támogatják az öröklési kapcsolatokat. • Amint teljessé vált a leképezés a muveletekkel ˝ ki kell
˝ bovíteni az ODB sémákat, mivel az EER sémák nem tartalmazzák a muveletek ˝ specifikációit.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
11.29
EER sémák ODB sémákra való leképezése 1
˝ egyedtípushoz Hozzunk létre minden egyes EER (eros) vagy alosztályhoz egy ODL osztályt.
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
• A több-értéku˝ attribútumokra használjuk a halmaz, zsák
vagy lista konstruktorokat. • Az összetett attribútumokat rekord konstruktorokba
képezzük le. 2
Adjuk hozzá a kapcsolat tulajdonságokat illetve referencia attribútumokat minden egyes bináris relációnál a kapcsolatban résztvevo˝ ODL osztályokhoz. • A kapcsolat számossága alapján: egy-értéku˝ 1 : 1 és N : 1
kapcsolat esetén, míg halmaz-értéku˝ 1 : N és M : N kapcsolat esetén. • A kapcsolat attribútumot rekord konstruktorral hozzuk létre. 3
Adjuk hozzá a megfelelo˝ muveleteket ˝ minden egyes osztályhoz.
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
• A muveletek ˝ nem állnak rendelkezésre az EER sémákban,
az eredeti követelményeket kell áttekinteni. • A megfelelo˝ konstruktor és destruktor muveleteket ˝ szintén
hozzá kell adni. 11.30
EER sémák ODB sémákra való leképezése 4
Specifikáljuk az öröklési kapcsolatokat az extends útján. • Azok az ODL osztályok, amelyek az EER séma egy
Objektumorientált adatbázisok – haladóbb ismeretek Ispány Márton Kósa Márk Pánovics János
alosztályának felelnek meg, öröklik szuperosztályainak ODL sémabeli típusait és metódusait. • A részosztályok egyéb attribútumait az 1-3 lépések mintájára adjuk hozzá. 5
Képezzük le a gyenge egyedtípusokat ugyanúgy, ahogy ˝ az eroseket. • Azokat a gyenge egyedtípusokat, amelyek nem vesznek
részt egyetlen kapcsolatban sem, a tulajdonos egyedtípus összetett több-értéku˝ attribútumaként is megjeleníthetjük. 6
Képezzük le a kategóriákat (únió típusok) az ODL-re. • A folyamat nem egyértelmu. ˝ • Ugyanazt a menetet követhetjük mint az EER->relációs
leképezésnél. Definiáljuk a kategóriát reprezentáló osztályt, majd adjuk meg az 1 : 1 kapcsolatokat a kategória és minden szuperosztály között. 7
Bevezetés Az ODMG objektum modellje Az ODL nyelv Az OQL nyelv C++ kötés OO koncepcionális tervezés
˝ Képezzük le a kettonél magasabb fokszámú kapcsolatokat. • Mindegyik kapcsolatot elkülönített osztályokba képezünk le
alkalmas hivatkozással minden résztvevo˝ osztályra. 11.31