Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektrelationale Datenbanken (am Beispiel Oracle)

Ähnliche Präsentationen


Präsentation zum Thema: "Objektrelationale Datenbanken (am Beispiel Oracle)"—  Präsentation transkript:

1 Objektrelationale Datenbanken (am Beispiel Oracle)

2 © Prof. T. Kudraß, HTWK Leipzig 2 Objektorientierte Konzepte Objekt Objekt – Einheit von Struktur und Verhalten – Struktur: Attribute / Verhalten: Methoden – Zustand eines Objekts: Attributwerte – Methoden: Lesen und Ändern des Zustands – Kommunikation mit anderen Objekten über Methoden – persistent vs. transient – Identität unabhängig von Zustand – Gehört zu einem Objekttyp

3 © Prof. T. Kudraß, HTWK Leipzig 3 Objekttyp Einführendes Beispiel –Ist ein benutzerdefinierter zusammengesetzter Datentyp –Kapselt eine Datenstruktur zusammen mit den benötigten Methoden zur Manipulation Attribut Methode order_nocust_infoline_itemsamount Hold CheckStatus Cancel Ship Bestellung

4 © Prof. T. Kudraß, HTWK Leipzig 4 Objektorientierte Konzepte Methoden Methode – Funktion, die auf einem Objekt aufgerufen wird – Implementiert beliebigen Code – Bestandteile: Signatur (Deklaration): Name und Parameter Rumpf: Implementierung der Funktionalität Konstruktur & Destruktor – Besondere Methoden zum Erzeugen und Vernichten von Objekten Arten vom Methoden – lesende – ändern – statische (Klassenmethoden)

5 © Prof. T. Kudraß, HTWK Leipzig 5 Struktur eines Objekttyps Methodenrümpfe Public Interface Private Implementation Attributdeklarationen Methodenspezifikationen Spezifikation Rumpf

6 © Prof. T. Kudraß, HTWK Leipzig 6 Objektorientierte Konzepte Kapselung Kapselung – Zustand nur über öffentliche (public) Methoden abfragbar – Nicht öffentliche Methoden und Attribute nur objektintern zugänglich Strikte Kapselung – Zugang nur über get- und set-Methoden (für ein bestimmtes Attribut) – automatische Generierung der Zugriffsmethoden

7 © Prof. T. Kudraß, HTWK Leipzig 7 Objektorientierte Konzepte Objektidentität OID – Identifizierendes künstliches Merkmal eines Objekts – Systemdefinierter Identifikator (Surrogat) – vor Anwender verborgen – Ohne Semantik! (anders als Primärschlüssel) – Unveränderlich während Lebenszeit des Objekts – Referenztypen und Methoden zur Arbeit mit OIDs durch System angeboten Typen von Gleichheit – identisch (OIDs gleich) – flach-gleich (alle Attribute gleich) – Tiefgleich (Gleichheit gilt auch für alle referenzierten Objekte) Kopieren: flach vs. tief

8 © Prof. T. Kudraß, HTWK Leipzig 8 Objektorientierte Konzepte Klasse Definition – Menge von Objekten mit gleichen Attributen (Merkmalen) und Methoden (Verhalten) Zwei Sichtweisen – Intension: Beschreibung von Attributen und Methoden = Typ einer Klasse (bzw. Objekttyp) – Extension: Menge der aktuell existierenden Objekte (Instanzen) dieser Klasse Programmiersprachen: – Z.B. Java / C++: Klassenbegriff rein intensional – In Datenbanken: Extensionen persistent gespeichert

9 © Prof. T. Kudraß, HTWK Leipzig 9 Objektorientierte Konzepte Spezialisierung Ziel: möglichst redundanzfreie Speicherung von Eigenschaften Klassen in Sub-/Superklassenbeziehungen (ISA-Beziehung) Intensional: Subklasse erbt Attribute und Methoden der Superklasse (Typvererbung) Extensional: Untermengenbeziehung zwischen Extensionen von Sub- und Superklasse

