Objektrelationale Datenbanken (am Beispiel Oracle) - PowerPoint PPT Presentation

About This Presentation
Title:

Objektrelationale Datenbanken (am Beispiel Oracle)

Description:

Title: The Relational Model Last modified by: HTWK Leipzig Document presentation format: Overheadfolien Other titles: Times New Roman Arial Wingdings Book Antiqua ... – PowerPoint PPT presentation

Number of Views:127
Avg rating:3.0/5.0
Slides: 49
Provided by: imnHtwkl
Category:

less

Transcript and Presenter's Notes

Title: Objektrelationale Datenbanken (am Beispiel Oracle)


1
Objektrelationale Datenbanken(am Beispiel Oracle)
2
Objektorientierte KonzepteObjekt
  • 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
ObjekttypEinführendes Beispiel
  • Ist ein benutzerdefinierter zusammengesetzter
    Datentyp
  • Kapselt eine Datenstruktur zusammen mit den
    benötigten Methoden zur Manipulation

Ship
Attribut
order_no cust_info line_items amount
Bestellung
Cancel
CheckStatus
Methode
Hold
4
Objektorientierte KonzepteMethoden
  • 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
Struktur eines Objekttyps
Spezifikation
Attributdeklarationen
Public Interface
Methodenspezifikationen
Rumpf
Methodenrümpfe
Private Implementation
6
Objektorientierte KonzepteKapselung
  • 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
Objektorientierte KonzepteObjektidentitä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
Objektorientierte KonzepteKlasse
  • 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
Objektorientierte KonzepteSpezialisierung
  • 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
