Objektrelationale, erweiterbare Datenbanken

Werbung
Kapitel 2
Evolution von Datenmodellen
Grundlegende Begriffe: Datenmodell und Datenbankschema
Typkonstruktoren
Relationales Modell und Erweiterungen
Basisobjektmodell und Erweiterungen
Objektrelationale Datenmodelle
Historische Einordnung und Bezüge
zwischen bekannten Datenmodellen
implementierungsnah
~1965
1970
abstrakt
HM
NWM
RM
ERM
SQL
NF2
eNF2
1980
SDM
OODM
RM = Relationenmodell
SQL = Structured Query Language
SDM = Semantisches Datenmodell
ODMG-93
2003
NWM = Netzwerkmodell
ERM = EntityEntity-RelationshipRelationship-Modell
1990
2000
HM = Hierarchisches Modell
ORDM
SQL:1999
SQL:2003
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
NF2 = Geschachteltes Relationenmodell
eNF2 = extended NF2
OODM = Objektorientierte Modelle
ORDM = Objektrelationale Modelle
ODMG = Object Database Management
Group
2-2
Datenmodelle und -sprachen
z
Datenmodell umfasst
–
Datenbeschreibungssprache (engl. Data Definition Language; DDL)
„ Definition und Evolution von Datenbankschemata
–
Datenmanipulationssprache (engl. Data Manipulation Language; DML)
„ Definition und Evolution von Datenbanken (Instanz eines
Datenbankschemas)
–
Datenabfragesprache (engl. Query Language; QL)
„ Abfrage des Datenbankzustands
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-3
Grundkonzepte und Erweiterungen von Datenmodellen
z
Grundkonzepte (B, T, R)
–
–
–
z
Basisdatentypen
Typkonstruktoren
Typkonstruktionsregeln
(z.B. INTEGER)
(z.B. ROW)
(z.B. ROW → INTEGER)
Erweiterungen um neue
–
–
–
Basisdatentypen
Typkonstruktoren
Typkonstruktionsregeln
(z.B. BOOLEAN)
(z.B. LIST)
(z.B. LIST → INTEGER)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-4
Typkonstruktoren
z
Erzeugen (konstruierte) Datentypen durch Anwendung auf vorhandenen
Datentypen
z
Standardtypkonstruktoren:
–
–
–
–
–
–
z
Tupeltypkonstruktor:
Mengentypkonstruktor:
Multimengentypkonstruktor:
Listentypkonstruktor:
Arraytypkonstruktor:
Referenztypkonstruktor:
ROW (bzw. TUPLE)
SET
MULTISET
LIST
ARRAY
REF
Kollektionstypen:
–
SET, MULTISET, LIST, ARRAY
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-5
Tupeltypkonstruktor - ROW (TUPLE)
z
Aggregiert feste Anzahl typisierter Datenkomponenten
–
z
Operationen
–
–
–
z
Entspricht RECORD oder STRUCT in Programmiersprachen
Tupelwerterzeugung mittels Konstruktoraufruf ROW(...) bzw. TUPLE(...)
Test auf Gleichheit zweier Tupelwerte
Komponentenzugriff mittels Dot-Operator (Identifizierung der Komponenten
durch Feldnamen)
Beispiel:
–
–
Adresse = ROW(Strasse VARCHAR(30), Nr DECIMAL(4), PLZ DECIMAL(5),
Ort VARCHAR(40), Land VARCHAR(25))
Datum oder Zeit werden oftmals als vordefinierte Tupeltypen angeboten
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-6
Kollektionstypen
z
Kollektionstypspezifische Operationen
–
–
–
–
–
–
Konstruktor
INSERT:
REMOVE:
EQUAL:
IN:
FOREACH:
SET(...), MULTISET(...), LIST(...) bzw. ARRAY(...)
Einfügen von Elementen
Entfernen von Elementen
Test auf Gleichheit zweier Kollektionen
Elementtest
Iterator für Elementdurchlauf
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-7
Mengentypkonstruktor - SET
z
Homogene, ungeordnete Menge (ohne Duplikate)
z
Mengentypische Operationen (zusätzlich zu den kollektionstypischen)
–
–
–
–
–
z
UNION:
Vereinigung zweier Mengen
INTERSECTION: Durchschnitt zweier Mengen
DIFFERENCE: Differenz zweier Mengen
CARDINALITY: Kardinalität einer Menge
SUBSET:
Test auf Einschluss einer Menge
Beispiel: Telefonnummern = SET(VARCHAR(20))
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-8
Multimengentypkonstruktor - MULTISET
z
Homogene, ungeordnete Multimenge (Duplikate sind möglich)
–
z
Operationen ähnlich zum Mengentypkonstruktor
–
–
–
–
–
z
Verallgemeinerung einer Menge
Beim Einfügen und Entfernen von Elementen werden Duplikate berücksichtigt
Elementtest liefert Anzahl (Kardinalität) des Elements zurück
Vereinigung zweier Multimengen erfolgt ohne Duplikateliminierung
Durchschnitt ermittelt minimale Elementeanzahl je Element
Elementdurchlauf mit Mengen- und Multimengensemantik möglich
Beispiel: Noten = MULTISET(INTEGER)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-9
Listentypkonstruktor - LIST
z
Homogene Folge/Sequenz (Duplikate sind möglich)
z
Listentypische Operationen (zusätzlich zu den kollektionstypischen)
–
–
–
–
–
–
–
–
z
INSERT_FIRST:
APPEND:
REMOVE_FIRST:
REMOVE_LAST:
CONCAT:
FIRST:
LAST:
NEXT:
Einfügen eines Elements am Anfang der Liste
Anhängen eines Elements am Ende der Liste
Entfernen des Anfangselements
Entfernen des Schlüsselelements
Aneinanderhängen zweier Listen
Direkter Zugriff auf den Listenanfang
Direkter Zugriff auf das Listenende
Zugriff auf nächstes Element
Beispiel: Telefonnummern = LIST(VARCHAR(20))
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-10
Arraytypkonstruktor - ARRAY
z
Homogene Sequenz fester Grösse (Duplikate sind möglich)
–
z
Arraytypische Operationen (zusätzlich zu den kollektionstypischen)
–
–
–
–
z
(eindimensionaler) Vektor
Lesen und Schreiben eines Elements an einer Indexstelle
[i]:
Direkter Elementzugriff über Index
[i:j]:
Zugriff auf Teil des Arrays
RESIZE: Ändern der Grösse
Beispiel: Telefonnummern = ARRAY[3] OF VARCHAR(20)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-11
Vergleich der Eigenschaften der Kollektionstypen
Typ
Duplikate Ordnung
Index
#Elemente
SET
—
—
—
variabel
MULTISET
9
—
—
variabel
LIST
9
9
—
variabel
ARRAY
9
9
9
beschränkt
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-12
Weitere Kollektionsoperationen
z
Umwandlung des Typs einer Kollektion k, z.B.
–
–
z
Extraktion des Elements einer einelementigen Kollektion k
–
–
z
LISTTOSET(k)
Beispiel: LISTTOSET(LIST(11, 13, 11)) → SET(11, 13)
ELEMENT(k)
Beispiel: ELEMENT(SET(9))) → 9
"Flachklopfen" einer geschachtelten Kollektion k
–
–
FLATTEN(k)
Beispiel: FLATTEN(MULTISET(LIST(1,4), LIST(9,4,7))) → MULTISET(1,4,9,4,7)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-13
Referenztyp
z
In einigen Objektmodellen fest verankert (Referenzsemantik)
z
Attribute vom Typ Referenztyp heissen Referenzattribute
–
z
Wert eines Referenzattributs ist eine OID, das ein Objekt des "referenzierten"
Typs referenziert
Operationen
–
–
–
–
Konstruktor (REF)
Test auf Gleichheit
Zugriff auf Objektwert mittels Dereferenzierung (DEREF)
Direkter Zugriff auf Attribute eines referenzierten Objekts mittels PfeilOperator (->; kombinierter DEREF- und Dot-Operator)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-14
Relationales Datenmodell
Relationenname
SET
R
Attribute
A1
...
...
ROW
Attributwert
An
Relationenschema
...
...
Basisdatentyp
Tupel
BR={INTEGER, REAL, CHAR, ...}
TR={SET, ROW}
RR={→ SET(ROW(a1, ..., an)),
ai → BR}
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
...
Relation
..
.
...
Erste Normalform:
"Nur atomare Attribute"
2-15
Operationen der Relationalen Algebra (1)
z
Selektion
–
–
Filtert Tupel, die ein Boolesches Selektionsprädikat erfüllen ("objekterhaltend")
SELECT [pred] (Relation)
R
A1
A2
233
'XYZ'
R'
R'=SELECT [A1<500] (R)
456 'ABC'
891 'CAN'
R''
R''=PROJECT [A1] (R)
z
Projektion
–
–
Filtert Attribute ("objektgenerierend")
PROJECT [Attributliste] (Relation)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
A1
A2
233
'XYZ'
456
'ABC'
A1
233
456
891
2-16
Operationen der Relationalen Algebra (2)
z
Natürlicher Verbund (Natural Join)
–
–
Verknüpft Relationen über gleichbenannte Attribute und gleiche Werte
("objektgenerierend")
R1 JOIN R2
R1
A1
A2
233
'XYZ'
456 'ABC'
891 'CAN'
R2
A1
A3
891
'T'
911
'F'
456
'F'
R'=R1 JOIN R2
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
R'
A1
A2
A3
456
'ABC'
'F'
891
'CAN'
'T'
2-17
Operationen der Relationalen Algebra (3)
z
Mengenoperatoren
–
–
Vereinigung, Differenz, Durchschnitt ("objekterhaltend")
R1 UNION R2, R1 EXCEPT R2, R1 INTERSECT R2
R'
R1
R2
A1
A2
233
'XYZ'
456
'ABC'
456 'ABC'
891
'CAN'
891 'CAN'
891
'JIM'
A1
A2
233
'XYZ'
891
'CAN'
A1
A2
456
'ABC'
A1
A2
233
'XYZ'
A1
A2
891
'JIM'
R'=R1 UNION R2
R''=R1 EXCEPT R2
R''
456 'ABC'
R'''=R1 INTERSECT R2
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
R'''
2-18
Operationen der Relationalen Algebra (4)
z
Umbenennung
–
–
Ändert Attributnamen
RENAME [Name1, Name2] (Relation)
R
z
A1
A2
233
'XYZ'
R'
X1
A2
233
'XYZ'
456 'ABC'
456
'ABC'
891 'CAN'
891
'CAN'
R'=RENAME [A1, X1] (R)
Alle Algebraoperationen sind beliebig kombinierbar
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-19
Generische Datenbankänderungsoperationen
z
Einfügen, Ändern und Löschen von Tupeln
–
–
–
R
INSERT INTO Relation VALUES (...)
UPDATE Relation SET ... [WHERE ...]
DELETE FROM Relation [WHERE ...]
A1
A2
233
'XYZ'
R'=INSERT INTO R VALUES(111,'UHU')
456 'ABC'
891 'CAN'
R'
R''
R''=UPDATE R SET A1=147
R'''
R'''=DELETE FROM R WHERE A1=456
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
X1
A2
233
'XYZ'
456
'ABC'
891
'CAN'
111
'UHU'
A1
A2
147
'XYZ'
147
'ABC'
147
'CAN'
A1
A2
233
'XYZ'
891
'CAN'
2-20
Erweiterung des Relationenmodells um neue
Basisdatentypen
R
SET
ROW
Basisdatentyp
A1
A2
69
TRUE
13
FALSE
17
FALSE
Atomare, Boolesche Attribute
BOOLEAN
B=BR ∪ {BOOLEAN}
T=TR
R=RR
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-21
Erweiterung des Relationenmodells um
Typkonstruktionsregeln
R
SET
A1
69
'XYZ'
4116
'CEM' 7998
ROW
13
Basisdatentyp
17
B=BR
T=TR
R=RR ∪ {ai → SET(ROW(a1, ..., an))}
{A2}
A21
A22
'ABC'
1201
'XYZ'
4116
'FCB'
5463
'CAN'
1311
NF2 (geschachtelte) Relationen
"Non-First-Normal-Form" erlaubt
relationenwertige Attribute
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-22
Operationen der Geschachtelten Relationenalgebra (1)
z
Erweiterung der Relationenalgebra:
–
Selektion (Selektionsprädikate mit Mengenvergleichen ⊂ und ∈), Projektion,
Verbund, Mengenoperationen, Umbenennung auf der "äusseren Struktur"
einer geschachtelten Relation anwendbar
R'
R
A1
{A2}
A21
A22
69 'XYZ'
4116
'CEM' 7998
13
17
'ABC'
1201
'XYZ'
4116
'FCB'
5463
'CAN'
1311
A1
{A2}
R'=SELECT [A1=17] (R)
A21
17
R''=PROJECT [A2] (R)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
R''
A22
'CAN' 1311
{A2}
A21
A22
'XYZ'
4116
'CEM' 7998
'ABC'
1201
'XYZ'
4116
'FCB'
5463
'CAN'
1311
2-23
Operationen der Geschachtelten Relationenalgebra (2)
z
Nestung
–
–
R
Schachtelung (Zusammenfassung) von Attributen
NEST [(A1, ..., An); A] (Relation)
„ A ist dann vom Typ SET(TUPLE(A1, ..., An))
„ (A1, ..., An)-Tupel zusammengefasst, falls sie auf den restlichen Attributen
des Relationenschemas (R-{A1, ...., An}) übereinstimmen
A1
A2
A3
69
'XYZ'
4116
69
'CEM' 7998
17
'CAN'
R'=NEST [(A2, A3); A] (R)
R'
A1
69
1311
A2
A3
'XYZ'
4116
'CEM' 7998
17
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
{A}
'CAN'
1311
2-24
Operationen der Geschachtelten Relationenalgebra (3)
z
Entnestung
–
–
Entschachtelung von Attributen
UNNEST [A] (Relation)
„ Falls A vom Typ SET(TUPLE(A1, ..., An)) ist, sind die Attribute A1, ..., An nun
im Relationenschema enthalten
„ Tupel von A werden mit den zugehörigen Attributwerten der restlichen
Attribute von R zu neuen Tupeln verbunden
R
A1
69
17
{A}
R'=UNNEST [A] (R)
R'
A1
A2
A3
69
'XYZ'
4116
A2
A3
'XYZ'
4116
69
'CEM' 7998
'CEM' 7998
17
'CAN'
'CAN'
1311
1311
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-25
Operationen der Geschachtelten Relationenalgebra (4)
z
Nestung und Entnestung können die Struktur (den Typ) einer
geschachtelten Relation ändern
z
Nestung mit anschliessender Entnestung ergibt die Ausgangsrelation
–
z
UNNEST [A] (NEST [(A1, ..., An); A] (R)) = R
Nestung ist dagegen nicht invers zu einer vorangegangenen Entnestung
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-26
Operationen der Geschachtelten Relationenalgebra (5)
z
Schachtelung von Operationen
–
–
R
A1
69
13
17
Zugriff auf "innere Struktur" einer geschachtelten Relation
Selektionen und Projektionen können innerhalb des Selektionsprädikats bzw.
innerhalb der Liste der zu projizierenden Attribute auftauchen
{A2}
A21
A22
R'=PROJECT [A1, SELECT [A22<2500] (A2)] (R)
4116
{A2}
A21 A22
'CEM' 7998
13 'ABC' 1201
'ABC'
1201
17 'CAN'
'XYZ'
4116
'FCB'
5463
'CAN'
1311
'XYZ'
R' A1
R''
A1
{A2}
A21
69
'XYZ'
1311
'CEM'
13
'ABC'
'XYZ'
R''=PROJECT [A1, PROJECT [A21] (A2)] (R)
'FCB'
17
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
'CAN'
2-27
Operationen der Geschachtelten Relationenalgebra (6)
R'=SELECT [SELECT [A21='CAN'] (A2) ⊃ ∅] (R)
R
A1
{A2}
A21
A22
69 'XYZ'
R'
4116
17
'ABC'
1201
'XYZ'
4116
'FCB'
5463
'CAN'
1311
{A2}
A21
A22
17 'CAN'
'CEM' 7998
13
A1
1311
R''=SELECT [SELECT [A22 =7998] (A2) ⊃ ∅] (R)
R''
A1
69
{A2}
A21
A22
'XYZ'
4116
'CEM' 7998
R'''=SELECT [A22<5000] (PROJECT [A21, A22] (UNNEST [A2] (R)))
R'''
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
A21
A22
'ABC'
1201
'XYZ'
4116
'CAN'
1311
2-28
Schachtelung von Selektion und Projektion:
Algebra- versus Pseudo-SQL-Notation
{R}
A1
{A2}
A21 A22
In Projektion geschachtelte Projekte:
PROJECT[PROJECT[A21] (A2)] (R)
SELECT (SELECT a.A21 FROM a IN r.A2)
FROM r IN R
{R'}
{A2}
A21
In Projektion geschachtelte Selektion:
PROJECT[SELECT[pred(A2)] (A2)] (R)
In Selektion geschachtelte Projektion:
SELECT[S Θ PROJECT[A21] (A2)] (R)
In Selektion geschachtelte Selektion:
SELECT[S Θ SELECT[pred(A2)] (A2)] (R)
SELECT (SELECT * FROM a IN r.A2 WHERE pred(a))
FROM r IN R
SELECT *
FROM r IN R
WHERE S Θ (SELECT a.A21 FROM a IN r.A2)
SELECT *
FROM r IN R
WHERE S Θ (SELECT * FROM a IN r.A2 WHERE pred(a))
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-29
Schachtelung von Selektion und Projektion
PROJECT[PROJECT[A21] (A2)] (R)
{R}
A1
{A2}
A21
A22
69 'XYZ' 4116
'CEM' 7998
13 'ABC' 1201
'XYZ' 4116
'FCB' 5463
{R'}
{A2}
A21
'XYZ'
'CEM'
'ABC'
'XYZ'
'FCB'
SELECT[∅ ⊂ SELECT[A22>6000] (A2)] (R)
PROJECT[SELECT[A22>2500] (A2)] (R)
SELECT[∅ ⊂ PROJECT[A21] (A2)] (R)
{R'}
A1
{A2}
A21
A22
69 'XYZ' 4116
'CEM' 7998
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
{R'}
{A2}
A21
A22
'XYZ' 4116
'CEM' 7998
'XYZ' 4116
'FCB' 5463
{R'}
A1
{A2}
A21
A22
69 'XYZ' 4116
'CEM' 7998
13 'ABC' 1201
'XYZ' 4116
'FCB' 5463
2-30
Review - Schachtelungen wie in der Relationenalgebra
PROJECT[A21] (PROJECT[A2] (R))
Innere Projektion liefert SET(TUPLE(SET(TUPLE(TYPE(A21), TYPE(A22))))), d.h. eine
Tabelle mit einem tabellenwertigen Attribut. Derartig geschachtelte Projektionen
wirken auf derselben Tabellenebene. Da A21 kein Attribut von R ist, ist die obige
Anfrage nicht korrekt! Richtig wäre: PROJECT[A21] (UNNEST[A2] (PROJECT[A2] (R)))
PROJECT[A2] (SELECT[pred(R)] (R))
Innere Selektion liefert Tabelle vom TYPE(R). Die äussere Projektion kann nur Attribute
der äusseren Tabellenstruktur projizieren, d.h. in unserem Beispiel auf A1 und A2.
SELECT[pred(A2)] (PROJECT[A2] (R))
Innere Projektion liefert SET(TUPLE(SET(TUPLE(TYPE(A21), TYPE(A22)))), d.h. eine Tabelle
mit einem tabellenwertigen Attribut. Die äussere Selektion bezieht sich somit nur auf
die Menge (A2) und nicht auf die Tupel, die in dieser Menge enthalten sind.
SELECT[pred1(R)] (SELECT[pred2(R)] (R))
Beide Selektionen können nur Prädikate enthalten, die Bedingungen über Attribute
der äusseren Tabellenstruktur darstellen. Somit ist kein Bezug zu inneren Tabellen
möglich.
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-31
Generische Datenbankänderungsoperationen
z
Einfügen, Ändern und Löschen von Tupeln
INSERT INTO Relation VALUES (...)
UPDATE Relation SET ... [WHERE ...]
DELETE FROM Relation [WHERE ...]
Relation kann nun eine "innere" Relation sein, die mittels einer Anfrage
ermittelt wird
–
–
–
–
R
A1
{A2}
A21
69 'XYZ'
R'
A1
A21
A22
4116
69 'XYZ'
'CAN'
1311
A22
4116
'CEM' 7998
'CEM' 7998
17
{A2}
17
'CAN'
1311
'JIM'
2907
R'=INSERT INTO (PROJECT [A2] (SELECT [A1=17](R))) VALUES('JIM', 2907)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-32
Zwischenzusammenfassung
z
"Flache" Relationenalgebra ist wohldefiniert
–
–
z
Unterschied zwischen flacher und geschachtelter Relationenalgebra
–
–
z
Bietet formale Grundlage für relationale Anfragesprachen
Einfach ausdehnbar auf geschachtelte Relationen
Flach: Attribute treten in der Selektion und Projektion als Domainvariable auf
Geschachtelt: Domainvariablen können selbst wieder Relationen sein, auf die
Relationenalgebraoperationen anwendbar sind
Nun folgen
–
–
Verallgemeinerungen der geschachtelten Relationenalgebra
Objektalgebra mit Operationen für Kollektionen von abstrakten Objekten
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-33
Erweiterung des Relationenmodells um
Typkonstruktionsregeln
SET
R
A1
{A2}
A21
<A22>
A221
ROW
Basisdatentyp
B=BR
T=TR
R=RR ∪ {ai → SET(ai),
ai → ROW(a1, ..., an)}
69
13
17
SET und ROW sind orthogonal andwendbar
{A222}
'XYZ'
1970 {41, 16}
'CEM'
1972
{79, 98, 39, 44}
'ABC'
1972
{12, 1, 78}
'XYZ'
1970 {41, 16}
'FCB'
1999 {54, 63, 4 ,17}
'CAN' 1969 {13, 11, 69}
Komplex-"Objekt"-Modell
Relationen mit tupel-, mengenund relationenwertigen Attributen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-34
Operationen des Komplex-"Objekt"-Modells (1)
Zugriff auf Tupelkomponenten mittels Dot-Notation
z
R
A1
{A2}
A21
<A22>
A221
69
13
17
{A222}
'XYZ'
1970 {41, 16}
'CEM'
1972
{79, 98, 39, 44}
'ABC'
1972
{12, 1, 78}
'XYZ'
1970 {41, 16}
'FCB'
1999 {54, 63, 4, 17}
R'
'CAN' 1969 {13, 11, 69}
{A2}
<A22>
A221
1972
{A222}
{12, 1, 78}
1999 {54, 63, 4, 17}
Selektion mit A22.A221>1971 & A1=13 und Projektion auf tupelwertige
R''=PROJECT[PROJECT[A22](SELECT[A22.A221>1971](A2))](SELECT
[A1=13](R))
Spalte A22
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-35
Operationen des Komplex-"Objekt"-Modells (2)
Operationen auf mengenwertigen Attributen, z.B. Kardinalität
z
R
A1
{A2}
A21
<A22>
A221
69
13
17
{A222}
'XYZ'
1970 {41, 16}
'CEM'
1972
{79, 98, 39, 44}
'ABC'
1972
{12, 1, 78}
'XYZ'
1970 {41, 16}
69
1972
{79, 98, 39, 44}
'FCB'
1999 {54, 63, 4, 17}
13
1972
{12, 1, 78}
R'
A1
{A2}
<A22>
A221
'CAN' 1969 {13, 11, 69}
{A222}
1999 {54, 63, 4, 17}
17
1969 {13, 11, 69}
Selektion mit
CARDINALITY(A22.A222)>2
und Projektion auf A1 und (A2))]
A22 (R)
R'=PROJECT
[A1,
PROJECT[A22] (SELECT [CARDINALITY(A22.A222)>2]
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-36
Erweiterung des Relationenmodells um neue
Typkonstruktoren
SET
LIST
ROW
Basisdatentyp
B=BR
T=TR ∪ {LIST}
R={→ SET(ai), → LIST(ai),
→ ROW(a1, ..., an),
ai → SET(ai), ai → LIST(ai),
ai → ROW(a1, ..., an), ai → BR}
Extended NF2-Relationen
mit mengen-, listen- und
tupelwertigen Attributen
Achtung: Relationen sind nicht mehr
die einzigen DB-Einstiegspunkte
1) Persistente Mengen
2) Persistente Listen
3) Persistente Tupel
SET, ROW und LIST sind orthogonal
Relation=Persistente Menge von Tupeln
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-37
Operationen des erweiterten NF2-Modells (1)
Zugriff auf erstes Element eines listenwertigen Attributs
z
R
A1
{A2}
A21
<A22>
A221
69
13
17
[A222]
'XYZ'
1970 [41, 16]
'CEM'
1972
[79, 98, 39, 44]
'ABC'
1972
[12, 1, 78]
'XYZ'
'FCB'
R'
A1
{A2}
<A22>
A221
[A222]
1970 [41, 16]
69
1970 [41, 16]
1999 [54, 63, 4, 17]
13
1972
'CAN' 1969 [13, 11, 69]
[12, 1, 78]
1970 [41, 16]
17
1969 [13, 11, 69]
R'=PROJECT
Selektion mit
[A1,
FIRST(A22.A222)<50
PROJECT [A22] (SELECT
und Projektion
[FIRST(A22.A222)<50]
auf A1 und A22
(A2))] (R)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-38
Operationen des erweiterten NF2-Modells (2)
Zugriff auf letztes Element eines listenwertigen Attributs
z
R
A1
{A2}
A21
<A22>
A221
69
13
17
[A222]
'XYZ'
1970 [41, 16]
'CEM'
1972
[79, 98, 39, 44]
'ABC'
1972
[12, 1, 78]
'XYZ'
1970 [41, 16]
'FCB'
1999 [54, 63, 4, 17]
R'
'CAN' 1969 [13, 11, 69]
{A2}
<A22>
LAST([A222])
78
16
17
R'=
Selektion
PROJECT
mit
[PROJECT
A1=13 und
[LAST(A22.A222)]
Projektion auf (A2)]
LAST(A22.A222)
(SELECT [A1=13] (R))
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-39
Operationen des erweiterten NF2-Modells (3)
Sortierte Ausgabe der Elemente eines listenwertigen Attributs
z
R
A1
{A2}
A21
<A22>
A221
69
13
17
R'
A1
[A222]
'XYZ'
1970 [41, 16]
'CEM'
1972
[79, 98, 39, 44]
'ABC'
1972
[12, 1, 78]
'XYZ'
1970 [41, 16]
'FCB'
1999 [54, 63, 4, 17]
{A2}
<A22>
ORDER([A222])
69 [16, 41]
[39, 44, 79, 98]
[1, 12, 78]
13
'CAN' 1969 [13, 11, 69]
[16, 41]
[4, 17, 54, 63]
17
[11, 13, 69]
R'=PROJECT [A1, PROJECT [ORDER(A22.A222)] (A2)] (R)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-40
Operationen des erweiterten NF2-Modells (3)
z
Kollektionstypische Operationen für Mengen und Listen
–
–
–
z
Explizite und implizite Konstruktoren
Listenkonkatenation, Extraktion von Teillisten, Direktzugriff auf Listenelemente
Flatten (Entschachtelung von geschachtelten Kollektionen)
Duplikateliminierung
–
–
MULTISET → SET
LIST → LIST (ohne Duplikate)
z
Sortierung
z
Gruppierung (Schachtelung von Kollektionen)
–
–
–
z
SET → SET(SET)
MULTISET → SET(MULTISET)
LIST → LIST(LIST)
Rekursion
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-41
Erweiterung des Relationenmodells um neue
Typkonstruktoren
R
SET
ROW
Basisdatentyp
REF
TID
A1
A2
@911
69
@655
@655
13
@876
@876
17
@655
Relationen mit
Tupelreferenzen
B=BR
T=TR ∪ {REF}
R=RR ∪ {ai → REF(ROW(a1, ..., an))}
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-42
Operationen auf Tupelreferenzen
Selektion & Projektion
z
R
R'=PROJECT [A2] (R)
TID
A1
A2
@911
69
@655
@655
@655
13
@876
@876
@876
17
@655
@655
@417
70
@131
@131
R''=SELECT [A2 ∈ PROJECT [TID] (R)] (R)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
R'
R''
A2
TID
A1
A2
@911
69
@655
@655
13
@876
@876
17
@655
2-43
Operationen auf Tupelreferenzen
z
Dereferenzierung
R1
z
TID
A1
A2
@911
69
@655
@655
13
@876
@876
17
@655
R'=PROJECT [A1, DEREF(A2)] (R1)
R'
Navigation (Pfadausdrücke)
R2
TID
B1
B2
@103
'LH'
@911
@161
'SR'
@876
@301
'TK'
@655
R''
R''=PROJECT [B1, DEREF(B2).A1] (R2)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
A1
<DEREF(A2)>
A1
A2
69
13
@876
13
17
@655
17
13
@876
B1
<DEREF(B2)>
A1
'LH'
69
'SR'
17
'TK'
13
2-44
Erweiterung des Relationenmodells um neue
Typkonstruktoren
R
SET
ROW
Basisdatentyp
B=BR
T=TR ∪ {ADT}
R=RR ∪ {ai → ADT(b1, ..., bn),
bi → B}
ADT
A1
A2:Rechteck
'T'
(1, 1, 11, 10)
'C'
(2, 3, 6, 8)
'B'
(8, 6, 12, 9)
'K'
(7, 4, 13, 11)
Relationen mit benutzerdefinierten
(abstrakten) Datentypen
ADT hier im Sinne von Wert-ADT
mit Kopiersemantik
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-45
Operationen auf abstrakten Datentypen (2)
z
Methodenaufrufe (Aufrufe von Schnittstellenfunktionen)
R
A1
A2:Rechteck
'T'
(1, 1, 11, 10)
'C'
(2, 3, 6, 8)
'B'
(8, 6, 12, 9)
'K'
(7, 4, 13, 11)
11
B
C
K
T
0,0
13
R'=PROJECT [A1, Fläche(A2), Umfang(A2)] (R)
R'
A1
Fläche(A2) Umfang(A2)
'T'
90
38
'C'
20
20
'B'
12
14
'K'
42
26
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-46
Operationen auf abstrakten Datentypen (2)
z
Methodenaufrufe mit Übergabeparameter
R
A1
A2:Rechteck
'T'
(1, 1, 11, 10)
'C'
(2, 3, 6, 8)
'B'
(8, 6, 12, 9)
'K'
(7, 4, 13, 11)
11
B
C
0,0
K
T
13
R'=PROJECT [A1, ÜberlapptMit(A2, 'B'), SchliesstEin(A2, 'B')] (R)
R'
A1
ÜberlapptMit(A2, 'B')
SchliesstEin(A2, 'B')
'T'
TRUE
FALSE
'C'
FALSE
FALSE
'B'
TRUE
TRUE
'K'
TRUE
TRUE
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-47
Basisobjektmodell
SET
OBJECT
Basisdatentyp
BO={INTEGER, REAL, CHAR, ...}
TO={SET, OBJECT}
RO={→ SET(OBJECT(a1, ..., an)),
ai → B,
ai → OBJECT(a1, ..., an),
ai → SET(OBJECT(a1, ..., an))}
OBJECT mit impliziter Referenzsemantik
Subtypbeziehung
Untermengenbeziehung
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-48
Grundkonzepte: Klassen, Typen und Extensionen
(Super)Klasse C
Typ der zur Klasse C
gehörenden Objekte
TYPE(C)
EXTENT(C)
(Super)Typ
T {Funktionen}
(Ober)Menge
S {Objekte}
Subtyp
T' ≤ T :⇔ Fkt(T) ⊆ Fkt(T')
Untermenge
S' ⊆ S
TYPE(C')
Menge der aktuell zur
Klasse C gehörenden
Objekte (Extension)
EXTENT(C')
Subklasse
C' ‹‹ C :⇔ T' ≤ T ∧ S' ⊆ S
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-49
Basisobjektmodell vs. Relationenmodell
Basisobjektmodell
Relationenmodell (1NF und NF2)
Abstrakter Objekttyp (Instanz ist Objekt)
Tupeltyp (Instanz ist Tupel)
Subtyp
—
Funktion, die elementaren Wert liefert
Atomares Attribut
Funktion, die Menge von abstrakten
Objekten liefert
Relationwertiges Attribut
Klasse (Menge von abstrakten Objekten)
Relation (Menge von Tupeln)
Subklasse
—
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-50
Objektalgebra
z
Stellt analog zur Relationenalgebra Operationen für das
Basisobjektmodell zur Verfügung
–
z
Algebraoperationen arbeiten nun auf Mengen von Objekten
Wesentliche Beobachtung
–
–
Selektion verändert Typ der Elemente der Ergebnismenge nicht, d.h., ist
unabhängig davon, ob die Elemente Tupel oder Objekte sind
„ Ergebnismenge ist eine durch das Selektionsprädikat bestimmte
Untermenge der Ausgangsmenge
Projektion dagegen verändert den Typ der Elemente der Ergebnismenge
„ Kann Sub- oder Supertypen bzw. neue Objekte generieren
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-51
Klassifikation der Algebraoperationen
z
Nach Objektzuständen
–
–
z
Objekterhaltend (Ergebnismenge enthält nur Objekte der Ausgangsmenge)
Objektgenerierend (Ergebnismenge enthält neu erzeugte Objekte)
Nach Objekttypen
–
–
–
Typerhaltend (Objekte der Ergebnismenge behalten ihren Ausgangstyp)
Typändernd (Objekte der Ergebnismenge ändern ihren Ausgangstyp)
Typerzeugend (Objekte der Ergebnismenge haben einen neuen Typ)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-52
Übersicht über Objektalgebraoperationen
z
Objekterhaltend + Typerhaltend
–
–
z
Objekterhaltend + Typändernd
–
–
–
z
Selektion
Vereinigung, Differenz, Durchschnitt
Projektion
Erweiterung
Element
Objekterhaltend + Typerzeugend
–
Extraktion
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-53
Objektalgebra - Prädikate und Ausdrücke
z
(x in C): C ist eine Klasse und x ist ein Objekt aus EXTENT(C)
z
f1, ..., fn sind in TYPE(C) definierte Funktionen
z
pred(x): logische Formel (Atome verknüpf durch ¬, ∧, ∨)
– Atom: expri(x) θ exprj(x) mit θ als arithmetische Verknüpfung oder
Mengenvergleich, je nachdem, ob expri(x) bzw. exprj(x) ein- oder mehrwertig
ist
– expri(x) ist entweder eine Konstante (ck), eine in TYPE(C) definierte Funktion (fk)
oder ein Mengenausdruck (C) der Form:
„ Klasse C,
„ mengenwertige Funktion oder
„ Objektalgebraausdruck basierend auf Selektion, Projektion oder
Erweiterung
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-54
Operationen der Objektalgebra (1)
z
Selektion: E = SELECT [pred(x)] (x IN C)
–
–
–
–
z
Extent(E) ={x ∈ Extent(C) | pred(x)} ⊆ Extent(C)
Type(E) = Type(C)
Selektion liefert immer eine Subklasse der Ausgangsklasse
Beispiel: Alle Mitarbeiter, deren Gehalt grösser als 5000 ist
"Untermenge"
Vereinigung: E = C1 UNION C2
–
–
–
–
Extent(E) =Extent(C1) ∪ Extent(C2)
"Obermenge"
Type(E) = Type(C1) = Type(C2)
Vereinigung liefert immer eine Superklasse der Ausgangsklassen
Beispiel: Alle wissenschaftlichen Mitarbeiter und Hilfswissenschaftler
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-55
Operationen der Objektalgebra (2)
z
Differenz: E = C1 DIFFERENCE C2
–
–
–
–
z
Extent(E) =Extent(C1) \ Extent(C2)
"Untermenge"
Type(E) = Type(C1) = Type(C2)
Differenz liefert immer eine Subklasse der Ausgangsklasse C1
Beispiel: Alle Mitarbeiter, die keine Hilfswissenschaftler sind
Durchschnitt: E = C1 INTERSECT C2
–
–
–
–
Extent(E) =Extent(C1) ∩ Extent(C2)
"Untermenge"
Type(E) = Type(C1) = Type(C2)
Durchschnitt liefert immer eine Subklasse der Ausgangsklassen
Beispiel: Alle Studenten, die auch gleichzeitig Hilfswissenschaftler sind
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-56
Operationen der Objektalgebra (3)
z
Projektion: E = PROJECT [f1(x), ..., fn(x)] (x IN C)
–
–
–
–
z
Extent(E) = Extent(C)
Type(E) ≥ Type(C)
"Supertyp"
Projektion liefert immer eine Superklasse der Ausgangsklasse
Beispiel: Alle ehrenamtlichen Mitarbeiter (haben kein Gehalt)
Erweiterung: E = EXTEND [f:=expr(x)] (x IN C)
–
–
–
–
Extent(E) = Extent(C)
Type(E) ≤ Type(C)
"Subtyp"
Erweiterung liefert immer eine Subklasse der Ausgangsklasse
Beispiel: Alle Projekt-Mitarbeiter (gehören Projekten an)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-57
Operationen der Objektalgebra (4)
z
Herauspicken des Elements einer einelementigen Menge
–
z
ELEMENT ({x}) = x
Extraktion: E = EXTRACT [f1(x), ..., fn(x)] (x IN C)
–
–
Für jedes Objekt x in der Klasse C werden bestimmte Eigenschaften extrahiert
Erzeugt Menge von Tupeln aus einer Menge von Objekten
Nummer
Nummer
EXTRACT [Nummer, Name] (Kunde)
Kunde
Name
Name
Telefon
...
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-58
Generische Änderungsoperationen (1)
z
Objekterzeugung
–
–
–
z
Typänderung eines Objektes
–
–
z
CREATE [T] (x)
Erzeugt ein Objekt vom Typ T und weist dieses der Objektvariable x zu
Objekt x erhält eindeutige OID
Hinzufügen eines neues Typs: GAIN [T] (x)
Entfernen eines Typs:
LOSE [T] (x)
Objektzertörung
–
DELETE (x)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-59
Generische Änderungsoperationen (2)
z
Objektänderung
–
–
z
UPDATE [SET f:=v] (C)
Belegt f mit dem Wert v
Änderung der Extension einer Klasse C
–
–
–
Objekt erzeugen und einfügen:
Hinzufügen eines Objektes x:
Löschen eines Objektes x:
INSERT [f1:=v1, ..., fn:=vn] (C)
ADD [x] (C)
REMOVE [x] (C)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-60
Erweiterung des Basisobjektmodells um neue
Typkonstruktoren
BOR=BO
TOR =TO ∪ {ROW}
ROR=RO ∪ {ai → ROW(b1, ..., bn),
bi → B,
bi → OBJECT(a1, ..., an)}
SET
OBJECT
Basisdatentyp
ROW
Objekte mit tupelwertigen Attributen
ROW hier im Sinne von STRUCT/RECORD
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-61
Zusammenführung der Datenmodelle
Verwendung aller Konstrukte relationaler und objektorientierter Datenmodelle
Problem: Sind alle Verbindungen sinnvoll? Welche sind redundant?
SET
MULTISET
OBJECT
ROW
REF
LIST
TABLE
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
Basisdatentyp
2-62
"Puristisches" objektrelationales Datenmodell
z
Minimale Menge von relationalen und objektorientierten Konzepten
–
–
Verknüpfung Basisobjektmodell - Geschachteltes Relationenmodell
Verknüpfung Objektalgebra - Geschachteltes Relationenalgebra
SET
OBJECT
ROW
Basisdatentyp
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-63
Spezialisierung / Generalisierung
z
Basiskonzepte von Objektmodellen
–
–
z
Spezialisierung von Klassen - Bildung von Subklassen
„ Subklasse (spezielle Klasse) enthält im Vergleich zur (spezialisierten)
Superklasse zusätzliche Schnittstellenfunktionen und/oder strengere
Zugehörigkeitsbedingungen
Generalisierung von Klassen - Bildung von Superklassen
„ Superklasse (allgemeine Klasse) enthält im Vergleich zur
(verallgemeinerten) Subklasse nur eine Untermenge der
Schnittstellenfunktionen und/oder schwächere
Zugehörigkeitsbedingungen
Implementierungsmodelle (auch SQL:1999) bieten nur Spezialisierung an
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-64
Typspezialisierung - Subtypbildung
z
Typ T' ist spezieller als Typ T, (T' ≤ T), wenn Fkt(T) ⊆ Fkt(T') gilt
Für numerische Typen gilt: T' ≤ T
:⇔ dom(T') ⊆ dom(T)
ROW(A1, ..., An) ≤ ROW(B1, ..., Bm) :⇔ n ≥ m ∧ ∀i=1, ..., m TYPE(Ai) ≤ TYPE(Bi)
SET(A) ≤ SET(B)
:⇔ TYPE(A) ≤ TYPE(B)
MULTISET(A) ≤ MULTISET(B)
:⇔ TYPE(A) ≤ TYPE(B)
LIST(A) ≤ LIST(B)
:⇔ TYPE(A) ≤ TYPE(B)
ARRAY[n](A) ≤ ARRAY[m](B)
:⇔ n ≥ m ∧ TYPE(A) ≤ TYPE(B)
Allgemein gilt: SET(A) ≤ MULTISET(A)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-65
Typspezialisierung - Beispiele
1.
INTEGER ≤ REAL
2.
ROW(INTEGER, INTEGER) ≤ ROW(INTEGER, REAL)
3.
ROW(INTEGER, REAL, CHAR(1)) ≤ ROW(INTEGER, REAL)
4.
SET(INTEGER) ≤ SET(REAL)
5.
MULTISET(CHAR(20)) ≤ MULTISET(CHAR(10))
6.
ARRAY[200](INTEGER) ≤ ARRAY[100](INTEGER)
7.
ARRAY[200](INTEGER) ≤ ARRAY[200](REAL)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-66
Spezialisierung von Funktionen
z
Oft auch als Redefinition oder Überschreiben (Overriding) bekannt
z
Typsichere (kontravariante) Spezialisierung garantiert Substituierbarkeit
–
Spezielle Funktion überall anstelle der allgemeineren Funktion verwendbar
Funktion r1 f(p1, ..., pn) ist spezieller als Funktion r2 f(q1, ..., qn) :⇔
1) ∀i=1, ..., n qi ≤ pi (Parametertypen der spezielleren Funktion sind Supertypen der
korrespondierenden Parametertypen der allgemeineren Funktion) und
2) r1 ≤ r2 (Rückgabetyp der spezielleren Funktion ist ein Subtyp des Rückgabetyps
der allgemeineren Funktion)
z
Beispiele:
INTEGER Fläche(REAL, REAL) ≤ REAL Fläche(REAL, REAL)
REAL Fläche(REAL, REAL) ≤ REAL Fläche(INTEGER, REAL)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-67
Extensionale Spezialisierung - Untermengenbildung
z
Extension einer Klasse
–
Menge der Objekte, die direkt oder indirekt einer Klasse zugeordnet sind
z
Regel: EXTENT(C') ⊆ EXTENT(C), wenn C' Subklasse von C ist
z
Untermengenbildung durch
–
–
z
Verschärfung existierender Zugehörigkeitsbedingungen
Formulierung neuer Zugehörigkeitsbedingungen
In Implementierungsmodellen
–
–
Zugehörigkeit zu einer Extension durch Instanziierung
Zugehörigkeit zu mehreren Extensionen und Objektmigration nicht erlaubt
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-68
Flache vs. Tiefe Extensionen
z
Flache Extension einer Klasse C
–
–
z
Menge der Objekte von C, die nicht in
einer der Subklassen von C enthalten
sind
Objekte der flachen Extension heissen
Instanzen
EXTENT(Personen)
PersonenInstanzen
(Tiefe) Extension einer Klasse
–
–
Menge der Objekte, die direkt oder
indirekt dieser Klasse zugeordnet sind
Objekte der tiefen Extension heissen
Mitglieder
PersonenMitglied
MitarbeiterInstanz
EXTENT(Mitarbeiter)
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-69
Eigenschaften der extensionalen Spezialisierung
z
Sei C eine zu spezialisierende (Super-)Klasse
–
Totalität
„ Total: Flache Extension von C ist immer leer
("abstrakte Klasse")
„ Nicht-total: Flache Extension von C kann
Objekte aufnehmen
–
Exklusivität
„ Exklusiv: Tiefe Extensionen der direkten
Subklassen von C sind immer paarweise
disjunkt
„ Nicht-exklusiv: Tiefe Extensionen der direkten
Subklassen von C können sich überlappen, d.h.
sie können gemeinsame Objekte besitzen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
Totale extensionale
Spezialisierung
Exklusive extensionale
Spezialisierung
Extensionale
Partitionierung
2-70
Zuweisungssemantik, Wert, Referenz
z
z
Eine Zuweisung von a nach b mit
–
Kopiersemantik kopiert den Wert der Instanz a nach b
–
Referenzsemantik kopiert die Referenz der Instanz von a nach b
Festlegung Wert/Referenz: Sei a Instanz vom Typ T (a:T), dann ist für
– Basisdatentyp: val(a) durch System gegebene Konstante
– Objekttyp:
ref(a) durch System vergeben ("OID")
OID
– konstruierten Typ:
„ Menge:
Elementtyp atomar konkret:
val(a) = {val(e1), val(e2),...}
Elementtyp atomar abstrakt:
val(a) = {ref(e1), ref(e2),...}
„
Tupel:
Komponententyp atomar konkret (c1) bzw. abstrakt (c2):
val(a) = <val(c1), ref(c2), ...>
„
allgemein: wiederholte Anwendung obiger einfacher Regeln
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-71
Gleichheit von Objekten
z
OID-Konzept erlaubt Unterscheidung mehrerer Typen von
Objektgleichheit
z
Zwei durch Referenzen identifizierte Objekte a1 und a2 sind
–
–
–
z
identisch,
ref(a1) = ref(a2)
identisch wenn gilt:
shallow-equal,
val(a1) = val(a2)
equal wenn gilt:
deep-equal,
equal wenn sie in den Werten der Attribute übereinstimmen, die keine
Referenzattribute sind, und darüber hinaus dies auch paarweise für die durch
Referenzattribute referenzierten Objekte über alle Rekursionsstufen gilt.
Folgende Regeln gelten immer:
–
–
Zwei identische Objekte sind auch shallow-equal
Zwei shallow-equal Objekte sind auch deep-equal
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-72
Graphische Illustration der Gleichheitsarten
R1
R2
R3
R4
R5
(Person)
Name = 'Meier'
Alter = 23
(Person)
Name = 'Meier'
Alter = 23
(Person)
Name = 'Meier'
Alter = 23
(Person)
Name = 'Meier'
Alter = 19
(Auto)
Typ = 'VW'
Modell = 89
(Auto)
Typ = 'VW'
Modell = 89
Beziehungen zw. Referenzvariablen R1 - R5:
I (identisch); S (shallow-equal); D (deep-equal)
R1
R2 R3 R4
R5
R1
I
I
D
D
≠
R2
I
I
D
D
≠
R3
D
D
I
S
≠
R4
D
D
S
I
≠
R5
≠
≠
≠
≠
I
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-73
Zusammenfassung - Grundkonzepte für ORDBMS
z
Objektidentität und Referenzen
–
–
–
z
Objekte besitzen einen eindeutigen Objektidentifikator (OID)
„ OID ist unabhängig vom aktuellen Objektwert
Objektreferenzen sind OIDs
Identische Objekte haben die gleiche OID; gleiche Objekte denselben
Objektwert
Komplexe Strukturen (Datentypen)
–
–
Bildung durch geschachtelte Anwendung von Typkonstruktoren
„ Tupel
„ Mengen, Multimengen, Listen, Arrays
„ Referenzen
Geschachtelte, navigierende Anfragen mittels Pfadausdrücken
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-74
Grundkonzepte für ORDBMS (Forts.)
z
Kapselung
–
–
z
Typen versus Klassen (Objekttabellen)
–
–
z
Trennung von Schnittstelle und Implementierung (ADT-Konzept)
Objektzugriff nur über Methoden der Schnittstelle
Typ beschreibt Struktur einer Menge von Objekten
Klasse bietet Extension (Container) für Objekte eines Typs
Typ- und Klassenhierarchien (Objekttabellenhierarchien)
–
–
Subtyp erbt Typ (Attribute und Methoden) eines Supertyps
Superklasse beinhaltet auch alle Instanzen ihrer Subklassen
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-75
Grundkonzepte für ORDBMS (Forts.)
z
Überladen und spätes Binden
–
–
z
Redefinition (Overriding) von Methoden in Subtypen
Name der Methode bleibt gleich, der Effekt ist jedoch objektabhängig
„ Bindung zur Implementierung erfolgt zur Laufzeit
Erweiterbarkeit
–
–
Benutzerdefinierte Typen können in das System eingebracht werden
Vordefinierte Basistypen und benutzerdefinierte Typen gleich behandelt
„ Verwenden in deklarativen Anfragen
„ Anlegen von Indexstrukturen
„ Einbeziehung in die Anfrageoptimierung
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-76
Attribute: Typen, Bezeichnungen und Werte
Attributtyp
Attributbezeichnung Attributwert
Strukturierungstyp
strukturiert
Tupeltyp
tupelwertig
ROW(W1, ..., WN)
Objekttyp
objektwertig
OBJECT(W1, ..., WN)
Kollektionstyp
kollektionswertig
Mengentyp
mengenwertig
SET(W)
Multimengentyp
multimengenwertig
MULTISET(W)
Listentyp
listenwertig
LIST(W)
Arraytyp
arraywertig
ARRAY(W)
Tupeltabellentyp
tupeltabellenwertig
MULTISET(ROW(W1, ..., WN))
Objekttabellentyp
objekttabellenwertig SET(OBJECT(W1, ..., WN))
Referenztyp
Referenzattribut
REF
Vorlesung "Objektrelationale, erweiterbare Datenbanken" - WS 2003/2004 (Dr. Can Türker)
2-77
Herunterladen