10 © Prof. T. Kudraß, HTWK Leipzig 10 Objektorientierte Konzepte Spezialisierung (Forts.) Substituierbarkeit: Objekt überall dort einsetzbar wo auch Superklasse erlaubt ist Mehrfachspezialisierung: – mehrere Superklassen – Erfordert Konfliktauflösung beim Erben gleichnamiger Attribute oder Methoden Polymorphismus (Überladen) / spätes Binden (late binding) – Bei Aufruf einer Methode wird die Implementierung ausgewählt in Abhängigkeit vom aufgerufenen Objekttyp

11 © Prof. T. Kudraß, HTWK Leipzig 11 Objektorientierung in Datenbanken Objektorientierte Datenbanksysteme – 1985 – 1995 – SQL-ähnliche Anfragesprache (OQL; Object Query Language) – Vertreter: O2, POET, ObjectStore, Versant, Objectivity, Ontos, Gemstone Relationale DBMS behielten Überlegenheit – Anfrageoptimierung – Transaktionsverwaltung – Zugriffskontrolle – SQL:1999: Standard mit vielen objektorientierten Erweiterungen Objektrelationale Mapping-Tools – Brückenschlag zwischen OO Programmiersprachen und RDBMS – Vertreter: EJB, JDO, OJB, Hibernate

12 © Prof. T. Kudraß, HTWK Leipzig 12 Objektrelationale Konzepte im SQL-Standard Typkonstruktoren – geschachtelte Anwendung: beliebig komplexe Datentypen Benutzerdefinierte Datentypen – Distinct-Typen: Kopien eines Basisdatentyps unter eigenem Namen – Strukturierte Typen: Attribute und Methoden, Subtyp-Beziehung möglich Benutzerdefinierte Casts (Typumwandlungen) Benutzerdefinierte Ordnungen Typisierte Tabellen – Basieren auf strukturiertem Typ – Tabellenhierarchien (Subtabelle steht in Untermengenbeziehung zur Supertabelle) Typisierte Sichten – Basieren auf strukturiertem Typ (liefern typisierte Tabelle) – Sichtenhierarchien

13 © Prof. T. Kudraß, HTWK Leipzig 13 Objektrelationale Konzepte in Oracle (Überblick) Definition von Objekttypen (CREATE TYPE) Objekttypen und Referenzen (REF) Methoden Collections (VARRAY & Nested Table) Typvererbung (UNDER) Polymorphismus (Overriding, Overloading) Funktionen und Prädikate für Objekte (REF, DEREF, TREAT, IS OF)

14 © Prof. T. Kudraß, HTWK Leipzig 14 Spezifikation eines Objekttyps CREATE TYPE type_name AS OBJECT [(attribute1 datatype, attribute2 datatype,...] [MEMBER procedure1 | function1 spec, procedure2 | function2 spec,...)] CREATE TYPE type_name AS OBJECT [(attribute1 datatype, attribute2 datatype,...] [MEMBER procedure1 | function1 spec, procedure2 | function2 spec,...)] Syntax

15 © Prof. T. Kudraß, HTWK Leipzig 15 Rumpf eines Objekttyps Syntax CREATE TYPE BODY type_name AS [MEMBER procedure1 | function1 body, procedure2 | function2 body,...] CREATE TYPE BODY type_name AS [MEMBER procedure1 | function1 body, procedure2 | function2 body,...]

16 © Prof. T. Kudraß, HTWK Leipzig 16 Spezifikation eines Objekttyps (Beispiel) CREATE OR REPLACE TYPE katalogeintrag AS OBJECT( bestellnr NUMBER, preisVARCHAR2(10), verlagVARCHAR2(30), CONSTRUCTOR FUNCTION katalogeintrag (vbestellnr IN NUMBER, vpreis IN VARCHAR2) MEMBER PROCEDURE neuerpreis (neupreis varchar2), MEMBER FUNCTION print RETURN VARCHAR2 ) NOT FINAL;

