11. előadás Objektumorientált adatbázisok haladóbb ismeretek

Hasonló dokumentumok
Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.

10. előadás. Alapfogalmak. Adatbázisrendszerek előadás november 28.

Objektumorientált adatbázisok

Adatbázisrendszerek 8. előadás: Az Enhanced Entity-Relationship modell március 27.

Adatbázisok* tulajdonságai

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Interfészek. PPT 2007/2008 tavasz.

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

GEIAL Kovács László. GEIAL Kovács László

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

példa: Legyen egy zenés CD-ket tartalmazó objektum-orientált adatbázis. Feltételezzük: egy zenés CD típusa audio, vagy mp3-as, vagy videoklippeket

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Bevezetés: az SQL-be

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Már megismert fogalmak áttekintése

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

OOP. Alapelvek Elek Tibor

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Generikus Típusok, Kollekciók

8. előadás. Az ER modell. Jelölések, az ER séma leképezése relációs sémára. Adatbázisrendszerek előadás november 14.

Objektum relációs lehetőségek az Oracle-ben. Katona Endre Adatbázis alapú rendszerek diasorozata alapján

Adatbázis, adatbázis-kezelő

Adatbázis rendszerek Definíciók:

OOP #14 (referencia-elv)

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatmodellezés. 1. Fogalmi modell

és az instanceof operátor

1. Az adatbázis fogalma, fontosabb összetevÿi, felhasználási módjai

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

OOP: Java 8.Gy: Abstract osztályok, interfészek

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Adatbázis kezelés Delphiben. SQL lekérdezések

Objektum orientált programozás Bevezetés

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

4. előadás. Relációalgebra és relációkalkulusok. Adatbázisrendszerek előadás október 10.

Adatbázis-kezelés. Harmadik előadás

modell, amiben csak bináris sok-egy kapcsolatok (link, memberowner,

Adatbázis rendszerek SQL nyomkövetés

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Java és web programozás

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Gazdasági folyamatok térbeli elemzése. 5. elıadás

ADATBÁZIS-KEZELÉS. Relációs modell

Adatbázisok elmélete 9. előadás

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozási nyelvek Java

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Java II. I A Java programozási nyelv alapelemei

SQL parancsok feldolgozása

Adatbázisrendszerek 7. előadás: Az ER modell március 20.

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

7. Gyakorlat A relációs adatmodell műveleti része

Bevezetés: Relációs adatmodell

Collections. Összetett adatstruktúrák

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Bevezetés, a C++ osztályok. Pere László

Enterprise JavaBeans 1.4 platform (EJB 2.0)

SQL DDL-1: táblák és megszorítások

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Készítette: Szabóné Nacsa Rozália

Java programozási nyelv 5. rész Osztályok III.

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Adatbázisok elmélete 4. előadás

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

SQL DDL-2 (aktív elemek) triggerek

Apple Swift kurzus 3. gyakorlat

Adatbázisok I. Az SQL nyelv

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Lekérdezések az SQL-ben 1.rész

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Interfészek. Programozás II. előadás. Szénási Sándor.

Adatbázisok elmélete 9. előadás

Java és web programozás

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bevezetés: Relációs adatmodell

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

ADATBÁZISOK ELMÉLETE 2. ELŐADÁS 1/26 Adatbáziskezelő rendszerek története Ősei a file-kezelők; ezek nem teljesítik ugyan azokat az elvárásokat, amiket

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

1. előadás Alapfogalmak Kialakulás, modellezés, a Bachman-féle fogalomrendszer, adatmodell, adatbázis, tulajdonságok

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Átírás:

11. előadás adatbázisok haladóbb Adatbázisrendszerek előadás 2016. december 5., és Debreceni Egyetem Informatikai Kar Az előadások Elmasry & Navathe: Database Systems alapján készültek. 11.1

Vázlat és célok Az előadás vázlata: Az ODL (Object Definition Language) objektum definíciós nyelv Az OQL (Oject Query Language) objektum lekérdező nyelv A áttekintése OO adatbázisok koncepcionális Célok: A szabványok fontosságának áttekintése (hordozhatóság, interoperábilitás) Object Data Management Group (ODMG) szerepe: objektum modell, ODL és OQL 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

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ítőkövei: objektumok literálok 11.3

ODMG objektumok Egy objektumnak 5 jellemzője van: Azonosító (object identifier): egyedi rendszerfüggő 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 Létrehozás (creation): az objektum létrehozásának módja 11.4

ODMG literálok 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: előredefiniált, alapvető adattípus érték (pl. short, float, boolean, char) strukturált: olyan érték, amelyet rekord konstruktorral állíthatunk elő (pl. date, struct) kollekció: értékek vagy objektumok egy kollekciója (pl. array) 11.5

ODMG interfész: egy példa Az interface az ODMG egy kulcsszava osztályra/típusra. Az alábbiakban a Date (dátum) típust hozzuk létre a megfelelő 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); }; 11.6

