Kapitel 5

Werbung
Überblick
Kapitel 5
Objektorientierung und Datenbanken
z
Motivation
z
„Klassische SQL-Tabellen“
z
Erweiterungen des Datenmodells in SQL 1999
neue (Basis-) Datentypen
neue Typkonstruktoren
Objekttypen
–
- Objektrelationaler SQL’99-Standard -
–
–
Dieser Teil der Unterlagen wurde weitgehend
unverändert übernommen von Dr. Can Türker,
ETH Zürich.
Herzlichen Dank für die Überlassung!
z
… und daraus resultierende Erweiterungen bei den Operationen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
“Advanced applications need advanced data structures!”
z
4-2
Beispiel: RDBMS in technischen Anwendungen
Ziel: 1 Anwendungsobjekt in 1 Datenbankobjekt abbilden
Robot
“Real
World”
Effector
Rob_ID
Rob_Descr
Eff_ID
Function
Rob1
Rob2
Rob3
:
Speedy 400 ...............
Speedy 600 ...............
Colossus MX-3 .........
:
GR600
GR700
LS1
PS1350
Greifer Typ 600 ..............................
Greifer Typ 700 ..............................
Laserschweißer Typ 1 ....................
Punktschweißer Typ 1350 ..............
PS1380
PS1510
SR200
Punktschweißer Typ 1380 ..............
Punktschweißer Typ 1510 ..............
Schrauber Typ 200 .........................
Axes
has
!!!
(1,n)
Robot
(0,n)
can work
with
Rob_I
D
Arm_I
D
Rob1
Rob1
Rob1
:
links
links
links
:
AchsNr
Robot_Arms
GW_min
GW_max
-90
-170
-190
:
90
180
180
1
2
3
:
Masse
:
Beschl
40,0
30,5
20,0
:
1,0
1,5
3,0
:
(0,n)
(1,1)
Matrices
(1,n)
consist
of
(1,1)
Axes
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-3
links
rechts
solo
links
Rob3
Rob3
mitte
rechts
(4,4)
degrees
of
freedom
(1,1)
matrix rows
Rob_ID
Arm_ID
Rob1
Rob1
Rob1
Rob1
Rob1
:
Rob1
links
links
links
links
links
:
links
CanWorkWith
AchsNr
ZNr
Sp1
1
1
1
1
2
:
3
1
2
3
4
1
:
4
1
0
0
0
0
:
0
Sp2
0
0
-1
0
0
:
-1
Sp3
Sp4
0
1
0
1
0
:
0
1
0
80
1
60
:
70
Rob_ID
Eff_ID
Rob1
Rob1
Rob1
Rob1
:
Rob2
Rob2
SR200
SR300
PS1380
GR700
:
SR200
SR300
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Beispiel: SQL Query
4-4
Beispiel: Resultat dieser Anfrage
z
z
SELECT r.Rob_ID, r.Rob_Descr,
ar.Arm_ID, ac.AxisNo,
m.ZNo, m.Sp1, m.Sp2, m.Sp3, m.Sp4,
ac.GW_min, ac.GW_max, ac.Mass, ac.Accel,
re.Eff_ID, e.Function
FROM Robot r, Robot_Arms ar,
Axes ac, Matrices m,
CanWorkWith re, Effectors e
WHERE
r.Rob_ID = 'Rob1' AND
r.Rob_ID = ar.Rob_ID AND
ar.ROB_ID = ac.Rob_ID AND
ar.Arm_ID = ac.Arm_ID AND
ac.Arm_ID = m.Arm_ID AND
ac.Rob_ID = m.Rob_ID AND
ac.AxisNo = m.AxisNo AND
r.Rob_ID = re.Rob_ID AND
re.Eff_ID = e.Eff_ID
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
ArmID
Rob1
Rob1
Rob2
Rob3
Effector
Arms
DBMS
Rob_ID
z
z
4-5
diese SQL Anfrage liefert eine (“flache”, aber breite) Tabelle
bei 2 Armen á 4 Achsen und 6 Effektoren:
192 Tupel mit insgesamt 2.880 Attributwerten
wegen der relationalen Darstellung des Ergebnisses (1NF Relation):
nur 216 Werte (=8%) aus dieser Flut sind essenziell,
die anderen 92% sind redundant!
Konsequenz: SQL bzw. RDBMSe brauchen andere, zusätzliche
Strukturierungsmöglichkeiten für anspruchsvollere Anwendungen!
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-6
Tupeltabelle
Basiskonstrukte von SQL-92
z
Tabellen
–
–
–
–
z
Basisdatentypen
–
z
MULTISET
•
Eine Tupeltabelle ist eine traditionelle Tabelle im Sinne von SQL-92
•
Eine solche Tabelle besteht aus einer (Multi-)Menge von Tupeln
ROW
Tabellenname
Tabellenname
Basisdatentyp
–
Attributwerte
Zeilen (Rows
(Rows)) = Tupel
...
...
Primär-/Fremdschlüssel, Check-Klauseln
Assertions: Bedingungen über mehrere Tabellen
Zugriffsrechte (Grants)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-7
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
BOOLEAN
Neue Basisdatentypen: BOOLEAN, BLOB, CLOB
–
z
Neue Typkonstruktoren: ROW, ARRAY, REF
z
Benutzerdefinierte Datentypen (Distinct-Typ und strukturierte Typen)
z
Typhierarchien (Subtypen)
z
Typisierte Tabellen und Tabellenhierarchien (Subtabellen)
z
Typisierte Sichten und Sichthierarchien (Subsichten)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
–
4-9
Neue Basisdatentypen (2)
–
–
–
TRUE
FALSE
AND
TRUE
TRUE
TRUE
FALSE
FALSE
UNKNOWN UNKNOWN
OR
TRUE
FALSE
UNKNOWN
TRUE
TRUE
TRUE
TRUE
IS
TRUE
FALSE
UNKNOWN
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
UNKNOWN
UNKNOWN
FALSE
FALSE
FALSE
FALSE
UNKNOWN
UNKNOWN
FALSE
UNKNOWN
FALSE
UNKNOWN
TRUE
TRUE
FALSE
UNKNOWN
UNKNOWN UNKNOWN
FALSE
FALSE
TRUE
FALSE
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
UNKNOWN
FALSE
FALSE
TRUE
4-10
Definition einer Tabelle mit BOOLEAN- und LOB-Attributen:
CREATE TABLE MitarbeiterTupelTabelle (
Name
VARCHAR(30),
Vollzeit BOOLEAN,
Bild
BLOB(1M),
Bewerbung CLOB(50k)
);
BLOB (Binary Large Object)
CLOB (Character Large Object)
Operationen
„ SUBSTRING, OVERLAY, || (Konkatenation)
„ IS [NOT] NULL, LIKE, EQUALS, POSITION, LENGTH, SIMILAR
Nicht erlaubt
„ BLOB/CLOB-Attribute als Teil eines Schlüssels
„ GROUP BY, ORDER BY, GREATER/LESS THAN
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
NOT
Werte:
„ TRUE
„ FALSE
„ UNKNOWN
Operationen:
„ NOT
„ AND
„ OR
„ IS [NOT]
Neue Basisdatentypen - Beispiel
Large Objects
–
4-8
Neue Basisdatentypen (1)
SQL-99 - Datenmodellerweiterungen
z
Spalten (Columns
(Columns)) = Attribute
R A1 ... An
...
INTEGER, SMALLINT, NUMERIC, DECIMAL,REAL,
FLOAT, CHARACTER, DATE, TIME, BIT, ...
Integritätsbedingungen
–
z
Basistabellen zur Speicherung von Daten
Sichten (Views): abgeleitete Tabellen
Typ eines Attributs ist ein Basisdatentyp (1NF)
Zeilen (Tupel) setzen sich aus Instanzen der
jeweiligen Wertebereiche zusammen
Verwendung von BOOLEAN- und LOB-Attributen:
SELECT Name
FROM MitarbeiterTupelTabelle
WHERE Vollzeit IS TRUE AND
POSITION ('Datenbanken' IN Bewerbung) > 0;
4-11
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-12
Tupeltypkonstruktor - ROW
Operationen auf Tupeltypen
Erzeugen eines Tupeltyps:
Erzeugen eines Tupels mit dem Tupelkonstruktor (der genauso wie der
Tupeltypkonstruktor heisst): ROW('Seestrasse', 31, 8008, 'Zürich', 'Schweiz')
ROW(Feldname_1 Datentyp_1, ..., Feldname_n Datentyp_n)
Beispiel:
ALTER TABLE MitarbeiterTupelTabelle
ADD COLUMN Anschrift ROW(Strasse VARCHAR(30),
Nr DECIMAL(4),
PLZ DECIMAL(5),
Ort VARCHAR(40),
Land VARCHAR(25));
Zugriff auf ein Tupelfeld
mittels Punktnotation:
SELECT Name, Anschrift.ORT
FROM MitarbeiterTupelTabelle
Vergleich zweier Tupel:
ROW(1, 2, 7) = ROW(1, 2, 7)
-- liefert TRUE
ROW(1, 2, 7) = ROW(1, 3, 7)
-- liefert FALSE
ROW(1, 2, 7) = ROW(1, NULL, 7) -- liefert UNKNOWN
ROW(1, 2, 7) < ROW(1, 3, 5)
ROW(1, 2, 7) < ROW(1, 1, 7)
ROW(1, 2, 7) < ROW(1, NULL, 7)
ROW(1, 2, 7) < ROW(1, 3, NULL)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-13
-- liefert TRUE
-- liefert FALSE
-- liefert UNKNOWN
-- liefert TRUE
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Arraytypkonstruktor - ARRAY
4-14
Operationen auf Arraytypen (1)
Erzeugen eines Arraytyps:
Erzeugen eines Arrays mit dem Arraykonstruktor (der genauso wie der
Arraytypkonstruktor heisst): ARRAY('Deutsch', 'Englisch')
Elementtyp ARRAY[Maximale-Kardinalität]
Beispiel:
ALTER TABLE MitarbeiterTupelTabelle
ADD COLUMN Sprachkenntnisse VARCHAR(15) ARRAY[8];
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-15
Direkter Zugriff auf das
i-te Arrayfeld mittels [i]:
SELECT Sprachkenntnisse[2]
FROM MitarbeiterTupelTabelle;
Deklarativer Elementzugriff
mittels Entschachtelung:
SELECT s
FROM MitarbeiterTupelTabelle,
UNNEST(Sprachkenntnisse) s;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Operationen auf Arraytypen (2)
Änderung eines einzelnen
Arrayelements:
UPDATE MitarbeiterTupelTabelle
SET
Sprachkenntnisse[1] = 'Türkisch';
Änderung des kompletten
Arraywerts:
UPDATE MitarbeiterTupelTabelle
SET
Sprachkenntnisse = ARRAY['Türkisch'];
Operationen auf Arraytypen (3)
Konkatenation zweier Arrays:
—
CARDINALITY(ARRAY['Deutsch', Türkisch'])
-- liefert den Wert 2
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
ARRAY['Deutsch', Türkisch'] ||ARRAY['Englisch']
-- erzeugt ARRAY['Deutsch', Türkisch', 'Englisch']
Vergleich zweier Arrays:
—
Kardinalität liefert Anzahl
der Arrayelemente:
4-16
Zwei Arrays sind vergleichbar g.d.w. ihre Elementtypen vergleichbar sind
Zwei vergleichbare Array A1 und A2 sind gleich (A1=A2) g.d.w
(1) sie die gleiche Kardinalität besitzen und
(2) alle Elemente paarweise gleich sind
ARRAY['Deutsch', Türkisch'] <> ARRAY['Deutsch', Türkisch', 'Englisch']
ARRAY['Deutsch', Türkisch'] = ARRAY['Deutsch', Türkisch', NULL]
4-17
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
-- liefert TRUE
-- liefert FALSE
4-18
Referenztypkonstruktor - REF
Operationen auf Referenztypen
Erzeugen eines Referenztyps:
Erzeugen einer Referenz auf ein Objekte durch Zuweisung der zugehörigen OID an ein
Referenzattribut bzw. Referenzvariable
REF(Strukturierter-Typ) [SCOPE (TypisierteTabelle)]
referenzierter Typ muss ein strukturierter Typ sein
Instanzen eines Referenztyp können nur dann dereferenziert werden, wenn eine
entsprechend typisierte Tabelle als Wertebereich (Scope) festgelegt wurde
–
–
Beispiel:
ALTER TABLE MitarbeiterTupelTabelle
ADD COLUMN Abteilung REF(AbteilungsTyp) SCOPE Abteilungen;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
SELECT Abteilung->Name
FROM MitarbeiterTupelTabelle;
Referenzauflösung mittels
DEREF-Operator:
SELECT DEREF(Abteilung)
FROM MitarbeiterTupelTabelle;
Vergleich zweier Referenzen:
AbteilungsTyp sei hier ein strukturierter Typ und Abteilung eine auf diesem Typ
basierende typisierte Tabelle
–
Dereferenzierung mittels
Pfeil-Operator:
—
—
4-19
Neue Typkonstruktoren - Beispiele (1)
Zwei Referenzen sind vergleichbar g.d.w. ihre referenzierten Typen gleich sind
Zwei vergleichbare Referenzen R1 und R2 sind gleich (R1=R2) g.d.w sie
denselben Referenzwert aufweisen (d.h. auf dasselbe Objekte verweisen)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-20
Neue Typkonstruktoren - Beispiele (2)
Verwendung des Tupel- bzw. Arraytypkonstruktors:
Änderung einer Tupelkomponente:
INSERT INTO MitarbeiterTupelTabelle(Name, Sprachkenntnisse)
VALUES (ROW('Billy', 'Clintwood'),
ARRAY['Deutsch', 'Englisch', 'Türkisch']);
UPDATE MitarbeiterTupelTabelle
SET Name.Nachname = 'Türker'
WHERE Name.Nachname = 'Tuerker';
Zugriff auf tupelwertige Attribute bzw. Verwendung arraywertiger Attribute:
Änderung eines Arrayelements mittels direktem Positionszugriff:
SELECT Name.Nachname
FROM MitarbeiterTupelTabelle
WHERE Name.Vorname = 'John' AND
'Deutsch' IN (SELECT * FROM UNNEST(Sprachkenntnisse));
UPDATE MitarbeiterTupelTabelle
SET Sprachkenntnisse[4]= 'Französisch'
WHERE Name.Nachname = 'Türker';
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-21
Distinct-Typen
–
–
–
–
Erzeugen einer Instanz eines Distinct-Typs:
Wiederverwendung
Strenge Typisierung (basiert auf Namensäquivalenz)
Nicht-optionales Schlüsselwort FINAL schliesst Subtypbildung aus
Systemdefinierte Vergleichsoperatoren basierend auf dem Quelltyp
Cast-Operatoren zur Konversion zwischen Distinct- und Quelltyp
Erzeugen eines
Distinct-Typs:
Beispiele:
4-22
Operationen auf Distinct-Typen
Kopie eines existierenden Datentyps mit neuem Namen
–
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Distinct-Typname(Quelltypwert)
z.B. Franken(1311.69) oder
Euro(170470.13)
Vergleich zweier Distinct-Werte:
— Distinct-Typen unterliegen der strengen Typisierung
— Zwei Distinct-Werte sind vergleichbar g.d.w. ihre Distinct-Typen identisch sind
— Beispiel: Franken(1000.00) = Euro(1000.00) ergibt einen Typkonflikt
CREATE TYPE Distinct-Typname AS (Quelltyp) FINAL
[CAST (SOURCE AS DISTINCT) WITH Funktionsname]
[CAST (DISTINCT AS SOURCE) WITH Funktionsname]
CREATE TYPE Franken AS DECIMAL(12,2) FINAL;
CREATE TYPE Euro AS DECIMAL(12,2) FINAL;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-23
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-24
Verwendung von Distinct-Typen (1)
Strukturierte Typen
Abstrakte Objekttypen mit Verhalten und eingekapselter Struktur
Beispiel: Distinct-Typen in Tabellendefinitionen:
–
CREATE TABLE CHBank(Nr INTEGER, Stand Franken);
CREATE TABLE EuroBank(Nr INTEGER, Stand Euro);
–
–
–
–
Anfrage basierend auf Distinct-Typen:
SELECT e.Nr
FROM CHBank c, EuroBank e
WHERE c.Nr= 234302 AND
c.Stand > e.Stand;
Syntax:
Anfrage ergibt Typkonflikt:
Schweizer Franken und Euro
sind nicht vergleichbar
→ Typkonvertierung ist notwendig!
→ CAST-Funktionen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Optional: Subtypbildung mittels UNDER-Klausel
Optional: Instanziierung verbieten
Nicht-optionales Schlüsselwort NOT FINAL erlaubt Subtypbildung
Optional: Bestimmen der Referenzgenerierung (OID-Erzeugung)
Optional: Objektverhalten in Methoden kodieren
4-25
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Attributdefinition
Instanzen strukturierter Typen heissen Objekte
CREATE TYPE AdresseTyp AS (
Strasse VARCHAR(30),
Nr
DECIMAL(4),
PLZ
DECIMAL(5),
Ort
VARCHAR(40),
Land
VARCHAR(25)
) NOT FINAL;
Attributname Typ
[REFERENCES ARE NOT CHECKED
| REFERENCES ARE CHECKED ON DELETE NO ACTION]
[DEFAULT Defaultwert]
–
4-30
Strukturierte Typen - Beispiele
Syntax:
–
CREATE TYPE Typname [UNDER Supertypname]
AS (Attributdefinitionsliste)
[[NOT] INSTANTIABLE]
NOT FINAL
[Referenzgenerierung [Referenzcasting]]
[Methodendeklarationsliste]
Bei Referenzattributen, die mit einer SCOPE-Klausel versehen sind,
muss auch die REFERENCES-Klausel spezifiziert werden
Default: REFERENCES ARE NOT CHECKED
„ Ungültige Referenzen sind möglich
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
CREATE TYPE PersonTyp AS (
Name
VARCHAR(30),
Anschrift
AdresseTyp,
Ehepartner
REF(PersonTyp),
Kinder
REF(PersonTyp) ARRAY[10]
) NOT FINAL;
4-31
Strukturierter Typ
Einbettung
Referenz
Konstruierte Typen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Operationen auf strukturierten Typen (1)
4-32
Operationen auf strukturierten Typen (1)
Erzeugen einer Instanz eines strukturierten Typs mit dem Default-Konstruktor, der
genauso heisst wie der zugehörige strukturierte Typ:
Typtest:
Objekt IS [NOT] OF (Typnamensliste)
Prädikat IS OF wird TRUE, wenn die Liste den Typ des Objekts bzw. einen
Supertyp davon enthält
— Letzteres kann durch die Verwendung von ONLY ausgeschlossen werden, z.B.
—
z.B. AdresseTyp() oder PersonTyp()
Attributzugriff erfolgt mittels Funktionsaufrufe sowie Punkt-Operator
m IS OF (ONLY(Mitarbeiter))
Vergleich zweier Objekte (Instanzen strukturierter Typen):
— keine Ordnungsrelationen implizit bereitgestellt
— benutzerdefinierte Ordnungsfunktionen können aber definiert werden
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Basisdatentypen
Temporäre Typanpassung entlang einer Typhierarchie:
(Objekt AS Supertypname)
TREAT(Objekt AS Subtypname)
4-33
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
-- Anpassung nach oben
-- Anpassung nach unten
4-34
Einkapselung von strukturierten Typen
z
Vollständige Einkapselung
–
–
z
Attributzugriff bei Instanzen eines strukturierten Typs
z
Attribute nur über Methoden zugreifbar
Attributzugriffe und Methodenaufrufe gleich behandelt
–
–
Implizite Observer- und Mutator-Methoden für jedes Attribut
Observer:
Mutator:
z
FUNCTION Strasse(AdresseTyp) RETURNS VARCHAR(30);
FUNCTION Nr(AdresseTyp)
RETURNS DECIMAL(4);
FUNCTION PLZ(AdresseTyp) RETURNS DECIMAL(5);
FUNCTION Ort(AdresseTyp)
RETURNS VARCHAR(40);
FUNCTION Land(AdresseTyp) RETURNS VARCHAR(25);
FUNCTION Strasse(AdresseTyp, VARCHAR(30))
FUNCTION Nr(AdresseTyp, DECIMAL(5))
FUNCTION PLZ(AdresseTyp, DECIMAL(5))
FUNCTION Ort(AdresseTyp, VARCHAR(40))
FUNCTION Land(AdresseTyp, VARCHAR(25))
Zugriff über Funktionsaufrufe oder Punkt-Operator
Pfadausdrücke: Nacheinander Anwendung des Punkt-Operators
–
z
z
4-35
–
z
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
z
–
–
Beispiel für das Überladen eines Konstruktors:
–
z
Subtyp erbt alle Attributen und Methoden des Supertyps
Supertyp muss selbst ein strukturierter Typ sein
Subtyp darf maximal einen direkten Supertyp haben
„ Keine (direkte) Mehrfachvererbung möglich
Subtyp kann geerbte Methoden überschreiben und überladen
Strukturierte Typen, die keine Subtypen sind, heissen Wurzeltypen
Aufruf des
Default-Konstruktors
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-37
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Subtypen - Beispiele
4-38
Methoden
CREATE TYPE MitarbeiterTyp UNDER PersonTyp AS (
PNr
INTEGER,
Bewerbung
CLOB(50K),
Bild
BLOB(5M),
Vorgesetzter
REF(MitarbeiterTyp),
Projekte
REF(ProjektTyp) ARRAY[50],
Gehalt
Franken
) NOT FINAL;
z
Objektverhalten in Methoden kodiert
z
Methoden sind Funktionen, die zu einem strukturierten Typen gehören
–
–
z
–
4-39
Deklaration erfolgt innerhalb der Typdefinition
Besitzen impliziten SELF-Parameter
Overloading, Overriding und Late Binding
–
CREATE TYPE ManagerTyp UNDER MitarbeiterTyp AS (
Leitet
REF(ProjektTyp) ARRAY[100],
Bonus
Franken
) NOT FINAL;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-36
Subtypdefinition mittels UNDER-Klausel
–
Mutator-Methoden
Redefiniertem Konstruktor (kann beliebig überladen werden)
CREATE FUNCTION PersonTyp (n VARCHAR(30))
RETURNS PersonTyp
BEGIN
DECLARE p PersonTyp;
SET p = PersonTyp();
SET p.Name = n;
RETURN p;
END;
DECLARE p PersonTyp;
SET p.Name = ‘Luke Skywalker’;
SET p.Anschrift.Ort = ‘Hollywood’;
Subtypbildung - Aufbau von Typhierarchien
Verwendung des Default-Konstruktors
Initialisierung mittels
–
BEGIN
END;
Erzeugen von Instanzen eines strukturierten Typs
z
Navigierende Zugriffe
Beispiel:
RETURNS AdresseTyp;
RETURNS AdresseTyp;
RETURNS AdresseTyp;
RETURNS AdresseTyp;
RETURNS AdresseTyp;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
X.Attributname
entspricht Attributname(X)
SET X.Attributname = Wert entspricht Attributname(X, Wert)
Überladen von Methodennamen
„ mehrere gleichnamige Methoden mit unterschiedlichen Parametern
Dynamisches Binden von überschriebenen Methoden zur Laufzeit
„ Auswahl der Implementierung hängt vom Objekttyp ab
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-41
Methodenklaration - Beispiele
Methodendefinition
CREATE TYPE PersonTyp AS (
...
) NOT FINAL
METHOD AnzahlKinder() RETURNS INTEGER;
z
z
Syntax:
[INSTANCE | STATIC]
CREATE METHOD Methodenname (Parameter)
RETURNS Rückgabetyp
FOR StrukturierterTyp
Methodenrumpf
CREATE TYPE MitarbeiterTyp AS (
...
) NOT FINAL
METHOD Einkommen() RETURNS Franken;
METHOD Gehaltserhöhung() RETURNS Franken;
CREATE TYPE ManagerTyp AS (
...
) NOT FINAL
OVERRIDING METHOD Einkommen() RETURNS Franken;
OVERRIDING METHOD Gehaltserhöhung() RETURNS Franken;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Implementierung einer deklararierten Methode
z
Methodenrumpf besteht aus einer SQL-Prozedur-Anweisung
–
–
–
4-49
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Einsatz strukturierter Typen
z
Als Attributtyp anderer strukturierter Typen
z
Als Parametertyp von Methoden, Funktionen und Prozeduren
z
Als Typ von SQL-Variablen
z
Als Typ einer typisierten Tabelle
z
Als Typ von Tabellenspalten
z
Instanziierung mittels (Typ-)Konstruktor
–
z
Zugriff auf Objektattributwerte (und Aufruf von Methoden)
SELECT Stammdaten.Name, Stammdaten.AnzahlKinder
FROM PersonenTupelTabelle
WHERE Stammdaten.Anschrift.Ort = 'Zürich' AND
POSITION('Diplom' IN Lebenslauf) > 0;
4-55
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
–
z
z
Ordnungsformen: NONE, EQUALS ONLY, ORDER FULL
Ordnungskategorien:
„ RELATIVE: Ordnungsfunktion ordnet jeweils zwei Instanzen
„ MAP: Vergleich bzw. Ordnung basiert auf dem Ergebnis einer
Abbildungfunktion, die Instanzen auf Werte von Basisdatentypen abbildet
„ STATE: Vergleich basiert auf paarweise Gleichheit der Attributwerte
Syntax:
Distinct-Typen als Kopien vorhandener Typen
–
z
–
–
–
–
–
4-57
Strenge Typisierung (Typkompatibilität über Namensäquivalenz)
Strukturierte Typen als abstrakte Objekttypen
–
CREATE ORDERING FOR BDTyp
{EQUALS ONLY | ORDER FULL} BY
{RELATIVE WITH Ordnungsfunktion(P1 BDTyp, P2 BDTyp)
| MAP WITH Abbildungsfunktion(Parameter BDTyp)
| STATE [Schemaname]}
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-56
Zusammenfassung - Benutzerdefinierte Typen
Vergleichbarkeit und Ordnung von Instanzen benutzerdefinierter Typen
–
Geschachtelte Konstruktoraufrufe möglich
INSERT INTO PersonenTupelTabelle
VALUES (PersonTyp('Billy Bär',
AdresseTyp('Seefeldstrasse', 31, 8008, 'Zurich', 'CH'),
NULL, ARRAY(NULL)),
NULL, NULL);
Benutzerdefinierte Gleichheit von Instanzen
z
4-50
Instantiierung und Verwendung strukturierter Typen
CREATE TABLE PersonTupelTabelle (
Stammdaten
PersonTyp,
Bild
BLOB(1M),
Lebenslauf
CLOB(50k)
);
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Schemadefinitions- oder Schemamanipulationsanweisung
INSERT, UPDATE, DELETE, SELECT (SQL-Datenänderungsanweisungen)
...
Objekteinbettung vs. Objektreferenzierung (Kopier- vs. Referenzsemantik)
Kapselung (Implizite Observer- und Mutator-Methoden für alle Attribute)
Aggregationshierarchien (Strukturierte Typen zusammengesetzt aus anderen
strukturierten Typen)
Typhierarchien (Subtypbildung)
Overloading und Overriding von Methoden plus dynamisches Binden
Vergleichbarkeit und Ordnung
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-62
Tabellen
z
Einziges Konzept (Container), um Daten persistent speichern zu können
z
Bisher in SQL-92
–
–
z
Tabellen (Forts.)
z
–
–
Tabelle als Multimenge von Tupeln
TYPE(Tabelle) = MULTISET(ROW(TYPE(A1), ..., TYPE(An)))
„ wobei TYPE(Ai) ein Basisdatentyp ist
–
Erweiterungen in SQL-99
–
–
–
Tupel- vs. Objekttabellen
z
Attribute können arraywertig, tupelwertig, objektwertig oder referenzwertig sein
Typ einer Tabelle kann durch einen strukturierten Typ festgelegt werden
„ Derartige Tabellen heissen typisierte Tabellen (oft auch Objekttabellen)
„ Zeilen entsprechen Objekten (Instanzen) des festgelegten Typs
Subtabellen (Tabellenhierachien)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Aufgepasst
–
–
–
–
4-63
Tupeltabelle = Tabelle, die einer Multimenge von Tupeln entspricht
Objekttabelle = Tabelle, die einer Menge von Objekten
(Instanzen eines strukturierten Typs) entspricht
Typisierte Tabelle = Tabelle, dessen Typ ein benutzerdefinierter Typ ist
Tupeltabellen können objektwertige Attribute enthalten
Prinzipiell sind die gleichen Attributtypen für Tupel- und Objekttabellen erlaubt
SQL-99 verwendet den Begriff Typisierte Tabelle mit Objekttabellensemantik
Prinzipiell kann aber auch eine Tupeltabelle typisiert sein (siehe Informix; Kap.5)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Definition von Tupeltabellen
z
Syntax:
z
Tabellenelement:
–
–
–
4-64
Definition von Tupeltabellen - Beispiel
CREATE TABLE Tabellenname (Tabellenelementliste)
CREATE TABLE PersonTupelTabelle (
Name
ROW(Vorname VARCHAR(15),
Nachname VARCHAR(25)),
Anschrift
AdresseTyp,
Bild
BLOB(1M),
Lebenslauf
CLOB(50k),
Sprachkenntnisse VARCHAR(15) ARRAY[8],
Hobbies
VARCHAR(20) ARRAY[10]
);
Attributdefinition
| Tabellenintegritätsbedingung
| LIKE Tabellenname
Attributdefinition beinhaltet Festlegung des Datentyps und eventuell die Angabe
eines Defaultwerts sowie von Attibutbedingungen
„ Datentyp ist ein Basisdatentyp, ein mittels (geschachtelter) Anwendung von
Typkonstruktoren konstruierter Typ oder ein benutzerdefinierter Typ
„ SCOPE-Festlegung bei Referenzattributen zwingend notwendig
Definition von Tabellenintegritätbedingungen wie bisher in SQL-92
LIKE-Klausel kopiert Attributdefinitionen einer anderen Tabelle (ohne
Attributbedingungen und Defaultwerte)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
• Instanzen einer Tupeltabelle heissen Tupel
4-65
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Anfrage an Tupeltabellen - Beispiel
Definition von typisierten Tabellen
Die Anfrage
• Typisierte Tabelle basiert auf einem strukturierten Typen
SELECT *
FROM PersonTupelTabelle;
• Syntax:
CREATE TABLE Tabellenname OF StrukturierterTyp [UNDER Supertabelle] [(
[Referenzgenerierungsoption]
[Attributoptionsliste]
)]
liefert ein Ergebnis vom Typ
MULTISET(ROW(ROW(VARCHAR(15), VARCHAR(25)),
AdresseTyp,
BLOB(1M),
CLOB(50k),
ARRAY[8](VARCHAR(15)),
ARRAY[10](VARCHAR(20)))
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-66
• Attributoption: Attributname WITH OPTIONS Optionsliste
• Optionen:
4-67
SCOPE TypisierteTabelle
| DEFAULT Wert
| Integritätsbedingung
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-68
Referenzgenerierung
Definition von typisierten Tabellen - Beispiel
z
Legt OID-Attribut und die Generierung der OIDs fest
z
Muss für jede typisierte Wurzeltabelle angegeben werden
z
Darf nicht bei Subtabellen angegeben werden
z
Referenzgenerierungsoptionen
–
–
–
CREATE TABLE Personen OF PersonTyp (
REF IS oid SYSTEM GENERATED,
Ehepartner WITH OPTIONS SCOPE Personen,
Kinder WITH OPTIONS SCOPE Personen
);
REF IS oid USER GENERATED
ƒ OID-Generierung durch den Benutzer
REF IS oid SYSTEM GENERATED
ƒ OID-Generierung durch das System
REF IS oid DERIVED (Attributliste)
ƒ OID aus vorhandenen Attributwerten eines Schlüssels funktional bestimmt
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
z
z
Instanzen einer typisierten Tabelle heissen Objekte
Nur Instanzen einer typisierten Tabelle können mittels eines
Referenzattributs referenziert werden!
–
4-69
SCOPE-Klausel bestimmt die typisierte Tabelle, die referenziert wird
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Anfrage an typisierte Tabellen - Beispiel
Einfügen und Ändern in typisierten Tabellen - Beispiel
Was ist der Ergebnistyp der folgenden Anfrage?
Erzeugen von Tabelleninhalten (impliziter Aufruf des PersonTyp-Konstruktors):
SELECT *
FROM Personen;
INSERT INTO Personen
VALUES ('Billy Bär',
AdresseTyp('Seefeldstrasse', 31, 8008, 'Zurich', 'CH'),
(SELECT REF(p) FROM Personen p WHERE p.Name = 'Mama Bär'),
ARRAY(NULL));
Vielleicht
SET(PersonTyp)
?
Oder doch
Belegen von Referenzattributen:
MULTISET(ROW(REF(PersonTyp),
VARCHAR(30),
AdresseTyp,
REF(PersonTyp),
ARRAY[10](REF(PersonTyp))))
UPDATE Personen
SET Kinder[1] = (SELECT REF(p)
FROM Personen p
WHERE p.Name = 'Baby Bär')
WHERE Name = 'Billy Bär';
?
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-71
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Selektion auf typisierten Tabellen - Beispiel
4-72
Subtabellenbildung - Aufbau von Tabellenhierarchien
Zugriff auf ein Attribut eines eingebetteten Objektes erfolgt (analog zum
Tupelkomponentenzugriff) mittels Dot-Operator:
z
Subtabellendefinition mittels UNDER-Klausel
–
SELECT Name, Anschrift.Ort
FROM Personen;
–
Zugriff auf ein Attribut eines referenziertes Objekts erfolgt mittels PfeilOperator (entspricht Dereferenzierung plus Attributselektion):
–
–
SELECT Name, Ehepartner->Name
FROM Personen;
z
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-70
4-73
Typ der Subtabelle muss ein direkter Subtyp des Typs der Supertabelle sein
(Tiefe) Extension der Subtabelle muss immer eine Untermenge der (tiefen)
Extension der Supertabelle sein
„ Instanzen der Subtabelle sind auch Mitglieder der zugehörigen Supertabellen
Subtabelle darf maximal eine direkte Supertabelle haben
„ Keine (direkte) Mehrfachspezialisierung möglich
Subtabelle kann "geerbte" Integritätsbedingungen verschärfen bzw. neue
hinzudefinieren
Typisierte Tabellen, die keine Subtabellen sind, heissen Wurzeltabellen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-74
Subtabellenbildung - Beispiele
Typ- versus Tabellenhierarchie
CREATE TABLE Spieler OF PersonTyp
Typ
CREATE TABLE Mitarbeiter OF MitarbeiterTyp UNDER Personen (
Vorgesetzter WITH OPTIONS SCOPE Mitarbeiter,
Projekte WITH OPTIONS SCOPE Projekte
);
CREATE TYPE PersonTyp
Typ
CREATE TABLE Personen OF PersonTyp
Supertyp
CREATE TABLE Manager OF ManagerTyp UNDER Mitarbeiter (
Leitet WITH OPTIONS SCOPE Projekte
);
CREATE TYPE MitarbeiterTyp
UNDER PersonTyp
Supertabelle
Typ
CREATE TABLE Mitarbeiter
OF MitarbeiterTyp UNDER Personen
Typ
CREATE TABLE Angestellter
OF MitarbeiterTyp
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-75
Einfügungen und Löschungen in Tabellenhierarchien
z
Personen
SELECT * FROM Personen;
DELETE FROM Personen WHERE Name='Joe';
('Joe', ...)
('Jim', ...)
SELECT * FROM Mitarbeiter;
INSERT INTO Mitarbeiter(Name) VALUES('Joe');
INSERT INTO Mitarbeiter(Name) VALUES('Jim');
SELECT * FROM ONLY(Personen);
Zugriff auf flache Extension einer Supertabelle
liefert alle Personen, die keine “speziellen” Personen (z.B. Mitarbeiter) sind
MitarbeiterTyp
('Joe', ...)
SELECT *
FROM Personen EXCEPT Mitarbeiter;
('Jim', ...)
Zugriff auf Teil einer tiefen Extension
einer Supertabelle
liefert alle Personen, die keine Mitarbeiter sind
DELETE FROM Mitarbeiter WHERE Name='Jim';
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
Zugriff auf tiefe Extension einer Subtabelle
liefert alle Mitarbeiter-Objekte mit den geerbten Personen-Attributen
UNDER
Mitarbeiter
Zugriff auf tiefe Extension einer Supertabelle
liefert alle Personen, auch die Mitarbeiter
PersonTyp
('Billy', ...)
4-76
Anfragen an Tabellenhierarchien
INSERT an Supertabellen propagiert und DELETE wirkt auf Sub- und Supertabellen
INSERT INTO Personen(Name) VALUES('Billy');
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-77
Dereferenzierung und Navigation
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-78
Typinformation und Konversion
Dereferenzierung mittels DEREF (liefert Attributwerte eines referenzierten Objekts):
Explizite Konversion vom Sub- zum Supertyp:
SELECT DEREF(Vorgesetzter)
FROM Mitarbeiter;
SELECT Einkommen(m AS MitarbeiterTyp)
FROM Manager m;
Dereferenzierung (von Referenzattributwerten) über Pfeil-Operator:
Zugriff auf allgemeinere
Einkommensmethode des
Typs MitarbeiterTyp
Explizite Konversion vom Super- zum Subtyp:
SELECT *
FROM Mitarbeiter
WHERE Vorgesetzter->Name = 'Billy';
SELECT Einkommen(TREAT(m AS ManagerTyp))
FROM Mitarbeiter m
WHERE m IS OF (ManagerTyp);
Zugriff auf speziellere
Einkommensmethode des
Typs ManagerTyp
Dereferenzierung mit anschliessendem Komponentenzugriff:
Sei t eine Instanz eines benutzerdefinierten Typs und T eine Menge von
benutzerdefinierten Typen (inklusive all derer Subtypen), dann liefert das
Typprädikat t IS OF (T) TRUE g.d.w. der speziellste Typ von t Element von T ist
SELECT *
FROM Mitarbeiter
WHERE Vorgesetzter->Anschrift.PLZ = 65307;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-79
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-80
Substituierbarkeit
z
Overloading, Overriding und dynamisches Binden
Instanz eines Subtyps kann in jedem Kontext benutzt werden, wo eine
Instanz eines Supertyps nutzbar ist
–
–
–
z
Mehrere Methoden mit demselben Namen
–
Eingabeargumente für Methoden, deren formale Parameter auf dem Supertyp
definiert sind
Rückgabewert einer Methode oder Funktion, für das der Supertyp als formaler
Typ definiert wurde
Zuweisungen zu Variablen oder Attributen des Supertyps
–
z
Dynamisches Binden zur Laufzeit ("dynamic dispatch")
Bei identischer Methodensignatur wird die spezielleste
Methodenimplementierung ausgewählt
Beispiel: Folgende Anfrage berechnet das Einkommen von Personen, wobei sich die
Berechnungsfunktionen entsprechend dem Typ der Person unterscheiden kann
SELECT Einkommen
FROM Personen;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-81
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
SFW-Block (1)
SQL-99 - Datenmodell
z
SET
MULTISET
OBJECT
ROW
ARRAY
REF
Grundgerüst einer SQL-Anfrage: SFW-Block
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
Was ist das Ergebnis einer Anfrage in SQL-99?
–
Subtypbeziehung
–
Untermengenbeziehung
–
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-89
–
–
z
Attribute (auch abgeleitete, berechnete)
Methodenaufrufe
Unterabfragen
9
9
(9 )
z
FROM: Welche Tabellenausdrücke sind erlaubt?
–
–
Nur skalare Unterabfragen,
die genau einen Wert liefern!
–
–
–
Beispiel:
z
SELECT m.Name, 12*m.Einkommen, (SELECT COUNT(*)
FROM Mitarbeiter
WHERE Vorgesetzter = REF(m))
FROM Manager m;
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-90
SFW-Block (3)
SELECT: Was darf in der Projektionsliste stehen?
–
9
Tupeltabelle
9
Objekttabelle
Wert bzw. Kollektion — (In SQL:200n soll dies mö
möglich sein)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
SFW-Block (2)
z
Projektionsliste
Tabellenausdruck
Prädikat]
Attributliste]
Gruppenprädikat]
Basisdatentyp
z
Einstiegspunkte in die Datenbank:
Typisierte Tabelle:
SET(OBJECT(...))
Untypisierte Tabelle:
MULTISET(ROW(...))
4-82
Tupeltabellen
Objekttabellen (auch flache Extensionen)
Kollektionsabgeleitete Tabellen
Methodenaufrufe (die Tabellen liefern)
Unterabfragen (abgeleitete Tabellen)
9
9
9
—
9
Beispiele: Kollektionsabgeleitete bzw. mittels Unterabfragen abgeleitete Tabellen
SELECT *
FROM Manager m, UNNEST(m.Leitet) p;
SELECT *
FROM (SELECT * FROM (Tabelle1 UNION Tabelle2) INTERSECT Tabelle3);
4-91
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-92
SFW-Block (4)
z
Zusammenfassung
WHERE: Welche Prädikate sind erlaubt?
–
–
–
Prädikate über Attribute
Prädikate mit Methodenaufrufen
Prädikate mit Unterabfragen
z
9
9
9
SQL-99 : Objektrelationale Erweiterung von SQL-92
–
–
–
–
z
–
Beispiel:
SELECT *
FROM Manager m
WHERE Name LIKE 'T%' AND Einkommen > 50000 AND
3 < (SELECT COUNT(*)
FROM Mitarbeiter
WHERE Vorgesetzter = REF(m));
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-93
Neue Basisdatentypen und Typkonstruktoren
Benutzerdefinierte Datentypen und Typhierarchien
Typisierte Tabellen und Tabellenhierarchien
Typisierte Sichten und Sichtenhierarchien
Neue Anfragenkonstrukte, z.B.
„ Objektattributzugriff mittels Dot-Operator
„ Dereferenzierung mittels DEREF und Pfeil-Operator
„ Zugriff auf flache Extension einer Tabelle mittels ONLY
„ Zugriff auf Typ eines Attributs bzw. Variablen mittels IS OF
„ Zugriff auf Subtyp eines Attributs mittels TREAT
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2001/2002 (Dr. C. Türker)
4-94
Herunterladen