17 © Prof. T. Kudraß, HTWK Leipzig 17 Rumpf eines Objekttyps Konstruktormethode (Beispiel) CREATE OR REPLACE TYPE BODY katalogeintrag AS -- Definition des benutzerdefinierten Konstruktors CONSTRUCTOR FUNCTION katalogeintrag (vbestellnr IN NUMBER, vpreis IN VARCHAR2) RETURN SELF AS RESULT IS BEGIN SELF.bestellnr:=vbestellnr; SELF.preis:=vpreis; SELF.verlag:=Spektrum Akademischer Verlag; RETURN; END;

18 © Prof. T. Kudraß, HTWK Leipzig 18 Rumpf eines Objekttyps Definition der Methoden (Forts.) -- Definition der Memberprozedur neuerPreis MEMBER PROCECURE neuerPreis (neupreis VARCHAR2) IS BEGIN SELF.preis:=neupreis; END; -- Definition der Memberfunktion print MEMBER FUNCTION print (neupreis VARCHAR2) IS BEGIN RETURN Bestellnummer: || bestellnr || ; Preis: || preis || ; Verlag || verlag ; END; -- Ende Typdefinition END;

19 © Prof. T. Kudraß, HTWK Leipzig 19 Definition eines Subtyps -- Definition eines Subtyps Buch von Katalogeintrag CREATE OR REPLACE TYPE buch UNDER katalogeintrtag ( isbn VARCHAR2(13), titelVARCHAR2(300), autor VARCHAR2(30), OVERRIDING MEMBER FUNCTION print RETURN VARCHAR2 ); weitere Details zur Typvererbung später im Skript

20 © Prof. T. Kudraß, HTWK Leipzig 20 Aufruf von Objektmethoden SET SERVEROUTPUT ON; DECLARE k1 katalogeintrag; k2 katalogeintrag; BEGIN -- Aufruf des Standardkonstruktors k1:=katalogeintrag(135782,48,95.,Hanser-Verlag); -- Ausgabe von k1 mittels Memberfunktion PRINT dbms_output.put_line(k1.print); -- Aufruf des benutzerdef. Konstruktors von katalogeintrag k2:=katalogeintrag(879564,31,70 ); -- Ausgabe von k2 mittels Memberfunktion print dbms_output.put_line(k2.print); -- Test der Memberprozedur neuerpreis k1.neuerpreis(47,25 ); dbms_output.put_line(k1.bestellnr || || k1.preis); END;

21 © Prof. T. Kudraß, HTWK Leipzig 21 Verwendung von Objekten Objekttabellen CREATE TABLE katalog OF katalogeintrag ( CONSTRAINT katalog_pk PRIMARY KEY(bestellnr) ); -- Einfügen eines DS mittels benutzerdef. Konstruktor von -- Katalogeintrag INSERT INTO katalog values (katalogeintrag(879564,31,70 )); -- Einfügen eines DS mittels Standardkonstruktor von buch INSERT INTO katalog values (buch(453721, 52,90, Spektrum Akademischer Verlag, 3-8274-065-1, Lehrbuch der Softwaretechnik, Helmut Balzert)); -- Ausgabe der DS des Supertyps SELECT * from katalog; -- Ausgabe in Objektform SELECT VALUE(k) FROM katalog k;

22 © Prof. T. Kudraß, HTWK Leipzig 22 Objekttypen und Referenzen REF (Reference) – logischer Pointer" zu einem Row-Objekt (Datensatz) – Eingebauter (built-in) Datentyp – Genutzt für Assoziationen zwischen Objekten (zusammen mit REF-Collections) – keine Foreign Keys nötig! – Erlaubt einfache Navigation durch Objekte (Punkt-Notation zum Verfolgen der Pointer) – keine Joins nötig! – Prüfen oder Ändern des referenzierten Objekts möglich – Lesen einer Kopie eines referenzierten Objekts – Ändern des REF-Wertes (Verweis auf anderes Objekt oder Null-Setzen) – dangling reference feststellbar (SCOPE-Klausel kontrolliert nicht referentielle Integrität)

