1 Teil I Datenmodelle Kapitel 8: Objektrelationale Modelle.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Imperative Programmierung
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Abschluss Gegeben Menge F von funktionalen Abhängigkeiten.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Objekt – Relationales – Modell Tomasz Makowski IN
Finale Semantik und beobachtbares Verhalten
Kapitel 4 Datenstrukturen
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg1/7 Datenbanken werden als Anhäufung von Werten eines Wertebereiches aufgefasst und Datenbankabfragen.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Christian Schindelhauer
Normalformen Normalisieren Schlüssel
6 Normalformen Normalisieren Schlüssel
DVG Klassen und Objekte
Abbildungsverfahren (1)
Polymorphe Operatoren: Bewertung
Redundanz und Anomalien (1)
objekt-relationale Datenbanken
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
20:00.
Die Grundterminologie
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Polymorphe Typen (1) Erweiterung des relationalen Datenmodells: Domänen: Wie im herkömmlichen Relationenmodell sind die Mengen D 1,...,D m die (atomaren)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
§3 Allgemeine lineare Gleichungssysteme
Polynome und schnelle Fourier-Transformation
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Relationales Datenmodell ist beherrschend: –Riesige Datenbestände und damit hohe Investitionen. –Die große Mehrzahl der Anwendungen arbeitet mit weitgehend.
Voll funktionale Abhängigkeiten (4)
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Benutzerdefinierte Datentypen (1)
1 Polymorphe Konsistenzbedingungen (1) Polymorphe Konsistenzbedingungen legen fest, welche Arten von Zustandsbeschränkungen nach einer Konkretisierung.
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
1 Differenzierte Verbindungsoperationen (1) Beobachtung: Einfach zu formulierende Verbindungen wie ein Natural Join sind nicht als solche dokumentiert.
Tupelkalkül: Notation (1)
Objekte und Literale ODMG-Objektmodell kennt zwei Arten von Datenelementen: Literale: Identität ist ausschließlich durch Wert gegeben. Nur maximal eine.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Vordefinierte Datentypen (1)
Abbildung: n Schritt 1: Alle Relationen außer Verträglichkeit sind Hauptobjekt- Relationen. Im folgenden also nur noch Verträglichkeit zu betrachten. n.
SQL-Prozeduren Charakteristika: Kapselung von SQL-Anweisungen in Prozeduren, die wiederholt aufgerufen werden können. Dazu Verbergen parametrisierter SQL-
Unnest-Operator: Beispiel  GeoFläche (NF2GeoKörper)
1 Relationale Datenbasisschemata (1) Substitution der Variablen zu Tupel- und Relationstypen. Für das Beispiel: Typ tupel EineArtikelArt ( ANr:Zeichen(8),
1 Anwendung Geometrische Objekte (1) Relationales Schema: domain GeoName: Zeichen(20); domain FID, KID, PID: Zeichen(8); domain X, Y, Z: Gleitkommazahl;
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
 Präsentation transkript:

1 Teil I Datenmodelle Kapitel 8: Objektrelationale Modelle

2 Relationales Datenmodell ist beherrschend: Riesige Datenbestände und damit hohe Investitionen. Die große Mehrzahl der Anwendungen arbeitet mit weitgehend strukturierten Daten. Das relationale Modell ist einfach in der Handhabung durch Nicht-Experten. Das relationale Modell ist wohlfundiert, die Architektur und Implementierung der Systeme folgt allgemein akzeptierten Regeln und ist ausgereift. Mit SQL besteht ein Sprachstandard mit Vorbildfunktion für viele andere Datenmodelle. Überwinden der Schwächen durch Anbinden anderer Datenmodelle an Tupelkomponenten. Einbetten entsprechender Sprachkonstrukte in relationale Anfragen. Motivation

3 Kapitel 8.1: Typen und Prozeduren in SQL99

4 Polymorphe Typen User-defined types (UDT): Vereinbarung der Struktur. Polymorphe Typen tupel ::= [sel:Typ,..., sel:Typ] relation ::= {tupel} Typ : Vereinigungsmenge aus atomaren und konstruierten Typen. Es lassen sich beliebig kompliziert verschachtelte Tupelstrukturen vereinbaren. User-defined functions (UDF): Monomorphe Operatoren. Im Allgemeinen: Getrennte Vereinbarung der Operatoren. Bindung an Typ nur lose, indem der Typ als nicht besonders ausgezeichneter Parametertyp vorkommt.

5 UDT (1) Stufenweiser Aufbau möglich. Sei create type Punkt as (x real, y real, z real); Kopiersemantik (embedding): create type Kante as (P1 Punkt, P2 Punkt ); Referenzsemantik (linking): create type Kante as (P1 ref (Punkt), P2 ref (Punkt) ); ref-Attribute nehmen Objektidentifikatoren auf. Es erfolgt automatische Dereferenzierung.

6 UDT (2) Kopiersemantik Referenzsemantik P1: x: 4.0 y: 0.0 z: 0.0 P2: x: 2.0 y: 0.0 z: 0.0 P1: x: 2.0 y: 0.0 z: 0.0 P2: x: 2.0 y: 0.0 z: 1.0 x: 4.0 y: 0.0 z: 0.0 x: 2.0 y: 0.0 z: 0.0 x: 2.0 y: 0.0 z:

7 Vereinbarung von Relationen Relationenvereinbarung statt über Tupelkonstruktion auch über einen bereits über create type vereinbarten tupelorientierten Datentyp. create table PunktTabelle of Punkt; create table KantenTabelle of Kante; Zur Erinnerung: Ist t tupelorientierter Datentyp, so besitzt die Relation den impliziten Typ set(t).

8 Geschachtelte Tupel Kopiersemantik führt auf geschachtelte Tupel, sofern die Tupelkomponenten selbst wieder tupelartig sind. Beispiel: create type Punkt as (x real, y real, z real); create type Kante as (P1 Punkt, P2 Punkt ); create table PunktTabelle of Punkt; create table KantenTabelle of Kante; P1 Punkt (x real, y real, z real), P2 Punkt (x real, y real, z real)

9 Anfrage an die rekursive Sicht Rekursionschritt Basisschritt: Initialisierung der zu konstruierenden Relation Definition der rekursiv zu konstruierenden Relation (Sicht) Beispiel: Flüsse, die direkt oder indirekt in die Nordsee münden. create table MündetIn as (primary key (Fluss), Fluss char(25), FlussOderMeer char(25) ); Rekursive Anfrage: with recursive MündetIndirektIn (Fluss, FlussOderMeer) as (selectFluss, FlussOderMeer fromMündetIn whereFlussOderMeer = 'Nordsee' union selectMündetIn.Fluss, MündetIn.FlussOderMeer fromMündetIn, MündetIndirektIn whereMündetIn.FlussOderMeer = MündetIndirektIn.Fluss ) selectFluss fromMündetIndirektIn; UDT: Rekursive Anfragen Bindung an die Relation MündetIn stellt wegen deren Endlichkeit das Abbrechen des Rekursionsverfahrens nach endlich vielen Iterationsschritten sicher.

10 UDF einfach: SQL-Prozeduren Charakteristika: Kapselung von SQL-Anweisungen in Prozeduren, die wiederholt aufgerufen werden können. Dazu Verbergen parametrisierter SQL-Anweisungen hinter kurzen Benennungen. Beispiele: create procedure ErmittleArtikelName(in artnr char(8), out aname char(25)) select AName into aname from ArtikelArt where ANr = artnr; Aufruf: z.B. call ErmittleArtikelName(A-08, derName) create procedure ÄndereArtikelName(in artnr char(8), in neuerAName char(25)) update ArtikelArt set AName = neuerAName where ANr = artnr; Aufruf: z.B. call ÄndereArtikelName(A-08, VentileSpezial) inEingabeparameter outAusgabeparameter inoutBeides relation ArtikelArt(ANr, AName, Menge, Lieferant, Gewicht)

11 UDF einfach: SQL-Funktionen Charakteristika: Wie SQL-Prozeduren, nur mit einem einzigen Rückgabeparameter (dem Funktionswert). Alle anderen Parameter sind Eingabeparameter. Kann in jedem Ausdruck (z.B. select-Anfrage) verwendet werden Beispiel: create function grundfläche( loartnr char(8) ) returns integer returnselect Länge Breite from LagerortArt where LoaNr = loartnr; Aufruf: z.B. selectgrundfläche(LoaNr), avg(MaxGewicht) fromLagerortArt whereHöhe > 5 group bygrundfläche(LoaNr) order bygrundfläche(LoaNr); relation LagerortArt(LoaNr, Länge, Breite, Höhe, MaxGewicht)

12 Kapitel 8.2: Objekte in SQL99

13 Benutzerdefinierte Datentypen (1) Spezialfall: Objektdomänen als Zusammenfassung von UDT und UDF: Zustand: Tupelstruktur Verhalten: Zugriffsfunktionen (Methoden) Trennung zwischen Methodensignatur und -implementierung Beispiel: create type Punkt as (x real, y real, z real) method Punkt (x real, y real, z real) returns Punkt, method addition (p Punkt) returns Punkt, method distanz (p Punkt) returns real, method nullDistanz () returns real; Initialisierungsmethode: Aufruf zur Erzeugung neuer Objekte

14 SQL99: Imperative Programmierung Charakteristika: Loslösen vom streng deskriptiven Ansatz aus SQL-92 Ausbau des Prozedurkonzepts zu voller (imperativer) Programmiersprache: declare: (Lokale) Variablendeklarationen begin... end: Anweisungsblöcke if und case: Bedingte Anweisungen while und loop: Schleifen

15 Benutzerdefinierte Datentypen (2) Implementierungen der Methoden: create method Punkt (x real, y real, z real) for Punkt begin set self.x = x; set self.y = y; set self.z = z; return self; end; create method addition (p Punkt) for Punkt return Punkt ( self.x + p.x, self.y + p.y, self.z + p.z ); create method distanz (p Punkt) for Punkt begin declare dx real; declare dy real; declare dz real; set dx = self.x - p.x; set dy = self.y - p.y; set dz = self.z - p.z; return ( sqrt ( dx dx + dy dy + dz dz ) ); end; create method nullDistanz () for Punkt return self.distanz ( Punkt (0.0, 0.0, 0.0) ); selfObjektbezeichner, an den jeweils die Methode zur Laufzeit gebunden wird

16 Erlaubt mengenwertige Ergebnis- Komponente. SQL99-Anfragen (1) In SQL-Ausdrücken können Methoden aus benutzerdefinierten Datentypen sowie globale Funktionen freizügig verwendet werden. Die select-Klausel erlaubt jetzt auch das Auftreten von SQL- Anweisungen zur Berechnung von Ergebnisattributen. Beispiel: Punkte außer Nullpunkt samt ihren Abständen zu allen Punkten außer Nullpunkt, sofern Abstand größer als 5 ist: selectP1.x, P1.y, P1.z, selectP2.distanz(P1) fromPunktTabelle P2 whereP2.distanz(P1) > 5.0 andP2.nullDistanz() <> 0.0 fromPunktTabelle P1 whereP1.nullDistanz() <> 0.0;

17 SQL-99 gestattet Typhierarchien mit Einfachvererbung. Vererbt werden Attribute und Methodenimplementierungen. Beispiel: create type GeoKörper as (Bezeichnung char(20), Farbe char(20), Material Materialtyp) method dichte() returns real; create type Zylinder under GeoKörper as (Radius real, Mittelpunkt1 Punkt, Mittelpunkt2 Punkt) method länge() returns real, method volumen() returns real, method masse() returns real, method translation(p Punkt) returns Zylinder; Typhierarchie und Vererbung (1)

18 Typhierarchie und Vererbung (2) Vererbung auf Typebene impliziert nicht eine Mengeninklusions-Semantik auf Ausprägungsebene. Daher ist mittels under-Klausel die Mengeninklusions- Semantik eigens anzugeben: create table GeoKörperTabelle of GeoKörper; create table ZylinderTabelle under GeoKörperTabelle of Zylinder Nur so führt das Ablegen eines Tupels in ZylinderTabelle automatisch zum Ablegen entsprechend gekappter Daten in GeoKörperTabelle.

19 Kapitel 8.3: Erweiterbare Datenbanksysteme

20 Aktuelle Entwicklungen Erweiterbare Datenbanksysteme: Spezifische UDT/UDF- Kombinationen in allgemeiner Form als Einschübe: Data Cartridges (Oracle) Data Extenders (IBM DB2) Angebotene Standardlösungen für text: Dokumentrecherche und –verarbeitung spatial: Verarbeitung räumliche Daten xml: XML mit xpath Data Warehouse: Datenwürfel mit cube-Operator. Ergänzung der Anfragesprachen um entsprechende Elemente. Zum Teil Gegenstand der Standardisierung von SQL99. Umsetzung auf Relationen oder native Lösungen auf Basis LOB.

21

22 Kapitel 8.4: Mengenwertige Attribute

23 Arrays Charakteristika: Innerhalb der Tupelkonstruktion eines Datentyps können Attribute mengenwertig mittels eines Arrays sein. Hierzu existiert der Typkonstruktor array[n], wobei n die maximale Anzahl von Elementen angibt. Arrays von Arrays, also mehrdimensionale Arrays, sind nicht erlaubt. Andere Kollektionstypen (set, multiset, list) kommen vermutlich erst im nächsten Standard. Beispiele: create type Fläche as ( Kanten ref(Kante) array[1024] ); create type Vielflächner as ( Flächen Fläche array[512] ); Array von Objektreferenzen Array von Objektliteralen

24 Geschachtelte Relationen Sonderfall: create type Fläche as ( Kanten ref(Kante) array[1024] ); create table GeoKörperTabelle as ( GeoName char(20), Flächen Fläche array[512] ); Array von Objektreferenzen Array von Arrays

25 SQL99-Anfragen (2) Die select-Klausel erlaubt jetzt auch das Auftreten von SQL- Anweisungen zur Berechnung von Ergebnisattributen. Aggregierungen sind jetzt auch über mengenwertigen Attributen definiert. Beispiel: Namen der gespeicherten geometrischen Körper zusammen mit der jeweiligen Zahl ihrer Flächen: create table GeoKörperTabelle as ( GeoName char(20), Flächen Fläche array[512] ); select GeoName, selectcount( ) fromFlächen from GeoKörperTabelle; Ein mengenwertiges Attribut stellt so etwas wie eine vorausberechnete Gruppierung dar, auf die hier eine Aggregierung angewendet wird.

26 Kapitel 8.5: NF 2 -Relationen

27 Polymorphe Typen (1) NF 2 -Relationen als Modell geschachtelter Relationen: Domänen: Wie im herkömmlichen Relationenmodell sind die Mengen D 1,...,D m die (atomaren) Domänen. Zusätzlich ist die Menge C der komplexen Domänen unter Zuhilfenahme der atomaren Domänen D j wie folgt definiert: 1. Basis: Für jede atomare Domäne D j gilt: D j C. Jede atomare Domäne ist also auch eine komplexe Domäne. 2. Potenzmengenbildung: Wenn C 1, C 2,..., C k C, so auch (C 1 × C 2 ×... × C k ) C. Mengenwertige Domänen lassen sich aus bestehenden Domänen unter Ausnutzung des Prinzips der Potenzmengenbildung () zusammensetzen. 3. Abschluss: Genau durch die vorigen Vorschriften ist C vollständig konstruierbar.

28 Polymorphe Typen (2) Relation: Eine n-stellige Relation R ist weiterhin Teilmenge eines kartesischen Produkts von Domänen. R C 1 ×... × C n mit n komplexen Domänen C i C, 1 i n (R (C 1 × C 2 ×... × C n ) ).

29 Anwendung Geometrische Objekte (1) (4.0,1.5,1.0) (2.0,0.0,0.0) z y x

30 Anwendung Geometrische Objekte (2) Beispiel: Modellierung geometrischer Körper: Atomare Domänen. domain GeoName: Zeichen(20); domain FID, KID, PID: Zeichen(8); domain X, Y, Z: Gleitkommazahl; Komplexe Domänen: domain GeoPunkt: (PID × X × Y × Z); domain GeoKante: (KID × GeoPunkt); domain GeoFläche: (FID × GeoKante); relation NF2GeoKörper(GeoName, GeoFläche)

31 Extension für einen Quader: Anwendung Geometrische Objekte (3)

32 Anwendung Geometrische Objekte (4) NF2GeoKörper enthält (hier) lediglich ein Tupel für den Quader Quader77. Dieses Tupel verfügt im Attribut GeoFläche über eine Menge von sechs (Unter-)Tupeln, für jede Fläche des Quaders eine. Ein Flächen-Tupel schachtelt im Attribut GeoKante eine Menge von je vier weiteren Tupeln, die die Kanten der jeweiligen Fläche darstellen. Jede Kante verfügt im Attribut GeoPunkt über eine Menge von zwei Punkten. Redundanzen!

33 Polymorphe Operatoren: Notation (1) Komposition einer Attributfolge: Sei R R n eine n-stellige Relation. Sei X = (X 1,..., X k ) A R eine Attributfolge mit Domänen C(X 1 ), C(X 2 ),..., C(X k ) für X 1, X 2,..., X k. Zu jedem solchen X definieren wir ein neues, dazu korrespondierendes Attribut: X ::= X 1 X 2...X k $ Es besitzt die Domäne: C(X) = C(X 1 ) × C(X 2 ) ×... × C(X k ). Namensgebung: X 1 X 2...X k $ ist spezielle Namensgebung, so gewählt damit sie mit bestehenden Benennungen kollidiert. X ist passend gewählte Kurzschreibweise. Im Beispiel GeoPunkt ::= PID X Y Z$ das zu der Folge (PID, X, Y, Z) korrespondierende Attribut.

34 Polymorphe Operatoren: Notation (2) Dekomposition eines Attributs: Nach dem gleichen Prinzip in umgekehrter Richtung: Gegeben: zusammengesetztes Attribut X ::= X 1 X 2...X k $ mit Domäne: C(X) = C(X 1 ) × C(X 2 ) ×... × C(X k ) Dann ist die Dekomposition in k Attribute X 1,..., X k definiert. Im Beispiel ist die Folge (PID, X, Y, Z) die Dekomposition von GeoPunkt (::= PID X Y Z$).

35 Nest-Operator (1) Charakterisierung: Entstehungsoperation für NF 2 -Relationen als Gruppierungsoperation für Attribute Definition: Sei R R m, X A R mit X = (X 1, X 2,..., X k ), und Y = A R \ {X 1,..., X k }. Sei X ::= X 1 X 2...X k $ A R eine (Attribut-)Benennung. Für jedes Tupel g Y (R) definieren wir ein (m - k + 1)-Tupel wg wie folgt: Y ({wg}) = {g}, und X ({wg}) = { X ({r}) | r R Y ({r}) = {g} }. Dann X (R) := { wg | g Y (R) }.

36 Nest-Operator (2) Veranschaulichung: Nest-Operator entspricht dem Gruppierungsoperator. Jedoch andere Schreibweise: Bei X (R) wird nach den Attributen Y = A R \ { X 1,..., X k } gruppiert, also nach den Attributen, die nicht in X enthalten sind. Für jeweils gleiche Werte in Y werden die jeweiligen Werte von X gesammelt. Diese werden konzentriert in die (neue) Spalte X überführt und geschachtelt dargestellt. Die ursprüngliche Attributfolge X verschwindet aus der Ergebnisrelation.

37 Nest-Operator: Beispiel (1) PID, X, Y, Z (NF2GeoKörper''')

38 Nest-Operator: Beispiel (1) KID, GeoPunkt (NF2GeoKörper'')

39 Nest-Operator: Beispiel (1) FID, GeoKante (NF2GeoKörper')

40 Unnest-Operator (1) Charakterisierung: Zum Nest-Operator inverser Operator: Zerlegung eines Attributs mit komplexer Domäne in mehrere Felder. Definition: Sei R R m, X A R und Y = A R \ {X}. Falls die Domäne von X atomar ist, d.h. einem D j entspricht, so X (R) := R. Andernfalls sei X ::= X 1 X 2... X k $. Für jedes Tupel r R definieren wir dann eine Menge von (m + k - 1)-Tupeln: X ({r}) := { r' | X (r') X (r) Y (r') = Y (r)}. Diese Tupel sind bezüglich X um eine Hierarchiestufe entschachtelt. Vereinigen dieser Tupelmengen ergibt das Ergebnis: X (R) := r R X ({r}).

41 Unnest-Operator (2) Veranschaulichung: Die Unnest-Operation bezüglich X hebt die Schachtelung von X auf. Für jeden Einzelwert des Attributs X wird innerhalb eines (geschachtelten) Tupels ein eigenes Tupel angelegt, dessen andere Attribute mit dem Rest des Originaltupels aufgefüllt werden.

42 Unnest-Operator: Beispiel GeoFläche (NF2GeoKörper)

43 Unnest-Operator: Beispiel GeoKante (NF2GeoKörper')

44 Unnest-Operator: Beispiel GeoPunkt (NF2GeoKörper'')

45 Unnest-Operator (3) Anmerkung: Die letzte Relation entspricht gerade der Relation, die man erhalten würde, wenn die Relationen der ursprünglichen Extension durch Join miteinander kombiniert würden: NF2GeoKörper''' = GeoKörper GeoFläche GeoKante GeoPunkt. Wir haben damit belegt, dass der Informationsgehalt der vier Relationen GeoKörper, GeoFläche, GeoKante und GeoPunkt durch die Relation NF2GeoKörper vollständig abgedeckt ist. Auf NF2-Relationen lässt sich eine erweiterte relationale Algebra definieren.

46 Unnest-Operator (5) Anmerkung: Der Unnest-Operator wird benötigt, um den Zugriff auf Teilkomponenten eines Attributs mit komplexer Domäne zu ermöglichen, wenn (nur) diese Angaben in der Ergebnismenge oder zur Weiterverarbeitung benötigt werden.