9. Objektum-relációs adatbázisok
Hivatkozások
- Kell, hogy egy objektumra több hejről tudjunk hivatkozni annélkül, hogy többször eltárolnánk (redundancia csökkentése inkonzisztencia elkerülése).
- Újabb indukciós szabály: egy attribútum típusa egy adott sémájú sorra történő hivatkozás vagy adott sémájú sorokra történő hivatkozási halmaz is.
- Jelölés:
- ha attribútum típusa egy relációsémájú sorra történő hivatkozás
- ha attribútum tíousa egy séma soraira vonatkozó hivatkozási halmaz alakban jelenik meg.
Felhasználó által definiált adattípus
-
Egy O-O osztály definíciója, amely egy adatszerkezet és metódusai.
- Azonos "típusú" objektumok egy osztályt definiálnak
- Viselkedés: metódusok halmazával kifejezve, amelynek az osztályhoz tartozó objektumokon hajthatóak végre
-
Használati módok:
- Sortípus, vagyos egy reláció, mint adattípust kezelünk
- Egy reláció attribútumának a típusa
CREATE TYPE <typename>
AS OBJECT (<list of attribute pairs>);
Hivatkozások UDT-kre
- Ha egy UDT, akkor a -re történő hivatkozás típusa.
- Ezt OID-nek is hívják O-O rendszerekben
- Az OID élete végéig azonosít egy objektumot.
- Azonban az OID-től eltérően REF látható, bár általában nehezen értelmezhető.
UDT-k mint sortípusok
- Egy relációs táblát egy sortípus segítségével mint sémával lehet definiálni, az elemeinek felsorolása helyett.
CREATE TABLE <table name> OF <typename>;
UDT-k, mint oszloptípusok
- UDT lehet egy attribútum típusa
- Akár egy UDT deklarációban, vagy egy
CRATE TABLE
utasításban, az UDT típus neve úgy használható mint az attribútum típusa.
Metódusok
- Az osztályok többek mint adatszerkezetek, lehetnek metódusaik.
- A metódusokat a
CREATE TYPE
-ban deklaráljuk. - Definiálhatjuk a
CREATE TYPE BODY
utasításban
CREATE TYPE BODY <typename> AS
<method definitions = PL/SQL method definitions, using "MEMBER FUNCTION" in place of "PROCEDURE">
END;
Rendező metódusok (ORACLE)
- Bármilyen UDT típusra bármelyik metódust rendező metódusnak deklarálhatjuk.
- A rendező metódusok visszatérő értéke <0, =0, vagy >0 lehet, ahogy a SELF objektumhoz viszonyítva az argumentum értéke <, =, vagy >
Példa:
CREATE TYPE BODY TeázóTípus AS
ORDER MEMBER FUNCTION
before(teázó2 TeázóTípus) RETURN INT IS
BEGIN
IF SELF.név < teázó2.név THEN RETURN –1;
ELSIF SELF.név = teázó2.név THEN RETURN 0;
ELSE RETURN 1;
END IF;
END;
END;
Oracle beágyazott táblák
- Megengedi, hogy a sorok egyes komponensei teljes relációk legyenek.
- Ha egy UDT, létrehozhatunk egy típust,
amelynek az értékei relációk, amelyeknek a
sortípusa viszont :
CREATE TYPE S AS TABLE OF T;
Beágyazott relációk eltárolása
- Oracle valójában nem tárolja el a beágyazott relációkat külön relációkként – még ha így is tűnik.
- Ehelyett, egy reláció van, amelyben egy attribútumra az összes beágyazott táblázatot és azok összes sorát eltárolja.
- Deklaráció a
CREATE TABLE
-ben:NESTED TABLE A STORE AS R;