23 © Prof. T. Kudraß, HTWK Leipzig 23 REF (Referenztypkonstruktor) Beispiele CREATE TYPE person AS OBJECT ( name VARCHAR2(30), managerREF person ); Zugriff auf ein Objekt X des Typs PERSON x.manager.name; Zugriff auf eine Referenz DECLARE OrderRef REF TO purchase_order; SELECT REF(po) INTO OrderRef FROM purchase_order_table po WHERE po.id = 1000376;

24 © Prof. T. Kudraß, HTWK Leipzig 24 Scoped REF* Bei Definition eines REF-Typs Beschränkung der referenzierten Tabelle möglich (scoped REF) Vorteile: – Effizienterer Zugriff – Weniger Speicherverbrauch Beispiel: CREATE TABLE people ( idNUMBER(4), name_objname_objtyp, address_ref REF address_objtyp SCOPE is address_objtab, phones_ntab phone_ntabtyp) NESTED TABLE phones_ntab STORE AS phone_store_ntab2;

25 © Prof. T. Kudraß, HTWK Leipzig 25 Methoden Member-Methoden zum Zugriff auf Objektinstanzen SELF: Objektinstanz der aufgerufenen Methode (SELF kann weggelassen werden) Methoden zum Vergleich von Objekten – Basisdatentypen: Ordnung vordefiniert – Benutzerdefinierte Typen: Basis zum Vergleichen und Ordnen von Objekten muss definiert werden 2 spezielle Typen von Methoden: MAP und ORDER

26 © Prof. T. Kudraß, HTWK Leipzig 26 MAP Methode Beispiel Abbildung (mapping) von Objekt-Instanzen auf Basisdatentypen, Ordnen durch Aufruf MAP-Methode obj_1 > obj_2 obj1.map() > obj2.map() CREATE TYPE Rectangle_typ AS OBJECT( lenNUMBER, widNUMBER, MAP MEMBER FUNCTION area RETURN NUMBER,... ); CREATE TYPE BODY Rectangle_typ AS MAP MEMBER FUNCTION area RETURN NUMBER IS BEGIN RETURN len * wid; END area;... END;

27 © Prof. T. Kudraß, HTWK Leipzig 27 Varray Geordnete Menge von Datenelementen des gleichen Datentyps mit variabler Anzahl (v) Index eines Elements = Positions-Nr. im Array Beispiel: CREATE TYPE prices AS VARRAY(10) OF NUMBER(12,2) Verwendung eines Varray: – Spaltentyp einer Tabelle (damit keine 1NF mehr) – Attribut eines Objekttyps – Typ einer PL/SQL Variablen, Parameter oder Rückgabewert einer Funktion

28 © Prof. T. Kudraß, HTWK Leipzig 28 Nested Table Ungeordnete Menge von Datenelementen des gleichen Typs Hat nur eine Spalte (Basistyp oder benutzerdefiniert) Kann auch als Multi-Column-Table betrachtet werden, wenn Elementtyp OBJECT TYPE ist. Beispiel -- Definition des Tabellentyps artikel_table_type für NT CREATE TYPE artikel_table_type AS TABLE OF katalogeintrag; -- Definition einer Tabelle Publikationen mit NT-Spalte CREATE TABLE publikationen ( jahrgang NUMBER PRIMARY KEY, katalogartikel artikel_table_type ) NESTED TABLE katalogartikel STORE AS artikel_tab;

29 © Prof. T. Kudraß, HTWK Leipzig 29 Multilevel-Collection-Types Schachtelung von Collection Types in mehreren Ebenen Beliebig komplexe Typen möglich Mehrfach geschachtelte Collection Types: – Nested Table of Nested Table Type – Nested Table of Varray Type – Varray of Nested Table Type – Varray of Varray Type – Nested Table oder Varray of a User-Defined Type mit Attribut vom Typ Nested Table oder Varray Type