A kollekció objektumok beépített interfészei Egy kollekció objektum az alapvető collection interfészből örökli az alábbiakat: cardinality() (a kollekció számossága) is_empty() (tartalmaz-e elemet a kollekció) insert_element() (elem beszúrása) remove_element() (elem törlése) contains_element() (tartalmaz-e egy adott elemet) create_iterator() (iterátor változó, amely befutja a kollekció elemeit) 11.7

Kollekció típusok 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() (bővebb-e a zárójelbeli kollekciónál) is_proper_subset_of() (valódi részhalmaza-e a zárójelbeli kollekciónak) 11.8

Az objektumok öröklődési hierarchiája Object Iterator Collection Date Time set list bag array dictionary Timestamp Interval 11.9

Atomi objektumok Atomi objektum 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ésőbb). 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. 11.10

Extent és kulcs Extent: 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. Ez hasonló ahhoz, mintha létrehoznánk egy Set<Dolgozo> objektumot és perzisztensé tennénk. Kulcs: A kulcs egy vagy több egyedi attribútumból áll. A Dolgozo osztály kulcsa az szsz, így minden 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 Az egyedi objektumok előállítása az object factory (objektumgyár) segítségével, annak műveletei révén történik. Példa: interface ObjectFactory { Object new (); }; A new() egy új objektummal tér vissza, amely egy object_id-vel rendelkezik. 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 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. Mindkettőnek van viselkedése (műveletei) és állapota (attribútumai és kapcsolatai). 11.13

ODMG interfészek és osztályok ODMG interfész 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ölhetőek. 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. Az osztály példányosítható. Támogatja mind az állapot, mind a viselkedés öröklődést osztályok között az extends kulcsszóval. Többszöri öröklődés az extends útján már nem megengedett. 11.14

Object Definition Language (ODL) Az ODL támogatja az ODMG szemantikus konstrukcióit. Független bármely programozási nyelvtől. 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. Egy egyszerű osztály definíciója (az egyetem séma alapján): class Diploma { attribute string szak; attribute string diploma; attribute string ev; }; 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; }; 11.16

Öröklődés kettőspont (:) útján Először egy általános alakzat objektumot definiálunk: interface Alakzat { attribute struct pont {...} referencia_pont; float perimeter ();... }; 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) { attribute short oldal1; attribute short oldal2;... }; 11.17

Object Query language (OQL) Az OQL a DMG (Data Management Group) lekérdező nyelve. Az OQL szorosan együttműkö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 jellemzőivel. 11.18

Egyszerű OQL lekérdezések Alapvető szintakszis: select... from... where... SELECT t.nev FROM t in tanszekek WHERE t.kar= Informatika ; 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 lehetőségek vannak: 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 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<tanszekek> Ún. útkifejezést használunk az attribútumok és az objektumokhoz a belépési ponttól vezető út specifikálására. Egy útkifejezés egy perzisztens objektumnévtől (vagy 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. Ennek a névnek egyedinek kell lenni, különben azt eredményezi, hogy felülírunk egy már létező 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 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 műveletei Egy OQL lekérdezés egy kollekcióval és sosem egy elemmel tér vissza. Ahhoz, hogy egy egy elemet tartalmazó kollekciónak ehhez az eleméhez hozzáférjünk, az OQL element műveletét kell használni: element (select t from t in tanszekek where t.nev = Információtechnológia ); Az OQL számos csoportképző műveletet támogat, amelyet a lekérdezés eredményeiben használhatunk fel. A csoportképző műveletek 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 a kollekció típusával megegyező 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 Az OQL-ben az alábbi tagsági és korlátozási műveletek 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, (exists e in c: b) igaz, ha a c kollekció legalább egy e eleme eleget tesz b-nek. 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); 11.23

