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:

    1. Sortípus, vagyos egy reláció, mint adattípust kezelünk
    2. 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 RETURN1; 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;

Források