30 © Prof. T. Kudraß, HTWK Leipzig 30 Storage-Tables für Nested Tables* Storage-Table (STORE-Klausel) zum Speichern der Zeilen einer Nested Table Bei Mehrfachschachtelung von Nested Tables – STORE-Klausel auf jeder Ebene – Bezugnahme auf innere Tabelle möglich (z.B. artikel_tab) weil Attribut vorhanden (anderenfalls: COLUMN VALUE-Klausel) Weitere physikalische Attribute (Speicherungsoptionen) möglich

31 © Prof. T. Kudraß, HTWK Leipzig 31 Einfügen von Datensätzen bei Nested-Table-Objekten -- Einfügen von DS in die Tabelle mit Werten für die NT-Spalte INSERT INTO publikationen VALUES (2006, artikel_table_type (buch(453721,52,90, Spektrum Akademischer Verlag, 3- 8274-065-1, Lehrbuch der Softwaretechnik, Helmut Balzert))); -- Einfügen eines DS in die Tabelle ohne NT-Daten INSERT INTO publikationen VALUES (2007, artikel_table_type ());

32 © Prof. T. Kudraß, HTWK Leipzig 32 Einfügen von Datensätzen bei Nested-Table-Objekten (Forts.) -- Hinzufügen von Datensätzen zur Nested Table INSERT INTO TABLE (SELECT p.katalogartikel FROM publikationen p WHERE p.jahrgang=2007) VALUES (buch(163241, 84,80, Spektrum Akademischer Verlag, 3-8274-0285-9, Lehrbuch der Objektmodellierung,Heide Balzert)); INSERT INTO TABLE (SELECT p.katalogartikel FROM publikationen p WHERE p.jahrgang=2007) VALUES (buch(870021, 49,60, Spektrum Akademischer Verlag, 3-8274-1449-0, Objektorientierte Programmiersprachen,Klaus Zeppenfeld));

33 © Prof. T. Kudraß, HTWK Leipzig 33 Entschachteln von Collection Queries (Beispiel) SELECT e.empname, e.projects FROM employees e; EMPNAME PROJECTS ------- -------- 'Bob' PROJECTS_LIST_NT(14, 23, 144) 'Daphne ' PROJECTS_LIST_NT(14, 35) Beispiel: Zugriff auf Projekte (Nested Table) eines Angestellten Entschachteln von Collections bei Queries (Unnest): – Umwandeln in Zeilen (Rows) – TABLE Expression – erlaubt die Verwendung einer Collection in FROM- Klausel – Entspricht einem Join zwischen Nested Table und der Zeile, die diese enthält

34 © Prof. T. Kudraß, HTWK Leipzig 34 Anfragen auf Collections SELECT e.empname, p.* FROM employees e, TABLE(e.projects) p; EMPNAME PROJECTS ------- -------- 'Bob' 14 'Bob' 23 'Bob' 144 'Daphne ' 14 'Daphne ' 35 Beispiel: Zugriff auf Projekte (Nested Table) eines Angestellten

35 © Prof. T. Kudraß, HTWK Leipzig 35 Anfragen auf Collections (Forts.) SELECT * FROM employee e, TABLE(e.projects); PROJECTS ------- 14 23 144 14 35 Beispiel: Zugriff auf Projekte (Nested Table) eines Angestellten (Variante ohne Angestelltennamen)

36 © Prof. T. Kudraß, HTWK Leipzig 36 DML-Befehle auf Collections (Weitere Beispiele) INSERT INTO TABLE(SELECT e.projects FROM employees e WHERE e.eno = 100) VALUES (1, 'Project Neptune'); UPDATE TABLE(SELECT e.projects FROM employees e WHERE e.eno = 100) p SET VALUE(p) = project_typ(1, 'Project Pluto') WHERE p.pno = 1; DELETE FROM TABLE(SELECT e.projects FROM employee e WHERE e.eno = 100) p WHERE p.pno = 1;

