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

Hasonló dokumentumok
ADATBÁZISOK E-K MODELLBŐL RELÁCIÓS MODELL. Debrenti Attila

Objektum-relációs adatbázisok. Felhasználói típusok (User-Defined Types) Objektum ID-k Beágyazott táblák (Nested Tables)

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

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

Oracle Spatial. Térbeli adatot tartalmazó tábla: Geometry table Legalább 2 oszlopa van: Elsődleges kulcs, SDO_GEOMETRY típusú oszlop.

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

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

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

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

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

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Bevezetés: Relációs adatmodell

Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

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

RELÁCIÓS ADATBÁZISSÉMÁK. Egyed-kapcsolat modellről átírás

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

Adatbázis rendszerek SQL nyomkövetés

Bevezetés: Relációs adatmodell

Adatbázisok. 4. gyakorlat. Adatmodellezés: E-K modellb l relációs adatbázisséma. Kötelez programok kiválasztása szeptember 24.

Adatmodellezés. 1. Fogalmi modell

Bevezetés: az SQL-be

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Adatbázis, adatbázis-kezelő

Adatbázisban tárolt kollekciók

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

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

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Relációsémák létrehozása SQL nyelvben

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

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

Adatbázisok gyakorlat

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

Objektumorientált adatbázisok

Adatbázis Rendszerek II. 8. Gyakorló környezet

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

Tranzakciókezelés PL/SQL-ben

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

Az adatbázis-alapú rendszerek tervezésének alapvető része az adatok modellezése. Ez legtöbbször két fázisban zajlik:

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

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

ADATBÁZIS RENDSZEREK I BEADANDÓ

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

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

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

B I T M A N B I v: T M A N

ADATBÁZISOK. 4. gyakorlat: Redundanciák, funkcionális függőségek

Az SQL adatbázisnyelv: DML

Redukciós műveletek. Projekció (vetítés): oszlopok kiválasztása. Jelölés: attribútumlista (tábla) Példa: Könyv

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

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

Adatbázis Rendszerek II. 2. Gyakorló környezet

Adatbázisok. 1. gyakorlat. Adatmodellezés október október 1. Adatbázisok 1 / 42

A D A T B Á Z I S O K

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

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

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

E/K diagram átalakítása relációs adatbázistervre

Adatbázisok. 3. gyakorlat. Adatmodellezés: E-K modellb l relációs adatbázisséma. Kötelez programok kiválasztása szeptember 21.

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

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF

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

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Adatbázisok - 1. előadás

Adatbázis-kezelés. alapfogalmak

Adatbázis tartalmának módosítása

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Adatbázis-kezelés az Excel 2013-ban

SQL parancsok feldolgozása

A D A T B Á Z I S O K

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Adatbázisok tavaszi félév Vizsgatételsor

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbázis rendszerek. dr. Siki Zoltán

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Adatbázisok* tulajdonságai

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

7. Előadás tartalma A relációs adatmodell

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Kidolgozott példák. E-K diagram. Tánc egyednek csak egyetlen attribútuma van. Most a megoldás úgy is helyes lenne,

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

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

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Adatbázis használat I. 5. gyakorlat

Több felhasználó párhuzamosan olvashatja, bővítheti, módosíthatja és törölheti az adatokat Az adatok konzisztenciájának és biztonságának biztosítása

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

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

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

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

LBRA6i integrált rendszer

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

Kalmár György Adatbázis alapú rendszerek

A relációs adatmodell

Átírás:

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

Az objektum-relációs adatmodell ODL, OQL: az objektum-orientált világba átemel SQL elemeket. Itt nincs reláció (adattábla), helyette objektumhalmazt definiálhatunk. SQL3 (SQL:1999): A relációs világba (SQL2) átemel objektum-orientált elemeket. Itt a reláció továbbra is alapfogalom, amelyet absztrakt adattípusok definiálásával bővíthetünk. Ez az objektum-relációs modell, a gyakorlatban ez terjedt el. Objektum-relációs elv: Belül minden relációsan működik. Erre egy ráépülő rétegként alakítják ki az objektum-orientált felületet. ORDBMS = Object-Relational DBMS

