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