37 © Prof. T. Kudraß, HTWK Leipzig 37 Typvererbung (Type Inheritcance) Spezialisierung eines Subtyps: – Hinzufügen neuer Attribute (keine Veränderung geerbter Attribute) – Hinzufügen neuer Methoden, die im Supertyp nicht vorhanden sind – Ändern der Implementierung einer geerbten Methode Beispiel Object Type: Shape Methode: calculate_area() 2 Subtypen: Rectangle_Shape Circular_Shape unterschiedl. Implementierungen von calculate_area()

38 © Prof. T. Kudraß, HTWK Leipzig 38 FINAL vs. NOT FINAL Typen und Methoden CREATE TYPE Person_typ AS OBJECT ( ssn NUMBER, name VARCHAR2(30), address VARCHAR2(100)) NOT FINAL; ALTER TYPE Person_typ FINAL; CREATE TYPE T AS OBJECT (..., MEMBER PROCEDURE Print(), FINAL MEMBER FUNCTION foo(x NUMBER)... ) NOT FINAL; NOT FINAL: erlaube Subtypen Änderung der FINAL-Eigenschaft über ALTER TYPE FINAL / NOT FINAL auch auf Methoden anwendbar

39 © Prof. T. Kudraß, HTWK Leipzig 39 Definition von Typhierarchien CREATE TYPE Student_typ UNDER Person_typ ( deptid NUMBER, major VARCHAR2(30)) NOT FINAL; CREATE TYPE Employee_typ UNDER Person_typ ( empid NUMBER, mgr VARCHAR2(30)); CREATE TYPE PartTimeStudent_typ UNDER Student_typ ( numhours NUMBER); Subtypen mittels CREATE TYPE und UNDER-Klausel Beispiele:

40 © Prof. T. Kudraß, HTWK Leipzig 40 NOT INSTANTIABLE Typen und Methoden CREATE TYPE Address_typ AS OBJECT(...) NOT INSTANTIABLE NOT FINAL; CREATE TYPE USAddress_typ UNDER Address_typ(...); CREATE TYPE IntlAddress_typ UNDER Address_typ(...); CREATE TYPE T AS OBJECT ( x NUMBER, NOT INSTANTIABLE MEMBER FUNCTION func1() RETURN NUMBER ) NOT INSTANTIABLE NOT FINAL; NOT INSTANTIABLE: Keine Instanzen dieses Typs möglich (auch keine Konstruktor-Methode) Auch anwendbar auf Methoden ohne Implementierung (Platzhalter) zugehöriger Typ darf dann auch noch instanziierbar sein Beispiele:

