Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Teil I Datenmodelle Kapitel 8: Objektrelationale Modelle.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Teil I Datenmodelle Kapitel 8: Objektrelationale Modelle."—  Präsentation transkript:

1 1 Teil I Datenmodelle Kapitel 8: Objektrelationale Modelle

2 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 3 Kapitel 8.1: Typen und Prozeduren in SQL99

4 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 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 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: 1.0 P1: @P2: @

7 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 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 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 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 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 12 Kapitel 8.2: Objekte in SQL99

13 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 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 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 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 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 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 19 Kapitel 8.3: Erweiterbare Datenbanksysteme

20 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 21

22 22 Kapitel 8.4: Mengenwertige Attribute

23 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 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 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 26 Kapitel 8.5: NF 2 -Relationen

27 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 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 29 Anwendung Geometrische Objekte (1) (4.0,1.5,1.0) (2.0,0.0,0.0) z y x

30 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 31 Extension für einen Quader: Anwendung Geometrische Objekte (3)

32 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 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 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 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 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 37 Nest-Operator: Beispiel (1) PID, X, Y, Z (NF2GeoKörper''')

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

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

40 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 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 42 Unnest-Operator: Beispiel GeoFläche (NF2GeoKörper)

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

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

45 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 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.


Herunterladen ppt "1 Teil I Datenmodelle Kapitel 8: Objektrelationale Modelle."

Ähnliche Präsentationen


Google-Anzeigen