Rendezés és csoportosítás A lista vagy tömb típusú kollekcióknak megengedett az első, utolsó és i-edik elemének kinyerése (first, last, ith). Az OQL további műveleteket biztosít részkollekciók kinyerésére és két lista egyesítésére. Az OQL műveleteket nyújt az eredmények rendezésére. Példa: legmagasabb fizetésű 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épző műveletet is a group by révén. Pl.: 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 specifikálja azt, hogy hogyan képződnek le az ODL konstrukciók C++ utasításokká, továbbá tartalmazza az alábbiakat: 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<t>, amellyel erre az adatbázis osztályra hivatkozunk. Az ODMG kollekció típusok használatára különböző templatek definiáltak, pl. d_object<t> azokat a műveleteket specifikálja T-n, melyeket minden objektum örököl. Ezek a template osztályok adottak minden ODMG kollekcióra: d_set<t>, d_list<t>, d_bag<t>, d_varray<t>, d_dictionary<t>. Pl.: d_set<d_ref<hallgato>> a hallgatók halmaza. 11.25

Adattípusok és kapcsolatok 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. A kapcsolatok specifikálására a Rel_ prefixet használjuk a típusnevek prefixével belül. Pl.: a tanszékekhez az általuk gondozott kurzusokat hozzárendelve d_rel_ref<tanszek, van_kurzus> tan_kurzusok; A megengedi extent-ek létrehozását is a d_extent osztály könyvtárt használva: d_extent<szemely> Minden_Szemely (Adatbázisrendszerek) 11.26

Az objektum adatbázisok (ODB) és a relációs adatbázisok (RDB) összehasonlítása: A kapcsolatokat eltérően kezelik. Az öröklődést eltérően kezelik. A műveleteket 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 kezelődnek, amelyek a kapcsolódó objektumok OID-jét is tartalmazzák, a referencia attribútum lehet egyszerű és kollekció, a bináris kapcsolatok referenciái egy illetve két irányban is kifejezhetőek, az utóbbi az inverz művelet révén. Kapcsolatok RDB-ben: a különböző rekordok közötti kapcsolatokat egyező értékű attribútumok révén specifikáljuk (külső kulccsal), a külső kulcsok egyszerűek, az M : N kapcsolatokat elkülönített relációban (táblában) kell kezelni. 11.27

Az öröklési strukturák az ODB-ben beépítettek és a : illetve extends műveletekkel érhetőek el. Az RDB-ben nincs beépített támogatás az öröklési kapcsolatok számára, bár számos lehetőség van ezek leképezésére. Az ODB-ben a műveleteket már a során specifikáljuk mivel az osztály specifikáció részét képezi. Az RDB-ben a műveletek specifikációját egészen az implementációig lehet késleltetni. 11.28

EER sémák ODB sémákra való leképezése Az EER sémák ODB sémákra való leképezése viszonylag egyszerű mivel az ODB sémák támogatják az öröklési kapcsolatokat. Amint teljessé vált a leképezés a műveletekkel ki kell bővíteni az ODB sémákat, mivel az EER sémák nem tartalmazzák a műveletek specifikációit. 11.29

EER sémák ODB sémákra való leképezése 1 Hozzunk létre minden egyes EER (erős) egyedtípushoz vagy alosztályhoz egy ODL osztályt. A több-értékű 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észtvevő ODL osztályokhoz. A kapcsolat számossága alapján: egy-értékű 1 : 1 és N : 1 kapcsolat esetén, míg halmaz-értékű 1 : N és M : N kapcsolat esetén. A kapcsolat attribútumot rekord konstruktorral hozzuk létre. 3 Adjuk hozzá a megfelelő műveleteket minden egyes osztályhoz. A műveletek nem állnak rendelkezésre az EER sémákban, az eredeti követelményeket kell áttekinteni. A megfelelő konstruktor és destruktor műveleteket 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 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 erőseket. Azokat a gyenge egyedtípusokat, amelyek nem vesznek részt egyetlen kapcsolatban sem, a tulajdonos egyedtípus összetett több-értékű 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értelmű. 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 Képezzük le a kettőnél magasabb fokszámú kapcsolatokat. Mindegyik kapcsolatot elkülönített osztályokba képezünk le alkalmas hivatkozással minden résztvevő osztályra. 11.31