Objektorientierte KonzepteSpezialisierung
(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
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
  • SQL1999 Standard mit vielen objektorientierten
    Erweiterungen
  • Objektrelationale Mapping-Tools
  • Brückenschlag zwischen OO Programmiersprachen und
    RDBMS
  • Vertreter EJB, JDO, OJB, Hibernate

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
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
Spezifikation eines Objekttyps
Syntax
CREATE TYPE type_name AS OBJECT (attribute1
datatype, attribute2 datatype, . . . MEMBER
procedure1 function1 spec, procedure2
function2 spec, . . .)
15
Rumpf eines Objekttyps
Syntax
CREATE TYPE BODY type_name AS MEMBER procedure1
function1 body, procedure2 function2
body, . . .
16
Spezifikation eines Objekttyps (Beispiel)
CREATE OR REPLACE TYPE katalogeintrag AS OBJECT(
bestellnr NUMBER, preis VARCHAR2(10),
verlag VARCHAR2(30), CONSTRUCTOR FUNCTION
katalogeintrag (vbestellnr IN NUMBER, vpreis
IN VARCHAR2) RETURN SELF AS RESULT, MEMBER
PROCEDURE neuerpreis (neupreis varchar2),
MEMBER FUNCTION print RETURN VARCHAR2 ) NOT
FINAL
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.bestellnrvbestellnr SELF.preisvpreis
SELF.verlagSpektrum Akademischer Verlag
RETURN END
18
Rumpf eines Objekttyps Definition der Methoden
(Forts.)
-- Definition der Memberprozedur
neuerPreis MEMBER PROCECURE neuerPreis (neupreis
VARCHAR2) IS BEGIN SELF.preisneupreisEND
-- Definition der Memberfunktion print MEMBER
FUNCTION print IS BEGIN RETURN Bestellnummer
bestellnr Preis preis
Verlag verlag END -- Ende
Typdefinition END
19
Definition eines Subtyps
-- Definition eines Subtyps Buch von
Katalogeintrag CREATE OR REPLACE TYPE buch UNDER
katalogeintrtag ( isbn VARCHAR2(13), titel VARCHA
R2(300), autor VARCHAR2(30), OVERRIDING MEMBER
FUNCTION print RETURN VARCHAR2 )
  • weitere Details zur Typvererbung später im Skript

20
Aufruf von Objektmethoden
SET SERVEROUTPUT ONDECLARE k1
katalogeintrag k2 katalogeintrag BEGIN --
Aufruf des Standardkonstruktors k1katalogeintrag
(135782,48,95 .,Hanser-Verlag) -- Ausgabe
von k1 mittels Memberfunktion PRINT dbms_output.pu
t_line(k1.print) -- Aufruf des benutzerdef.
Konstruktors von katalogeintrag k2katalogeintrag
(879564,31,70 ) -- Ausgabe von k2 mittels
Memberfunktion print dbms_output.put_line(k2.print
) -- Test der Memberprozedur neuerpreis k1.neuerp
reis(47,25 ) dbms_output.put_line(k1.bestellnr
k1.preis) END
21
Verwendung von ObjektenObjekttabellen
CREATE TABLE katalog OF katalogeintrag( CONSTRAIN
T 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
Objekttypen und Referenzen
  • REF (Reference)
  • logischer Pointer" zu einem Row-Objekt
    (Datensatz)
  • Eingebauter (built-in) Datentyp a row object
  • 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
REF (Referenztypkonstruktor) Beispiele
CREATE TYPE person AS OBJECT ( name
VARCHAR2(30), manager REF 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
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 ( id NUMBER(4),
name_obj name_objtyp, address_ref REF
address_objtyp SCOPE is address_objtab,
phones_ntab phone_ntabtyp) NESTED TABLE
phones_ntab STORE AS phone_store_ntab2
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
MAP MethodeBeispiel
  • Abbildung (mapping) von Objekt-Instanzen auf
    Basisdatentypen, Ordnen durch Aufruf MAP-Methode
  • obj_1 gt obj_2 ? obj1_map() gt obj2.map()

CREATE TYPE Rectangle_typ AS OBJECT(
len NUMBER, wid NUMBER, 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
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
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
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
Storage-Tables für Nested Tables
  • Storage-Table (STORE-Klausel)
  • zum Speichern der Zeilen einer Nested Table
  • Bei Mehrfachschachtelung 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
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
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.jahrgang2007) 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.jahrgang2007) VALU
ES (buch(870021, 49,60 , Spektrum
Akademischer Verlag ,3-8274-1449-0,
Objektorientierte Programmiersprachen,Klaus
Zeppenfeld))
33
Entschachteln von Collection Queries (Beispiel)
  • Beispiel Zugriff auf Projekte (Nested Table)
    eines Angestellten

SELECT e.empname, e.projects FROM employees e
EMPNAME PROJECTS ------- --------
'Bob' PROJECTS_LIST_NT(14, 23, 144)
'Daphne' PROJECTS_LIST_NT(14, 35)
  • 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
Anfragen auf Collections
  • Beispiel Zugriff auf Projekte (Nested Table)
    eines Angestellten

SELECT e.empname, p. FROM employees e,
TABLE(e.projects) p EMPNAME PROJECTS
------- -------- 'Bob' 14 'Bob'
23 'Bob' 144 'Daphne' 14 'Daphne'
35
35
Anfragen auf Collections (Forts.)
  • Beispiel Zugriff auf Projekte (Nested Table)
    eines Angestellten (Variante ohne
    Angestelltennamen)

SELECT FROM employee e, TABLE(e.projects)
PROJECTS ------- 14 23 144 14
35
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
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 unterschi
edl. Implementierungen von calculate_area()
38
FINAL vs. NOT FINALTypen und Methoden
  • NOT FINAL erlaube Subtypen
  • Änderung der FINAL-Eigenschaft über ALTER TYPE
  • FINAL / NOT FINAL auch auf Methoden anwendbar

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
39
Definition von Typhierarchien
  • Subtypen mittels CREATE TYPE und UNDER-Klausel
  • Beispiele

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)
40
NOT INSTANTIABLETypen und Methoden
  • 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

CREATE TYPE Address_typ AS OBJECT(...) NOT
INSTANTIABLE NOT FINAL CREATE TYPE
USAddress_typ UNDER Address_typ(...) CREATE
TYPE IntlAddress_typ UNDER Address_typ(...) CREA
TE TYPE T AS OBJECT ( x NUMBER, NOT
INSTANTIABLE MEMBER FUNCTION func1() RETURN
NUMBER ) NOT INSTANTIABLE NOT FINAL
41
Ãœberladen von Methoden (Overloading)
  • 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)

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(...)... ...)
42
Ãœberschreiben von Methoden (Overriding)
  • 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!)

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(), ...)
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
Beispiel Beschränkung der Substituierbarkeit
  • Beschränkung der Subtypen, die in
    Spalte/Attribut erlaubt sind, möglich mittels IS
    OF type - Constraint
  • BeispielErzeuge 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
Funktionen und Prädikate für den Umgang mit
Objekten
  • VALUE In Tabellen-Alias für Object Table oder
    Object ViewOut Objektinstanzen, die in Object
    Table oder View als Rows enthalten sind
  • Beispiele

SELECT VALUE(p) FROM person_table p WHERE
p.name "John Smith" SELECT VALUE(p) FROM
ONLY(Person_v) p 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
Funktionen und Prädikate für den Umgang mit
Objekten (2)
  • REF In Tabellen-Alias für Object Table oder
    Object ViewOut 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
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 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
Funktionen und Prädikate für den Umgang mit
Objekten (4)
  • 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)
Write a Comment
User Comments (0)
About PowerShow.com