A relációs modell bővítése - 1 Alapelv: a reláció (adattábla) továbbra is alapfogalom. Főbb bővítések: Kollekciótípusok (komplex attribútumtípusok): struktúra, halmaz, multihalmaz, lista, struktúrák halmaza (azaz tábla, lásd később: beágyazott tábla). Metódusok: műveletek a definiált új objektumtípusokhoz. Hivatkozások: kapcsolatok kialakítása

A relációs modell bővítése - 2 Kétféle objektumot szoktak megkülönböztetni: Sorobjektum: a tábla egy sorát tekintjük objektumnak (struktúra). Általában ezt értjük objektumon. Példa: Olvasó objektum: (olvasószám, név, lakcím) Oszlopobjektum: a relációséma egy attribútumát tekintjük objektumnak. Példa: lakcím objektum: (irszám, helység, utca, házszám) Objektumazonosító (OID): sorobjektumok azonosítására. Tartalmilag azonos sorokat is megkülönböztet. (Hasonló a ROWID-hez, de nem azonos vele.)

Kétféle tábla van: A relációs modell bővítése - 3 Relációs tábla: mint a relációs modellben. Objektumtábla: sorobjektumok halmaza. Kollekciótípusokat és metódusokat tartalmazhat. Objektumnézet (object view): relációs alaptáblára definiált objektum-nézettábla.

Összetett attribútumok Összetett attribútum: A relációséma egy attribútuma struktúra. Például R(a 1, a 2, s(b 1, b 2, b 3 ), a 4 ) Példa: Könyv (könyvszám, szerző, cím) Olvasó (olvszám, név, lakcím(irszám, helység, utca, hsz) ) Jelölés: lakcím kisbetűvel.

Többértékű attribútumok Többértékű attribútum: A relációséma egy attribútuma halmaz. Például R(a 1, a 2, A 3, a 4 ) Példa: Könyv (könyvszám, Szerző, cím) Olvasó (olvszám, név, lakcím(irszám, helység, utca, hsz) ) Jelölés: Szerző nagybetűvel.

Beágyazott táblák Beágyazott tábla (nested table): A relációséma egy attribútuma maga is relációséma (azaz struktúrahalmazt reprezentál). Például R 1 (a 1, a 2, R 2 (b 1, b 2, b 3 ), a 4 ) Példa: egy olvasónak több lakcíme lehet: Könyv (könyvszám, Szerző, cím) Olvasó (olvszám, név, Lakcím(irszám, helység, utca, hsz) ) Jelölés: Lakcím nagybetűvel.

Beágyazott tábla szemléltetése (egy személynek több lakcíme lehet) Olvszám Név Lakcím 122 Kiss 612 Nagy 355 Tóth IrSzám Helység Utca Hsz 8423 Győr Fő u. 123. IrSzám Helység Utca Hsz 6721 Szeged Virág u. 10. 7581 Pécs Kő u. 7. IrSzám Helység Utca Hsz 8420 Győr Jég u. 18.

Hivatkozások (References) Hivatkozás típusú attribútum: egy másik objektumtábla adott sorára (objektumazonosítójára) hivatkozik. Jelölések: a: hagyományos attribútum a(*t): a T tábla egy sorára hivatkozó attribútum. a({*t}): T-beli sorok halmazára hivatkozó attribútum. A hivatkozás kapcsolatok kezelésére alkalmas: Hasonló a külső kulcshoz, de nem egyenértékű vele! (Példa: ha hivatkozott sort töröljük, majd azonos tartalommal újra felvesszük, akkor új objektumazonosítót kap.)

Példák hivatkozásra - 1 Példa 1:1 kapcsolatra Könyv (könyvszám, Szerző, cím, kivétel, olvasója(*olvasó) ) Olvasó (olvasószám, név, lakcím(irsz, helység, utca, hsz), könyve(*könyv) ) Példa 1:N kapcsolatra Könyv (könyvszám, Szerző, cím, kivétel, olvasója(*olvasó)) Olvasó (olvasószám, név, lakcím(irsz, helység, utca, hsz), könyvei({*könyv}) )

Példa N:M kapcsolatra Példák hivatkozásra - 2 Könyv (könyvszám, Szerző, cím, olvasói({*olvasó}) ) Olvasó (olvasószám, név, lakcím(irsz, helység, utca, hsz), könyvei({*könyv}) ) Probléma: kivétel és visszahozás dátuma nem tartható nyilván. Megoldás: Könyv (könyvszám, Szerző, cím, Kölcsön( olvasója(*olvasó), kivétel, visszahozás ) ) Olvasó (olvasószám, név, lakcím(irsz, helység, utca, hsz), könyvei({*könyv}) )

