KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten...

36
Karczewski Datenbanken II 1 Objektorientierte Datenbanken Übersicht: • Manifesto zu objektorientierten Datenbanken • Transformation von OO-Komponenten • Object Query Language (OQL) • Object Database Management Group(ODMG)-Standard Literatur: A. Heuer: Objektorientierte Datenbanken – Konzepte, Modelle, Standards und Systeme. Addison-Wesley- Longman, 1997

Transcript of KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten...

Page 1: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 1

Objektorientierte Datenbanken

Übersicht:

• Manifesto zu objektorientierten Datenbanken• Transformation von OO-Komponenten• Object Query Language (OQL)• Object Database Management Group(ODMG)-Standard

Literatur:

A. Heuer: Objektorientierte Datenbanken – Konzepte, Modelle, Standards und Systeme. Addison-Wesley-Longman, 1997

Page 2: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 2

Einführung OODB

Kritik an relationalem Ansatz:

1. Attribute einer Relation müssen stets atomar sein: Komplexe Datentypen wie Arrays, Records sind nicht erlaubt.

2. Jede naheliegende Struktur muss kompliziert in verschiedene, flache Tabellen aufgeteilt werden; zusammenhängende Inhalte sind über mehrere Tabellen verteilt.

Page 3: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 3

Einführung OODB

Kritik an relationalem Ansatz (Beispiel zu 2.):Relation Buch (nicht-normalisiert)

Welche Normalform ist verletzt und warum?

Page 4: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 4

Einführung OODB

Kritik an relationalem Ansatz (Beispiel zu 2.):Relation Buch (normalisiert)

Page 5: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 5

Einführung OODB

Kritik an relationalem Ansatz (Beispiel zu 2.):Abfrage „Alle Bücher zusammen mit allen Autoren“

Technisch notwendige Verknüpfung über Schlüssel-Fremdschlüssel-Beziehung.

Wünschenswert wäre:

Page 6: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 6

Einführung OODB

Kritik an relationalem Ansatz (Fortsetzung):3. Resultat einer Abfrage ist immer eine flache Relation. Jede

komplexe Struktur geht bei einer Abfrage verloren:

4. Operationen sind nicht gebunden an Relationen

Page 7: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 7

Manifesto zu OODBMS

Object-Oriented Database System Manifesto definiert drei Gruppen von Kriterien:

• KO-Kriterien (Mandatory): alle OODBMS müssen diese Eigenschaften besitzen

• Optionale Kriterien (Optional) als Erweiterungen

• Offene Kriterien (open), die verschiedene Alternativen von Charakteristika diskutieren

Page 8: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 8

Object-Orientation in Databases

Eight rules of object orientation:

1. Complex objects2. Object identity3. Encapsulation of data4. Types and Classes5. Inheritance6. Polymorphism7. Completeness8. Extensibility

Five rules of databases:

1. Persistence2. Large databases3. Multi user operation4. Recovery5. Ad hoc query

The importants of these rules will explained with the next slides.

Page 9: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 9

Manifesto zu OODBMS

Wichtige Aspekte:

• Konstruktoren sollen ermöglichen mit benutzerdefinierten Datentypen beliebiger Komplexität (z.B. Tupel, Menge, Liste, Reihe.

• Die Konstruktoren müssen orthogonal sein, also miteinander kombinierbar (z.B. Liste von Mengen)

Page 10: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 10

Manifesto zu OODBMS

Wichtige Aspekte:

• Der Objektidentifikator ist ein unabhängig von einem Primärschlüssel existierendes Identifikationsmerkmal, das jedes Objekt ohne Aktivität des Benutzers besitzt (vergleichbar einer Adresse, auf die referenziert werden kann).

• Beispiel: Zwei Kunden mit Namen Meyer existieren im System. Sind diese identisch? Im relationalen System muss hierfür z.B. eine Kundennummer eingeführt werden. Im OODMBS kann man dies am Objektidentifikator erkennen.

Page 11: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 11

Manifesto zu OODBMS

Wichtige Aspekte:

• Bekannt aus der OO-Programmierung: Attribute von Objekten dürfen nur über definierte Methoden manipuliert werden. Attribute sollten immer private definiert sein, um die Kapselung herzustellen.

• Widerspruch: Ein universelles Ad-Hoc-Abfragesystem (vergleichbar mit SQL) soll gerade unabhängig von einer Kapselung einfachen Zugriff auf alle Objekte der Datenbank ermöglichen.

Page 12: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 12

Manifesto zu OODBMS

Wichtige Aspekte:

• Typen sind eher statisch (zur Übersetzungszeit definiert, C++)

• Klassen sind dynamisch (zur Laufzeit aktiviert, SMALLTALK)

• Beispiel: Bereits erzeugtes Objekt vom Typ Person soll in einem abgeleiteten Objekt Angestellter erweitert werden. Im typbasierten System nicht möglich

• In der Praxis ist dieses Problem kaum relevant!

Page 13: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 13

Manifesto zu OODBMS

Wichtige Aspekte:

• Klassen (oder Typen) können in einer Vererbungshierarchie angeordnet sein, z.B. Geschäftspartner soll spezialisiert werden zu Kunden, Lieferanten oder Spediteuren. Gemeinsame Attribute werden in der Klasse Geschäftspartner definiert. Anzahl der Operationen werden reduziert.

Page 14: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 14

Manifesto zu OODBMS

Wichtige Aspekte:

• Spätes Binden ermöglicht Reduzierung von Code, da erst zur Laufzeit bestimmt wird, welcher Code ausgeführt wird. Beispiel:ohne spätes Binden mit spätem Binden

Zur Laufzeit wird erkannt, welche Methode print angewendet werden muss, Code wird drastisch reduziert.

Page 15: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 15

Manifesto zu OODBMS

Wichtige Aspekte:

• Forderung stammt aus der Theorie der Programmiersprachen. Algorithmen jeder Art müssen mit der Sprache ausgedrückt werden können. Alle klassischen Programmiersprachen erfüllen diese Forderung, jedoch SQL nicht!

Page 16: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 16

Manifesto zu OODBMS

Wichtige Aspekte:

• Menge von vordefinierten System-Datentypen und die vom Benutzer definierten Datentypen sollen syntaktisch und semantisch nicht unterschiedlich behandelt werden. Wenn also ein selbst-definierter Typ eingesetzt wird, müssen sie genauso behandelt werden, wie die System-Datentypen.

Page 17: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 17

Manifesto zu OODBMS

Wichtige Aspekte:

• Dauerhaftigkeit (Persistenz) ist eine Grundvoraussetzung für alle Datenbanksysteme. Der Benutzer sollte grundsätzlich davon ausgehen, dass die veränderten Daten persistent gespeichert werden, ohne dies stets explizit angeben zu müssen.

Page 18: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 18

Manifesto zu OODBMS

Wichtige Aspekte:

• Die bekannten Forderungen, die durch die ANSI-/SPARC-Architektur für relationale Datenbanksysteme vorgegeben sind, sollen auch für OODBMS gelten. Die Trennung der Ebenen, die effiziente Ablage der Daten, die Optimierung sollen vom System aus erfolgen.

Page 19: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 19

Manifesto zu OODBMS

Wichtige Aspekte:

• Synchronisation des parallelen Zugriffs auf die Daten erfolgt nach den bekannten Prinzipien, die bereits bei relationalen Systemen gelten.

Wichtige Aspekte:

• Die Datensicherheit soll ebenso komfortabel gewährleistet sein wie bei relationalen Systemen.

Page 20: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 20

Manifesto zu OODBMS

Wichtige Aspekte:

• Ein interkatives Abfragesystem sollte verfügbar sein, das ähnlich komfortabel gestaltet sein sollte wie SQL bei relationalen Systemen:• deklarativ (Was statt Wie)• Effizient (mit internen Systemoptimierungen)

Page 21: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 21

Transformation von OO-Komponenten

Ziel:

• Überführung jedes semantischen Datenmodells in eine äquivalente objektorientierte Datenbankstruktur

• Schritte: ER-Modell UML-Modell OODBMS-Struktur

• Abbildung erfolgt designunabhängig, also nicht unbedingt optimiert, sondern allgemeingültig

Page 22: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 22

Transformation von OO-Komponenten

Entity-Typen:

• Entity-Typen entsprechen bei der UML Klassen• Beispiel:

Attribute

Methoden

KonstruktorDestruktor

UML-Klasse

DDL von Fast Objects

Page 23: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 23

Transformation von OO-Komponenten

Assoziationen:

• In der relationalen Datenbank wird bei einfachen Assoziationen (1:1-, 1:n-Beziehungen) für jede der beteiligten Entity-Typen eine Tabelle angelegt. Die Beziehung erfolgt dann über die Schlüssel-/Fremdschlüssel-Beziehung

• Bei m:n-Beziehungen ist im relationalen Modell eine dritte Tabelle notwendig.

• In der OO-Datenbank ist in jedem Fall (1:1, 1:n, m:n) nur die Definition von zwei Klassen notwendig.

Page 24: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 24

Transformation von OO-Komponenten

Assoziationen (Beispiel):

Menge von Referenzen auf Märkte (*)Referenz auf Veranstalter (1)

Page 25: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 25

Transformation von OO-Komponenten

Assoziationen (Fortsetzung):

• Frage: Wie sieht die Lösung bei m:n- bzw. 1:1-Beziehung aus?

• Braucht man den Zugriff auf die Objekte immer nur aus einer Richtung, kann man auf eine der Referenzen verzichten

• Assoziation mit Assoziationsklassen müssen auf andere Weise realisiert werden (vergleichbar der Realisierung im relationalen Modell mit 3 Tabellen)

Page 26: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 26

Transformation von OO-Komponenten

Assoziationen mit Assoziationsklasse (Beispiel):

Menge von Referenzen auf Angebote (*)Menge von Referenzen auf Angebote (*)

Referenz auf Produkt (1)Referenz auf Markt (1)

Page 27: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 27

Transformation von OO-Komponenten

Assoziationen mit Assoziationsklasse (Anmerkungen):

• Wie zuvor, können Referenzen weggelassen werden, wenn eine Navigationsrichtung nicht notwendig ist.

• Falls Komplexitätsgrad niedrig ist, kann die dritte Klasse weggelassen werden und die Attribute der Assoziation einer der beiden Klassen (mit der niedrigen Komplexität) zugeordnet werden (vgl. Anwendung bei relationalen Datenbanken).

Page 28: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 28

Transformation von OO-Komponenten

Rekursive Assoziation:

• wird analog umgesetzt wie die einfache Assoziation durch eine Klasse mit zwei Referenzmengen für die rekursive Beziehung (für jede Richtung eine) bei m:n-Beziehungen

• Assoziationsklasse wird notwendig, falls bei komplexen Beziehungen Attribute in der Beziehung vorkommen

Page 29: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 29

Transformation von OO-Komponenten

Rekursive Assoziation (Beispiel ohne Assoziationsklasse):

Die beiden Referenzmengen sind in einer Klasse, weil Rekursion vorhanden ist

Page 30: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 30

Transformation von OO-Komponenten

Rekursive Assoziation (Beispiel mit Assoziationsklasse):

Referenzmengen aus Produkt heraus

Einfache Referenzen von BestehtAus zu Produkt

Page 31: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 31

Transformation von OO-Komponenten

Mehrstellige Assoziation:

• Realisierungsstrategie hängt von der Komplexität der Beziehung ab.

• Bei höchster Komplexität ist die mehrstellige Assoziation wie die Assoziationsklasse bei zweistelliger Assoziation zu betrachten.

• Einsparung von Klassen ist möglich bei niedriger Komplexität

Page 32: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 32

Transformation von OO-Komponenten

Mehrstellige Assoziation (Beispiel):

Page 33: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 33

Transformation von OO-Komponenten

Spezialisierung:

• Erinnerung aus eERM:• Vollständig: Jeder Generalist ist einem Spezialisten zugeordnet.

-> Generalist wird als abstrakte Klasse definiert.• Nicht vollständig: Es gibt Objekte des Generalisten, die keinem

Spezialisten zugeordnet sind. -> Generalist ist keine abstrakte Klasse

• Disjunkt: keine besondere Maßnahme nötig• Überlappend: -> Mehfachvererbung wird in einer neu zu

erzeugenden Klasse realisiert. Nicht jedes OODBMS lässt dies zu.

Page 34: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 34

Transformation von OO-Komponenten

Spezialisierung (Beispiel):

Page 35: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 35

Anzeigen einer Kollektion

Alle Produkte der Keramik-Datenbank:

• Vergleichbar mit dem Cursor von relationalen Datenbanken• Get liefert nächstes relevantes Element• Unget gibt benutztes Element wieder frei

Page 36: KarczewskiDatenbanken II1 Objektorientierte Datenbanken Übersicht: Manifesto zu objektorientierten Datenbanken Transformation von OO-Komponenten Object.

Karczewski Datenbanken II 36

Änderung mit Iterator

Änderung mit Iterator: