Klassen

Werbung
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
Karczewski
Datenbanken II
1
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.
Karczewski
Datenbanken II
2
Einführung OODB
Kritik an relationalem Ansatz (Beispiel zu 2.):
Relation Buch (nicht-normalisiert)
Welche Normalform ist verletzt und warum?
Karczewski
Datenbanken II
3
Einführung OODB
Kritik an relationalem Ansatz (Beispiel zu 2.):
Relation Buch (normalisiert)
Karczewski
Datenbanken II
4
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üsselBeziehung.
Wünschenswert wäre:
Karczewski
Datenbanken II
5
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
Karczewski
Datenbanken II
6
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
Karczewski
Datenbanken II
7
Object-Orientation in Databases
Eight rules of object orientation:
Five rules of databases:
1.
2.
3.
4.
5.
6.
7.
8.
1.
2.
3.
4.
5.
Complex objects
Object identity
Encapsulation of data
Types and Classes
Inheritance
Polymorphism
Completeness
Extensibility
Persistence
Large databases
Multi user operation
Recovery
Ad hoc query
The importants of these rules will explained with the next slides.
Karczewski
Datenbanken II
8
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)
Karczewski
Datenbanken II
9
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.
Karczewski
Datenbanken II
10
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.
Karczewski
Datenbanken II
11
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!
Karczewski
Datenbanken II
12
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.
Karczewski
Datenbanken II
13
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.
Karczewski
Datenbanken II
14
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!
Karczewski
Datenbanken II
15
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 selbstdefinierter Typ eingesetzt wird, müssen sie genauso behandelt
werden, wie die System-Datentypen.
Karczewski
Datenbanken II
16
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.
Karczewski
Datenbanken II
17
Manifesto zu OODBMS
Wichtige Aspekte:
•
Die bekannten Forderungen, die durch die ANSI-/SPARCArchitektur 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.
Karczewski
Datenbanken II
18
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.
Karczewski
Datenbanken II
19
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)
Karczewski
Datenbanken II
20
Transformation von OO-Komponenten
Ziel:
•
Überführung jedes semantischen Datenmodells in eine äquivalente
objektorientierte Datenbankstruktur
•
Schritte: ER-Modell
•
Abbildung erfolgt designunabhängig, also nicht unbedingt optimiert,
sondern allgemeingültig
Karczewski
UML-Modell
Datenbanken II
OODBMS-Struktur
21
Transformation von OO-Komponenten
Entity-Typen:
•
•
Entity-Typen entsprechen bei der UML Klassen
Beispiel:
DDL von
Fast Objects
UML-Klasse
Attribute
Konstruktor
Destruktor
Methoden
Karczewski
Datenbanken II
22
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.
Karczewski
Datenbanken II
23
Transformation von OO-Komponenten
Assoziationen (Beispiel):
Menge von Referenzen auf Märkte (*)
Referenz auf Veranstalter (1)
Karczewski
Datenbanken II
24
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)
Karczewski
Datenbanken II
25
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)
Karczewski
Datenbanken II
26
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).
Karczewski
Datenbanken II
27
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
Karczewski
Datenbanken II
28
Transformation von OO-Komponenten
Rekursive Assoziation (Beispiel ohne Assoziationsklasse):
Die beiden Referenzmengen sind in
einer Klasse, weil Rekursion
vorhanden ist
Karczewski
Datenbanken II
29
Transformation von OO-Komponenten
Rekursive Assoziation (Beispiel mit Assoziationsklasse):
Referenzmengen aus Produkt heraus
Einfache Referenzen von BestehtAus
zu Produkt
Karczewski
Datenbanken II
30
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
Karczewski
Datenbanken II
31
Transformation von OO-Komponenten
Mehrstellige Assoziation (Beispiel):
Karczewski
Datenbanken II
32
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.
Karczewski
Datenbanken II
33
Transformation von OO-Komponenten
Spezialisierung (Beispiel):
Karczewski
Datenbanken II
34
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
Karczewski
Datenbanken II
35
Änderung mit Iterator
Änderung mit Iterator:
Karczewski
Datenbanken II
36
Herunterladen