Objektum-relációs lehetőségek Oracle-ben SQL:1999 szabvány Oracle 10g: nagyjából megfelel az SQL:1999 szabványnak ADT = Abstract Data Type = UDT = User Defined Type: felhasználó által definiált új adattípus. Deklarálása: CREATE TYPE típusnév AS OBJECT ( attribútumok metódusok

Példa új adattípus használatára - 1 Olvasó (olvszám, név, lakcím(irszám, helység, utca, hsz) ) CREATE TYPE CímTípus AS OBJECT ( irszám NUMBER, helység CHAR(20), utca CHAR(20), házszám NUMBER, CREATE TABLE Olvasó ( olvasószám NUMBER, név CHAR(30), lakcím CímTípus Itt a címtípust oszlopobjektumként használjuk.

Példa új adattípus használatára - 2 Konstruktor metódus: implicite definiálódik minden objektumtípushoz neve megegyezik az objektumtípuséval paraméterei megegyeznek az attribútumokkal visszaadott értéke az új objektum Beszúrás konstruktor metódussal: INSERT INTO Olvasó VALUES (123, 'Nagy Péter', CímTípus(6720,'Szeged','Kő u.',3)

Példa új adattípus használatára - 3 Lekérdezés (alias név kötelező): SELECT Olv.név FROM Olvasó Olv WHERE Olv.lakcím.helység = 'Pécs'; Index létrehozása: CREATE INDEX HelységInd ON Olvasó(lakcím.helység

CREATE TABLE Olvasó ( olvasószám NUMBER, személy SzemélyT Egymásba ágyazott típusok Olvasó (olvasószám, személy( név, lakcím(irszám, helység, utca, hsz) ) ) CREATE TYPE CímT AS OBJECT ( irszám NUMBER, helység CHAR(20), utca CHAR(20), házszám NUMBER CREATE TYPE SzemélyT AS OBJECT ( név CHAR(30), lakcím CímT

Egymásba ágyazott típusok használata Beszúrás konstruktor függvénnyel: INSERT INTO Olvasó VALUES (123, SzemélyT('Nagy Péter', CímT(6720,'Szeged','Kő u.',3)) Lekérdezés: SELECT Olv.olvasószám FROM Olvasó Olv WHERE Olv.személy.lakcím.helység = 'Pécs';

Metódusok létrehozása Típus deklarálása metódussal: CREATE TYPE típusnév AS OBJECT ( attribútumok MEMBER FUNCTION név(paraméterek) RETURN típus Metódus(ok) létrehozása: CREATE TYPE BODY típusnév AS metódusok megadása; Az egyes metódusok megadása: MEMBER FUNCTION név (paraméterek) RETURN típus IS programblokk;

Példa metódusra - 1 CREATE TYPE CímT AS OBJECT ( irszám NUMBER, helység CHAR(20), utca CHAR(20), házszám NUMBER, MEMBER FUNCTION cím_hun RETURN CHAR(50), MEMBER FUNCTION cím_eng RETURN CHAR(50)

Példa metódusra - 2 CREATE TYPE BODY CímT AS MEMBER FUNCTION cím_hun RETURN CHAR IS BEGIN RETURN( TO_CHAR(irszám) helység ', ' utca TO_CHAR(házszám) END; MEMBER FUNCTION cím_eng RETURN CHAR IS BEGIN RETURN( utca TO_CHAR(házszám) ', ' helység TO_CHAR(irszám) END;

Objektumtáblák Objektumtábla: sorobjektumok (ADT-k) halmaza. Létrehozása: CREATE TYPE típus AS OBJECT (attribútumok CREATE TABLE tábla OF típus; Az objektumtáblát kétféleképp kezelhetjük: egyoszlopos táblaként, többoszlopos táblaként (mintha relációs tábla lenne).

Példa objektumtáblára CREATE TYPE OlvasóT AS OBJECT ( olvasószám NUMBER, név CHAR(30), lakcím CHAR(50) CREATE TABLE Olvasó OF OlvasóT; Itt az OlvasóT típust sorobjektumként használjuk.

Objektumtábla használata Beszúrás egyoszlopos táblaként, konstruktorral: INSERT INTO Olvasó VALUES ( OlvasóT(112,'Kiss','8423 Győr Fő u.123') Beszúrás többoszlopos táblaként: INSERT INTO Olvasó VALUES (112,'Kiss','8423 Győr Fő u.123' Lekérdezés egyoszlopos táblaként: SELECT VALUE(Olv) FROM Olvasó Olv WHERE Olv.olvasószám=112; Lekérdezés többoszlopos táblaként: SELECT név, lakcím FROM Olvasó WHERE olvasószám=112;

Objektumnézetek Elv: relációs alaptáblához objektumnézettáblát hozunk létre. Példa: Relációs tábla: CREATE TABLE Olvasó ( olvasószám NUMBER, név CHAR(30), irszám NUMBER, helység CHAR(20), utca CHAR(20), házszám NUMBER,

Objektumnézet létrehozása Típus definiálása: CREATE TYPE CímT AS OBJECT ( irszám NUMBER, helység CHAR(20), utca CHAR(20), házszám NUMBER Objektumnézet definiálása konstruktor-metódussal: CREATE VIEW OlvasóOV(oszám,név,lakcím) AS SELECT olvasószám, név, CímT(irsz,helység,utca,házszám) FROM Olvasó;

Objektumnézet használata Beszúrás konstruktor függvénnyel: INSERT INTO OlvasóOV VALUES (123, 'Nagy Péter', CímT(6720,'Szeged','Kő u.',3) Lekérdezés: SELECT Olv.név FROM OlvasóOV Olv WHERE Olv.lakcím.helység = 'Pécs';

Beágyazott táblák (nested tables) Objektum típus definiálása: CREATE TYPE típus AS OBJECT (attribútumok Tábla típus definiálása: CREATE TYPE táblatípus AS TABLE OF típus;

Példa beágyazott táblára Olvasó (olvszám, név, Lakcím(irszám, helység, utca, hsz) ) CREATE TYPE CímT AS OBJECT ( irszám NUMBER, helység CHAR(20), utca CHAR(20), házszám NUMBER CREATE TYPE CímekT AS TABLE OF CímT; CREATE TABLE Olvasó ( olvasószám NUMBER, név CHAR(30), lakcím CímekT ) NESTED TABLE lakcím STORE AS lakcímtábla;

Beágyazott tábla használata Beszúrás konstruktor-függvényekkel: INSERT INTO Olvasó VALUES (612, 'Nagy Éva', CímekT( CímT(6721,'Szeged','Virág u.',10), CímT(7581,'Pécs','Kő u.',7) ) Új lakcím felvétele TABLE függvénnyel: INSERT INTO TABLE( SELECT lakcím FROM Olvasó WHERE olvasószám=612 ) VALUES ( CímT(1111,'Budapest','Hárfa u.',19)

Beágyazott tábla helyett külső kulcs Olvasó (olvasószám, név) 112 Kiss 612 Nagy 355 Tóth Lakcímek (olvasószám, lakcím) 112 8423 Győr Fő u. 123 612 6721 Szeged Virág u. 10 612 7581 Pécs Kő u. 7 355 8420 Győr Jég u. 18 Megjegyzés: objektumnézet segítségével a lakcímet struktúraként kezelhetjük.

Rendelés példa CREATE TYPE vevő AS OBJECT ( név VARCHAR2(30), telefon VARCHAR2(20) CREATE TYPE tétel AS OBJECT ( tételnév VARCHAR2(30), mennyiség NUMBER, egységár NUMBER(12,2) CREATE TYPE tételtábla AS TABLE OF tétel; CREATE TYPE rendelés AS OBJECT ( id NUMBER, ügyfél vevő, tételek tételtábla, MEMBER FUNCTION érték RETURN NUMBER CREATE TABLE rendeléstábla OF rendelés NESTED TABLE tételek STORE AS tételtab;

Altípusok, öröklés CREATE TYPE helyiség AS OBJECT ( épület CHAR(10), ajtószám NUMBER(4), név VARCHAR2(20), terület NUMBER ) NOT FINAL; CREATE TYPE tanterem UNDER helyiség ( férőhely NUMBER(4), tábla VARCHAR2(20), vetítő VARCHAR2(20) A tanterem örökli a helyiség attribútumait.

Helyettesíthetőség CREATE TABLE Helyiségek OF helyiség; A Helyiségek objektumtábla vegyesen tartalmazhat fő- és altípusokat: NSERT INTO Helyiségek VALUES (helyiség('irinyi', 123, 'Raktár', 25) INSERT INTO Helyiségek VALUES (tanterem('bolyai', 205, 'Riesz', 51, 92, 'normál tábla', 'vetítővászon') Többszörös öröklés nincs (a 10g verzióban).

Dinamikus tömbök Dinamikus tömb: absztrakt adattípusként hozható létre a VARRAY (variable length array) kulcsszóval. Mérete tetszőleges, de maximális mérete megadandó. Példa: Könyv (könyvszám, Szerző, cím) CREATE TYPE SzerzőT AS VARRAY(5) OF VARCHAR2(20 CREATE TABLE Könyv ( könyvszám NUMBER, szerző SzerzőT, cím CHAR(50)

Dinamikus tömb használata Beszúrás: INSERT INTO Könyv VALUES (1234, SzerzőT('Sályi','Szelezsán'), 'Adatbázisok' Lekérdezés: SELECT szerző, cím FROM Könyv; A szerzők felsorolva jelennek meg. Megjegyzés: dinamikus tömb nem indexelhető.

Objektumazonosító (OID) OID: egyedi (bináris) belső azonosító minden sorhoz. (Relációs táblában ez nincs, de van helyette ROWID.) REF függvény: sorobjektum OID DEREF függvény: OID sorobjektum

Példa OID lekérdezésére Típus definiálása: CREATE TYPE OlvasóT AS OBJECT ( olvasószám NUMBER, név CHAR(30), lakcím CHAR(50) Objektumtábla definiálása: CREATE TABLE Olvasó OF OlvasóT; OID lekérdezése: SELECT REF(Olv) FROM Olvasó Olv WHERE Olv.olvasószám=112;

Kapcsolat megadása OID-vel - 1 Olvasó (olvasószám, név, lakcím) Könyv (könyvszám, szerző, cím, olvasója(*olvasó)) CREATE TYPE OlvasóT AS OBJECT ( olvasószám NUMBER, név CHAR(30), lakcím CHAR(50) CREATE TABLE Olvasó OF OlvasóT; CREATE TABLE Könyv ( könyvszám NUMBER, szerző CHAR(20), cím CHAR(30), olvasója REF OlvasóT

Kapcsolat megadása OID-vel - 2 Adott könyv olvasójának adatait kérjük le: SELECT cím, DEREF(olvasója) FROM Könyv WHERE könyvszám=1234; A lekérdezés eredményeként megkapjuk: cím, olvasószám, név, lakcím Hagyományos relációs megoldás (külső kulcs): Olvasó (olvasószám, név, lakcím) Könyv (könyvszám, szerző, cím, olvasója) SELECT cím, olvasószám, név, lakcím FROM Könyv, Olvasó WHERE Könyv.olvasója=Olvasó.olvasószám AND könyvszám=1234;

Rekurzív kapcsolat megadása OID-vel CREATE TYPE Személy AS OBJECT ( név VARCHAR2(30), főnöke REF Személy CREATE TABLE Dolgozó OF Személy; Adott dolgozó főnökének, mint objektumnak a lekérdezése: SELECT DEREF(D1.főnöke) FROM Dolgozó D1 WHERE D1.név='Tóth Pál'; Adott dolgozó főnöke nevének lekérdezése: SELECT D1.főnöke.név FROM Dolgozó D1 WHERE D1.név='Tóth Pál'; Megj.: ez rövidített írásmód DEREF(D1.főnöke).név helyett.

OID-kapcsolat vagy külső kulcs kapcsolat? Példa: kitörlünk egy hivatkozott rekordot (pl. Olvasó), majd azonos tartalommal újra felvesszük. Eredmény: Külső kulcs kapcsolatnál integritás helyreáll. OID kapcsolatnál integritás elromlik, mert az újonnan felvitt rekord már más OID-t kap! Hogyan lehetne a két megközelítést összehozni? Megoldás: objektumnézetek REF-ekkel (lásd alább).