41 © Prof. T. Kudraß, HTWK Leipzig 41 Überladen von Methoden (Overloading) CREATE TYPE MyType_typ AS OBJECT (..., MEMBER PROCEDURE foo(x NUMBER,...) NOT FINAL; CREATE TYPE MySubType_typ UNDER MyType_typ (..., MEMBER PROCEDURE foo(x DATE), STATIC FUNCTION bar(...)......); Wenn Vielzahl von Varianten der Ausführung einer Methode Mehrere Methoden mit gleichem Namen in einem Typ Unterscheidung anhand der Signatur Signatur: Methodenname, Anzahl, Typen und Reihenfolge der Parameter Beispiel: unterschiedliche draw() -Methoden (z.B. Hinzufügen eines Text- Labels erfordert zusätzlichen Parameter)

42 © Prof. T. Kudraß, HTWK Leipzig 42 Überschreiben von Methoden (Overriding) CREATE TYPE MyType_typ AS OBJECT (..., MEMBER PROCEDURE Print(), FINAL MEMBER FUNCTION foo(x NUMBER)... ) NOT FINAL; CREATE TYPE MySubType_typ UNDER MyType_typ (..., OVERRIDING MEMBER PROCEDURE Print(),...); Redefinition einer geerbten Methode im Subtyp, um dessen Spezifik zu berücksichtigen Beispiel: Methode calculate_area() (spezielle Formel bei kreisförmigen Formen gegenüber Rechtecken) Überschreibende Methode wird ausgeführt bei Zugriff auf Instanz des Subtyps Beim Overriding bleibt Signatur erhalten (anders als bei Overloading!)

43 © Prof. T. Kudraß, HTWK Leipzig 43 Substituierbarkeit (Substitutability) Typen sind substituierbar – Supertyp substituierbar durch einen seiner Subtypen – Subtyp-Instanz ist zugleich auch Instanz des Supertyps Beispiele: – Lesen von Personen (liefert auch Instanzen der Subtypen Student, Employee) – Einschränkungen beim Arbeiten in Typhierarchien (z.B. nur Personen, die keine Studenten sind..) Substituierbarkeit anwendbar bei: – Attributen – Spalten – Zeilen (Rows) bei Object Tables oder Views – REF zu einem Objekttyp – Collection-Typen Substituierbarkeit kann ausgeschaltet werden

44 © Prof. T. Kudraß, HTWK Leipzig 44 Beispiel: Beschränkung der Substituierbarkeit Beschränkung der Subtypen, die in Spalte/Attribut erlaubt sind, möglich mittels IS OF type - Constraint Beispiel: Erzeuge eine Tabelle vom Typ Book_Type, wobei die Autoren der Bücher ausschließlich Studenten sein dürfen CREATE TABLE Student_books OF Book_typ COLUMN author IS OF (ONLY Student_typ);

45 © Prof. T. Kudraß, HTWK Leipzig 45 Funktionen und Prädikate für den Umgang mit Objekten VALUE : In: Tabellen-Alias für Object Table oder Object View Out: Objektinstanzen, die in Object Table oder View als Rows enthalten sind Beispiele: SELECT VALUE(p) FROM person_table p WHERE p.name = "John Smith"; UPDATE TABLE (SELECT e.projects FROM employees e WHERE e.eno = 100) p SET VALUE(p) = project_typ(1, 'Project Pluto') WHERE p.pno = 1;

46 © Prof. T. Kudraß, HTWK Leipzig 46 Funktionen und Prädikate für den Umgang mit Objekten (2) REF : In: Tabellen-Alias für Object Table oder Object View Out: Referenz zu einer Instanz Beispiel: SELECT REF(p) FROM Person_v p WHERE p.id = 0001 ; DEREF : liefert die Objekt-Instanz, auf die eine REF verweist Beispiel: SELECT DEREF(REF(p)) FROM Person_v p;

47 © Prof. T. Kudraß, HTWK Leipzig 47 Funktionen und Prädikate für den Umgang mit Objekten (3) TREAT: – zur Typanpassung (meist: Subtyp statt Supertyp) – z.B. Behandlung einer Person als Student Zwei Anwendungen – Bei Zuweisungen an Variablen spezialisierter Typen (Supertyp-Wert Subtyp) – Zugriff auf Attribute oder Methoden eines Subtyps des deklarierten Typs von Zeile oder Spalte Beispiel: SELECT name, TREAT(VALUE(p) AS Student_typ).major major FROM persons p; NAME MAJOR ---- ------ Bob null Joe HISTORY Tim PHYSICS

48 © Prof. T. Kudraß, HTWK Leipzig 48 IS OF type: – Prädikat zum Test, ob Objekt-Instanz zum jeweiligen Subtyp gehört Beispiele: SELECT VALUE(p) FROM persons p WHERE VALUE(p) IS OF (Student_typ); VALUE(p) -------- Student_typ('Joe', 3456, 12, 10000) PartTimeStudent_typ('Tim', 5678, 13, 1000, 20) SELECT b.title title, b.author author FROM books b WHERE b.author IS OF (ONLY Student_typ); TITLE AUTHOR ----- ------ Business Rules Student_typ('Joe', 3456, 12, 10000) Funktionen und Prädikate für den Umgang mit Objekten (4)


Herunterladen ppt "Objektrelationale Datenbanken (am Beispiel Oracle)"

Ähnliche Präsentationen


Google-Anzeigen