Objektrelationale Datenbanken

Werbung
Schriftliche Ausarbeitung zum Thema:
Objektrelationale Datenbanken
im Rahmen des Proseminars
„Objektorientierte Datenbanken“,
an der GH-Siegen,
WS 1999/2000
von Tobias Fries, Hery L. Ramanoarisoa, Thouraya Ben Kali, Markus Paltian
Übersicht
1. Motivation des objektrelationalen Datenbankkonzeptes.....................................................3
1.1. Allgemeine Anforderungen an Datenbanksysteme............................................................3
1.2. Nachteile relationaler und objektorientierter Datenbanksysteme.......................................4
1.2.1. Nachteile relationaler Datenbanksysteme................................................................4
1.2.2. Nachteile objektorientierter Datenbanksysteme......................................................6
1.3. Resultierende Anforderungen für objektrelationale Datenbanksysteme............................7
2. Merkmale objektrelationaler Datenbanksysteme.................................................................8
2.1. Erweiterung relationaler Datenbanksysteme um abstrakte Typen...................................10
2.2. Objektorientierte Erweiterungen......................................................................................10
3. Beispiele..................................................................................................................................12
3.1. Strukturen und Mengen....................................................................................................12
3.2. Hierarchien und Erbungsmechanismen............................................................................14
4. Der neue Standard für objektrelationale Datenbanken SQL:1999..................................17
5. Vergleich unterschiedlicher Produkte.................................................................................19
5.1. Informix Universal Server................................................................................................19
5.2. Oracle 8............................................................................................................................20
5.3. IBM DB2..........................................................................................................................20
6. Fazit.........................................................................................................................................22
7. Literatur.................................................................................................................................23
2
1. Motivation des objektrelationalen Datenbankkonzeptes
Obwohl mit den relationalen Datenbanken ausgereifte, leistungsfähige und theoretisch untermauerte Systeme vorliegen, ist der alleinige Einsatz des relationalen Datenbankkonzeptes in vielen Anwendungsfällen nicht befriedigend, da die Existenz von nur einfachen Datentypen Modellierungen komplexer Aufgabenstellungen nicht unterstützt.
Objektorientierte Datenbanken sind zwar genau hierzu zu in der Lage, können aber nicht ohne
weiteres Datenbestände aus den älteren relationalen Systemen übernehmen. Außerdem stellen
objektorientierte Datenbanken keinen vollständigen Ersatz für relationale Datenbanken dar, da
sie in den klassischen Anwendung für relationale Systeme, also Verwaltung großer, einfach
strukturierte Datenbestände, gegenüber diesen Systemen konzeptionell im Nachteil sind.
Objektrelationale Datenbanksysteme wurden entwickelt um die Vorteile des objektorientierten
und des relationalen Konzeptes zu vereinen und dabei deren jeweilige Nachteile auszuschalten.
1.1. Allgemeine Anforderungen an Datenbanksysteme
Datenbanken dienen zur strukturierten und effizienten Speicherung und Verwaltung von Daten
in Anwendungsfällen, bei denen das einfache Speichern von Daten über ein Dateisystem nicht
mehr ausreichend ist.
Die in einer Datenbank zu speichernden Daten werden durch ein Datenmodell definiert, indem
deren Struktur, Operationen auf diesen Daten und Konsistenzregeln festgelegt werden.
Die Daten in der Datenbank können nur über das Datenbank-Management-System (DBMS) eingefügt, gelesen, geändert oder gelöscht werden. Das DBMS ist ein Softwaresystem, dass die einheitliche Beschreibung und sichere Bearbeitung einer Datenbank ermöglicht. Es erfüllt unter
anderem die folgenden Anforderungen:
•
Das DBMS sorgt für Physische Datentunabhängigkeit: Änderungen an den hardwaremäßigen Speicherstrukturen und Zugriffspfaden sind für Anwenderprogramme und Queries
unsichtbar, verändern also weder die logische, noch die externen Sichten
•
Das DBMS sorgt für Logische Datentunabhängigkeit: Änderungen an der logischen Sicht
(an den Typendefinitionen, Datenbankschemata) sind für Applikationen und Queries unsichtbar, diese arbeiten nur mit externen Sichten
•
Das DBMS garantiert Korrektheit der Daten (Einhaltung der definierten Konsistenzregeln)
•
Das DBMS garantiert Datensicherheit, d.h. Korrektheit bei fehlerhaftem Ablauf einzelner
Anwendungen und Systemabsturz
3
•
Das DBMS garantiert Korrektheit im Mehrbenutzerbetrieb (concurrency control)
•
Das DBMS bietet feinkörnige Zugriffskontrolle.
•
Das DBMS sorgt für Redundanzvermeidung bzw. –minimierung: Gleiche Daten werden
möglichst nicht mehrfach abgespeichert. Dadurch wird nicht nur Einsparung von Speicherplatz erreicht, sondern auch die Aktualisierung der Daten wesentlich vereinfacht
•
Das DBMS unterstützt spontane Anfragestellung (ad-hoc Queries). Anfragen werden
vom System optimiert
1.2. Nachteile relationaler und objektorientierter Datenbanksysteme
Die im letzten Abschnitt erwähnten Anforderungen an Datenbanksysteme werden, mit Ausnahme des fehlenden Sichtenkonzeptes bei objektorientierten Systemen, grundsätzlich von relationalen sowie objektorientierte Implementierungen erfüllt. Nichtsdestotrotz hat jeder Datenbanktyp,
abhängig von der Beschaffenheit der Datenbankanwendung, seine individuelle Vor- und
Nachteile.
Allgemeingültig, also für beliebige Aufgabenstellungen gleichermaßen, kann keines der beiden
Konzepte empfohlen werden. Vielmehr muss abhängig von der Datenbankanwendung entschieden werden, welchem der Beiden im speziellen Falle der Vorzug zu geben ist. Um diesen Umstand zu verdeutlichen, findet sich im folgenden eine Zusammenstellung der wichtigsten und
schwerwiegensten Nachteile der jeweiligen Konzept.
1.2.1. Nachteile relationaler Datenbanksysteme
Die grundlegende Einschränkung relationaler Datenbanken ist Tatsache, dass diese von Hause
aus nur einfache Datentypen anbieten und darüber hinaus nicht die Neudefinition von benutzerdefinierten Datentypen gestatten. Allein die Fähigkeit zum Umgang mit komplexen Datentypen
würde den Datenbankentwurf in viele Fällen vereinfachen.
Für komplexe Aufgabenstellung hat sich die objektorientierte Modellierung durchgesetzt. Objektorientierte Konzepte werden aber von relationalen Datenbanken in keiner Weise unterstützt,
wodurch der Datenbankentwurf in solch einem Fall extrem umständlich wird.
Ist ein solches komplexes, objektorientiertes Modell einmal in das Relationenschema umgesetzt
worden, so können selten alle Attribute eines Objektes aus dem Ausgangmodell in einer Tabelle
untergebracht werden. Vielmehr ist es notwendig ein Objekt auf mehrere Tabellen aufzuteilen.
Sollen in solch einem Fall durch eine Anfrage alle Attribute dieses Objektes ermittelt werden, so
sind hierzu explizite Join-Operationen notwendig. Für komplexe Aufgabenstellungen bei denen
objektorientierte Modellierung angebracht ist wird also nicht nur der Datenbankentwurf kompli4
zierter, sondern in vielen Fällen müssen auch die späteren Anfragen an die Datenbank umständlicher formuliert werden.
Relationale Datenbanken kennen keine Objektidentität. Dieses Merkmal objektorientierter Datenbanken und Programmiersprachen erlaubt die Identifizierung eines Objektes selbst dann,
wenn all seine Attribute in ihrem ursprünglichen Wert verändert worden sind. Wird ein Objekt in
einem Tupel einer relationalen Tabelle gespeichert, so verliert es seine Identität, also die Möglichkeit es von außen eindeutig zu identifizieren sobald sein Primärschlüssel geändert wird.
Von einer rein relationalen Datenbank wird auch Persistenz durch Erreichbarkeit nicht unterstützt. Bei diesem Persistenzkonzept werden alle Objekte in die Datenbank aufgenommen, die
von einem bereits gespeicherten Objekt referenziert werden. Da auf diese Weise das Persistenzmerkmal von Objekt zu Objekt weitergegeben wird, ist z.B. das Abspeichern oder Löschen einer
kompletten Listen mit nur einer Operation auf dem Listenkopf möglich. Bei relationalen Datenbanken muss man hierzu explizit jedes Element Speichern oder Löschen.
Ein weiteres Manko ist die geringe Mächtigkeit von SQL, der Datenbankprogrammiersprache
relationaler Systeme. Anspruchsvolle Berechnungen lassen sich besser oder ausschließlich in
einer externe Programmiersprache verwirklichen. Auch ist es nicht möglich benutzerdefinierte
Prozeduren oder Funktionen in SQL zu erstellen. Muss im Anwendungsfall auf eine externe
Programmiersprache ausgewichen werden, so kommt es beim Datenaustausch zwischen Datenbank und externer Programmiersprache zum sogenannten Impedance Mismatch. Dieser Begriff
beschreibt den Umstand das die Typsysteme von Datenbank und Programmiersprache sich unterscheiden. So muss das externes Programm dafür sorgen, dass die von der Datenbank gelieferten Daten in das Typsystem der Programmiersprache umgesetzt werden. Umgekehrt müssen die,
in die Datenbank zu transferierenden, Daten zuvor in einen Datenbankkonformen Typen konvertiert werden. Dieser zusätzliche Programmieraufwand ist nicht nur zeitraubend, sondern zudem
eine unerwünschte mögliche Fehlerquelle.
Abschließend nochmals eine Auflistungen der größten Schwächen relationaler Systeme:
•
keine komplexen Typen
•
keine Objektorientierung
•
keine Objektidentität, Primärschlüssel müssen durch Programmierer geeignet gewählt
werden
•
keine Persistenz durch Erreichbarkeit
•
SQL als Programmiersprache nicht mächtig genug, keine benutzerdefinierbaren Prozeduren
•
Impedance Mismatch: Typen von SQL und externen Programmiersprachen passen nicht
zueinander und müssen ineinander konvertiert werden
5
1.2.2. Nachteile objektorientierter Datenbanksysteme
Trotz der im letzten Abschnitt beschriebenen Nachteile stellen relationale Datenbanksysteme
derzeit die weit verbreitetste Technologie dar. Für die Datenbestände, die hier gepflegt werden,
ist es für den Fall, dass die relationale Technologie nicht mehr als ausreichend erachtet wird,
wünschenswert, dass sie mit möglichst geringem Aufwand auf das neue Datenbanksystem zu
portieren sind. Aufgrund der grundlegenden Unterschiede zwischen relationalen und
objektorientierten Systemen ist die Migration von Erstem zu Zweitem keineswegs ohne weiteres
zu erledigen.
Bei Anwendungsfällen, in denen sich die relationale Datenbanktechnologie bewährt hat, also vor
allem beim Verwalten großer, einfach aufgebauter Daten, ist zwar prinzipiell der Einsatz von
objektorientierten Systemen möglich, allerdings nicht sonderlich empfehlenswert. In diesen Fällen nämlich, sind objektorientierte Datenbanksysteme in der Regel erhebliche langsamer. Ein
Grund hiefür ist die gesteigerte Komplexität objektorientierter Datenbankprogrammiersprachen,
die eine datenbankinterne Optimierungen von Lese- und Schreibzugriffen erschwert.
Ein weiterer Nachteil, der mit der Komplexität und Leistungsfähigkeit objektorientierter Datenbankprogrammiersprachen zusammenhängt, ist die erhöhte Fehleranfälligkeit die diese Komplexität mit sich bringt. Je einfacher und überschaubarer eine Programmiersprache desto geringer ist
nämlich auch die Wahrscheinlichkeit von Programmierfehlern, welche den Datenbestand einer
Datenbank eventuell verfälschen könnten.
Den objektorientierten Datenbanken fehlt das theoretische Fundament ihrer relationalen Verwandten, welche mathematisch mit Hilfe der Relationenalgebra eindeutig beschrieben werden
können. Auch sind relationale Datenbankprodukte in der Regel ausgereifter, schließlich existieren diese Produkte seit Beginn der achtziger Jahre, während objektorientierte Datenbanken erst
in den Neunzigern, einhergehend mit der Etablierung objektorientierter Entwurfs und Programmiermethoden, entstanden sind.
Ein Rollenkonzept ist bei objektorientierten Datenbanken zwar vorhanden, allerdings in bestimmten Fällen recht aufwendig nur durch Mehrfacherbung zu realisieren. Im Detail wird dieser
Punkt in Kapitel 3 mit einem Beispiel veranschaulicht. Allgemein kann gesagt werden, dass je
mehr Rollen ein Objekt annehmen kann, desto umständlicher ist das objektorientierte Rollenkonzept.
In Kapitel 1.1. wurde als grundlegende Anforderung an Datenbanksysteme die Datenunabhängigkeit genannt. Objektorientierte Datenbanksysteme besitzen allerdings weder ein Sichtenkonzept, welches logische Datenunabhängigkeit ermöglichen würde, noch implementieren sie externe Datenunabhängigkeit. Vielmehr wird die konzeptuelle Ebene, die Objektstrukturen, nahezu
eins zu eins auf die verwendeten Massenspeichermedien ausgelagert. Das Fehlen von Datenunabhängikeit äußert sich bei nachträglichen Änderungen an konzeptueller oder physischer Ebene,
und führt in diesen Fällen zu einem Mehraufwand, beispielsweise zum Anpassen bereits bestehender Applikationen an neue Datentypen, der bei bestehender Datenunabhängigkeit nicht erbracht werden muss.
6
Zusammenfassen weist ein objektorientiertes Datenbanksystem also folgende Schwachpunkt auf:
•
Migration relationaler Datenbestände in objektorientierte Datenbanken nicht ohne weiteres möglich
•
Performanznachteil bei großen, einfach strukturierten Datenbeständen
•
Höhere Anfälligkeit für Programmierfehler, da Datenbanksprache komplexer
•
keine theoretische Untermauerung, nicht so ausgereift wie relationale Systeme
•
Rollenkonzept in bestimmten Fällen umständlich
•
Keine Datenunabhängigkeit, da kein Drei-Ebenen Konzept
1.3. Resultierende Anforderungen für objektrelationale Datenbanksysteme
Relationale Datenbanksysteme stellen heute eine etablierten Technologie dar, die in vielen Bereichen der Datenverarbeitung erfolgreich eingesetzt wird. Ein Großteil aller Geschäfts- und
Prozessdaten ist in relationalen Datenbanken abgelegt. Die von den Systemen angebotenen Datentypen und Anfragesprachen sind für die typischen Standard-Datenbankanwendungen ausreichend. Nicht-Standard-Datenbankanwendungen stellen neue Anforderungen an Datenbanksysteme wie den Umgang mit komplex strukturierten Multimedia Daten. In einem Städteinformationssystem müssen beispielsweise Anfahrtspläne, Photographien und mit Bildern angereicherte
Dokumente ebenso wie Audiodaten und Videos verwaltet werden. Aufgrund der anwendungsspezifischen Anforderungen an neue Datentypen, wäre eine herstellerseitige Ergänzung der vordefinierten Datentypen um neue Typen unzureichend. Es sollte vielmehr jedem Entwickler möglich sein, das Datenbanksystem seinen Bedürfnissen entsprechend mit neuen Datentypen und
Funktionen zu erweitern.
Somit werden die Anforderungen an ein neues Datenbankkonzept offenbar: Es sollte, um problemlose Übernahme vorhandener Datenbestände zu ermöglichen, auf der konventionellen relationalen Technologie aufsetzen und diese durch objektorientierte Erweiterungen ergänzen. Hierfür
wäre eine objektorientierte Erweiterung des SQL-Standards wünschenswert, der erlaubt das Datenbanksystem mit neuen Typen, Funktionen und Regeln zu erweitern, ohne allerdings die Komplexität der Sprache ausufern zulassen. Genau dieser Gedanke wird von objektrelationalen Datenbanksystemen verfolgt.
Ausgangspunkte für die aktuellen objektrelationalen Datenbankprodukte sind die etablierten
relationalen Systemen, die die Hersteller nun um objektorientierte Konzepte erweitern, um die
erwähnten Einschränkungen relationaler Systeme auszuschalten. Da mit SQL:1999 erst seit kurzem ein wohldefinierter Standard für objektrelationale Funktionalität besteht, ist die Implementierung objektrelationeller Merkmale in den verschiedenen Produkten auch unterschiedlich weit
fortgeschritten. Welche Merkmale dies im einzelnen sind und welchen Funktionsumfang eine
Datenbank mitbringen muss, um sich objektrelational nennen zu dürfen, soll im folgenden Kapitel behandelt werden.
7
2. Merkmale objektrelationaler Datenbanksysteme
Das objektrelationale Konzept ist relativ neu, es ist durch Integration bekannter Ansätze und
durch logische Weiterentwicklung entstanden. Seit vielen Jahren hat man immer wieder versucht
das relationale Datenbankmodell zu erweitern, weil die Umstellung relationaler Datenbestände
auf das strikte objektorientierte Konzept sehr umständlich bleibt. Bevor man aber auf das objektrelationale Modell gekommen ist, sind schon viele Neuerungen und Forschungen gemacht worden. Daraus sind neue Konzepte entstanden. Alle Konzepte sind unter dem Begriff „Postrelationales Datenbanksystem“ zu verstehen. Der Name Postrelational soll an die unternommene Erweiterung des relationalen Modells erinnern. Zu den am häufigsten realisierten Konzepten zählen:
•
Erweiterte, vordefinierte und benutzerdefinierte Datentypen
•
Funktionen und Methoden
•
Typkonstruktkoren
•
Objektidentität
•
Referenzen
Die Basis für diese Systeme ist jeweils das Relationenmodell. Unterscheiden kann man Systeme
dieser Entwicklungsrichtung wieder nach:
•
Relationalen Datenbanksystemen mit strukturellen Erweiterungen
•
Relationalen Datenbanksystemen mit Verhaltensmäßigen Erweiterungen
•
Relationalen Datenbanksystemen mit einem ADT-Konzept, wobei die ADTs gleichermaßen Struktur und Verhalten definieren
•
Relationalen Datenbanksystemen, die innerhalb des Relationenmodells relativ weitgehend ein objektorientiertes Datenbankmodell verwirklichen
Wann ist ein System aber nun objektrelational? Um diese Frage zu beantworten betrachten wir
zunächst die Klassifikationsmatrix von Stonebraker wie sie in [2] wiedergegeben wird:
Demnach ist das Unterscheidungsmerkmal zwischen relationalen und objektrelationalen Datenbanken allein die Unterstützung komplexer Datentypen. In der Praxis müsste man aber dadurch
viele postrelationale Systeme, die die Objektorientierung nicht verwirklichen als objektrelational
bezeichnen. Zwischen objektrelationalen und objektorientierten Datenbanken trennt man nach
8
Stonebraker anhand der Existenz von Abfragesprachen. Aber auch reine objektorientierte Produkte, in [2] werden POET und O2 angegeben, besitzen mittlerweile Anfragesprachen. Mit Stonebraker muss man diese also ebenfalls als objektrelational bezeichnen, obwohl sie keine relationalen Anteile haben. Demnach ist der Ansatz von Stonebraker nicht mehr anwendbar und es
müssen andere Kriterien verwendet werden um über die Objektrelationalität eines Systems zu
entscheiden.
Heuer verwendet hierfür in [2] eine geeigneteren Weg der spezifischere Eigenschaften von Datenbanken berücksichtigt. Objektrelational soll hier zuerst einmal heißen, daß das relationale
Modell vollständig unterstützt wird. Begriffe wie Entitätstypen, Attribute, Tupel, Primärschlüssel
und Fremdschlüssel, Projektion, Selektion und Verbindung von Tabellen gehören hier nach wie
vor zum Grundvokabular. Das objektrelationale Model versucht darüber hinaus ein Datenbankmodell zu erschaffen das mit „einige OO-Konzepten in der Form einer Tabelle" charakterisiert
werden kann. Persistente Daten werden schon längst mit einer Tabelle verarbeitet, hinzugekommen ist nun die Fähigkeit, das Felder der Tabelle strukturierte Daten bzw. abstrakte Datentypen
einnehmen können sollen. Außerdem sollen aus dem objektorientierten Konzept Merkmale wie
Vererbungsprinzipen und Methodenüberschreibung (Overriding) integriert sein.
Die folgende Tabelle veranschaulicht die Kriterien zur Klassifikation von Datenbanken nach
Heuer, wobei die zu Beginn des Kapitel angesprochene Klasse von postrelationalen Datenbaken
hier in zwei Kategorien eingeteilt wird:
Demzufolge stellen Datenbanken die nur den Kriterien der linke Tabelle erfüllen, lediglich eine
Erweiterung des relationalen Modells um abstrakte Datentypen dar, ohne objektorientierte Konzepte zu implementieren. Daher können sie auch nur als erweitert relational bezeichnet werden.
Damit eine Datenbank als objektrelational eingestuft werden kann, müssen die Kriterien in der
rechts stehenden Tabelle erfüllt sein. Hauptkriterium für Objektrelationalität ist also hiernach das
Vorhandensein von Vererbungsmechanismen zur Methoden- und Strukturvererbung.
Nachdem somit festgelegt ist, was unter objektrelationalen Datenbanken zu verstehen ist, erfolgt
in den zwei nächsten Unterkapiteln nun eine Erläuterung der hier zur Unterscheidung aufgeführten Merkmale.
9
2.1. Erweiterung relationaler Datenbanksysteme um abstrakte Datentypen
Damit relationale Datenbanksysteme mit abstrakten Datentypen umgehen können benötigen sie
die folgenden Erweiterungen:
•
komplexe, benutzerdefinierbare Datentypen
•
Funktionen, Methoden
•
Typenkonstruktoren
Unter komplexen Datentypen versteht man Typen wie Struktur und Menge. Benutzerdefinierbare
Datentypen resultieren aus der Kombination der internen Datentypen der Datenbank.
Funktionen konnten bisher in Standard-SQL nicht erzeugt werden. Dieses, in herkömmlichen
Programmiersprachen schon lange bekannte Konzept zur Programmstrukturierung und Wiederverwendung von Quellcode, kann somit auch in Datenbanken Verwendung finden. Angewandt
wird es z. B. für benutzerdefinierbare Operationen in Anfragen. Hauptelement der Erweiterung
um abstrakte Datentypen ist die Einführung von Methoden. Dabei handelt es sich um mit bestimmet Datentypen assoziierte Funktionen. In der Praxis werden Methoden verwand um zu Typen dazugehörigen Zugriffs- und Verarbeitungsfunktionen zu definieren. Neben den klassischen
einfachen Typen wie „Integer“ mit den Funktionen „Addition“ und „Subtraktion“ kann man nun
auch neue Datentypen wie beispielsweise „Bild“ mit den Funktionen „Bildanzeigen“ definieren.
Jeder benutzerdefinierte Typ besitzt einen Konstruktor gleichen Namens, mit dem Objekte bzw.
Instanzen dieses Typs erzeugt werden können. Durch Aufruf eines Konstruktors wird jedoch
nicht nur eine Instanz eines Typen erzeugt, sondern der Konstruktor kann darüber hinaus als benutzerdefinierbare Methode angesehen werden, die bei jeder Erzeugung einer Instanz des Typen
aufgerufen wird. Aufgrund dieser Eigenschaft werden Konstruktoren z. B. für die Zuweisung
von Initialwerten verwendet.
Mit den hier erläuterten Merkmalen erweiterter relationaler Datenbanken ist es also möglich abstrakt Datentypen zu implementieren. Die Unterstützung abstrakter Datentypen ist attraktiv, weil
Methoden als Operationen assoziiert mit diesen neuen Datentypen benutzt werden können um
Datenmengen z. B. zu indexieren, zu speichern und Anfragen, die auf diese Datentypen basieren,
zu realisieren.
2.2. Objektorientierte Erweiterungen
Wie bereits erwähnt ist das wichtigste Merkmal von objektrelationalen Datenbanken die Vererbung. Hierbei handelt es sich um ein grundlegendes objektorientierten Konzeptes, welches vor
allem dann von Vorteil ist, wenn aus Entity-Relationship-Modellen, Datenbankschemata entwickelt werden sollen. Mit herkömmlichen relationalen Datenbanken kann so etwas nämlich nicht
direkt implementiert werden. Mit Vererbung kann man aus einem gebildeten Basistyp wie „Per10
son“ verschiedene Typen beispielweise „Techniker“, „Manager“ oder „Mitarbeiter“ ableiten. Die
abgeleiteten Typen erben alle Eigenschaften von „Person“, können aber auch erweiterte spezifische Attribute zugewiesen bekommen, die nur für den Untertyp gelten. Diese Form von Vererbung, also das Vererben von Attributen von Basisklassen an Unterklassen, wird auch Strukturvererbung genannt. Eine Unterklasse erbt aber auch alle Methoden von der darüber liegenden
Klasse. Soll eine Methode in einer Unterklasse aber nachträglich gegenüber einer geerbten Methode aus einer Basisklasse verändert werden, so wird dieser Vorgang als Overriding oder Überschreiben bezeichnet.
Im objektorientierten Konzept exsistiert lediglich Vererbung auf der Ebene von Typen, die dort
Klassen genannt werden. Eine auf Basis dieser Vererbung erzeugte Hierarchie wird Typenhierarchie genannt. Objektrelationale Systeme kennen weitergehend auch Vererbung auf Tabellenebene, bei der eine Tabelle erstellt werden kann, indem sie Attribute einer bereits bestehenden
Tabelle übernimmt. Eine solche Tabellenhierarchie wird auch als Relationenhierarchie bezeichnet.
Eine weiteres nützliches Merkmal, dass die objektrelationalen von den objektorientierten Datenbanken übernommen haben ist die Objektidentität. Zu jedem Objekt wird automatisch ein systemweit eindeutiger Identifikator erzeugt (OID), der z.B. zur Modellierung von Beziehungen
durch Referenzen herangezogen werden kann. Dieser Identifikator bleibt während der Lebenszeit
des Objekts unverändert.
Wie bereits angedeutet können mit dem OID Referenzen erzeugt werden. Eine Referenz gleicht
dem Speichern eines Fremdschlüssels in einer Tabelle und dient dazu auf ein Objekt oder auf ein
Tupel in einer Tabelle zu zeigen. Beziehungen können durch Referenzen aber „natürlicher“ dargestellt werden, als durch künstlich eingeführte Fremdschlüsselattribute. Sobald Referenzen vorhanden sind kann zwischen verschiedenen Objekten bzw. Tupeln direkt navigiert werden. Somit
werden komplexe Abfragen, die im relationalen Modell Joins über mehrere Tabellen erfordern,
u.U. erheblich vereinfacht, wenn die Beziehung durch Referenzen modelliert wird (weniger Tabellen in der from-Klausel, besser lesbare Anfragebedingungen).
11
3. Beispiele
Um ein Eindruck davon zu bekommen wie sich die geschilderten Eigenschaften objektrelationaler Datenbanken letztlich in der Praxis auswirken betrachten wir in diesem Kapitel einige Beispiele die aus [3] mit leichten Abwandlungen entnommen wurden. Der in den Beispielprogrammen verwendete Code entspricht dem Vorschlag eines erweiterten SQL wie er in [3] verwendet
wird.
3.1. Strukturen und Mengen
Die grundlegendste Erweiterung über die objkektreltionale Datenbanken im Gegensatz zu den
relationalen Datenbanken verfügen, ist die Möglichkeit Tabellen mit Attributen zu erstellen, die
nicht von einem atomaren Typ wie Ganzzahl (integer) oder ASCII-Zeichen (char) sind. Statt
dessen können die Attribute einer Tabelle komplexe Typen wie „Menge eines bestimmten Typs“
(setof) haben oder strukturiert sein, also aus anderen Typen zusammengesetzt sein. Durch diese
Eigenschaft ist es sehr viel einfacher von einer gegebene mittels Datenbank zu erfassenden Situation zu einer korrespondierenden Tabelle zu kommen.
Ein mögliches Beispiel ist ein einfache Datenbankanwendung für die Verwaltung von Büchern.
In einer Tabelle sollen Titel, Autor (bei mehreren Verfassern alle Autoren), Datum (unterteilt in
Tag, Monat, Jahr) und eine Stichwortliste gespeichert werden. Dank komplexer Attribute ist das
Ganze kein Problem: man kann den intuitiven Ansatz wählen welcher wohl bei den Meisten folgendermaßen aussehen würde:
Titel
Autoren
Datum
Stichwortliste
Reich und Schön {Crawford, Schiffer} 12, Februar, 2000 {schminken, lächeln}
Dick und Doof {Laurel, Hardy}
1, April, 1930
{boing, peng}
Hierbei trennen die Kommata in der Spalte Datum die einzelnen Untertypen von einander ab
(also ist das Attribut Datum strukturiert) und die geschweiften Klammern symbolisieren Mengen
(daraus folgt Autoren und Stichwortliste sind Mengen von Zeichenketten). In objektrelationalem
SQL wird diese Tabelle dann so erstellt:
create type MyString char varying
create type MyDate ( Tag integer
, Monat char(10)
, Jahr integer )
create type Buch ( Titel MyString
, Autoren setof(MyString)
, Datum MyDate
, Stichworte setof(MyString) )
create table Buchverwaltung of type Buch
12
Mit der ersten Anweisung wird der Typ MyString als eine Zeichenkette mit unbestimmter Länge
definiert. Mit der zweiten Anweisung wird der Typ MyDate definiert, und zwar als Struktur mit
den Elementen Tag(vom Typ Integer), Monat (Zeichenkette aus maximal 10 Zeichen) und
Jahr(ebenfalls Integer). Mit der dritten Anweisung wird letztlich der Typ der Tabelle, also im
Sprachgebrauch relationaler Datenbanken das Schema, festgelegt. In der letzten Anweisung wird
eine Tabelle des Typs Buch in der Datenbank angelegt. Die Hiermit erstellten Datentypen werden im Metaschema der Datenbank gespeichert und stehen damit allen weiteren auf dieser Datenbank aufsetzenden Applikationen zur Verfügung.
Wollte man die zugrundeliegende Aufgabenstellung mittels einer herkömmlichen relationalen
Datenbank lösen, so könnte man versucht sein die obigen Daten ebenfalls in einer einzigen Tabelle anzulegen. Dies würde allerdings zu folgendem schaurigen Ergebnis führen:
Titel
Reich und Schön
Reich und Schön
Reich und Schön
Reich und Schön
Dick und Doof
Dick und Doof
Dick und Doof
Dick und Doof
Autoren
Crawford
Crawford
Schiffer
Schiffer
Laurel
Laurel
Hardy
Hardy
Tag
12
12
12
12
1
1
1
1
Monat
Februar
Februar
Februar
Februar
April
April
April
April
Jahr
2000
2000
2000
2000
1930
1930
1930
1930
Stichworte
schminken
lächeln
schminken
lächeln
boing
peng
boing
peng
Da in einer relationalen Datenbank ein Attribut kein Mengentyp seien kann, kann in den Spalten
Autoren und Stichworte nur ein Datenelement gespeichert werden. Somit müssen neue Zeilen
erzeugt werden um alle möglichen Kombinationen von Autoren und Stichworte zu speichern.
Außerdem wird die Anzahl der Spalten dadurch erhöht, daß keine strukturierten Typen erlaubt
sind also für jedes Element von Datum eine eigene Spalte notwendig wird.
Die hier auftretenden Redundanzen können dadurch vermieden werden das man die Daten in
mehrere Tabellen speichert:
Titel
Reich und Schön
Reich und Schön
Dick und Doof
Dick und Doof
Autoren
Crawford
Schiffer
Laurel
Hardy
Titel
Reich und Schön
Reich und Schön
Dick und Doof
Dick und Doof
Stichworte
schminken
lächeln
boing
peng
Titel
Tag Monat Jahr
Reich und Schön 12 Februar 2000
Dick und Doof 1
April
1930
13
Der Nachteil dieser Lösung ist ebenfalls offensichtlich: Der Entwurf der Datenbankschemata ist
komplizierter geworden und die direkte Beziehung von Objekt (Buch) zum sie beschreibenden
Tupel in der Tabelle der Datenbank ist verloren gegangen. Für jedes Buch existieren mehrere
Tupel die es beschreiben.
3.2. Hierarchien und Erbungsmechanismen
Die grundlegenden Vorteile Objektorientierter Programmiersprachen und Datenbanken sind die
Unterstützung von Wiederverwendung bereits erstellten Quellcodes und die Vereinfachung der
Modellbildung. Letzteres äußert sich z. B. darin, daß ein zur Objektmodellierung erzeugtes E-R
Diagramm ohne weiteres als Datentyp in einer objektorientierten (Datenbank-) Programmiersprache erzeugt werden kann.
Eine notwendige Voraussetzung für diese Erleichterung der Objektmodellierung ist die Existenz
von Erbungsmechanismen bei der Erzeugung benutzerdefinierter Datentypen. Im Zusammenhang mit der Objektorientierung wird ein Datentyp oder Attribut auch als Klasse bezeichnet.
Durch Erben entsteht aus einer Oberklasse eine Unterklasse. Die Unterklasse besitzt alle Eigenschaften der Oberklasse, und kann um weitere Eigenschaften ergänzt werden. Durch Erbungsmechanismen entstehen also Klassenhierarchien.
Objektrelationale Datenbanken unterstützen das Erben auf zweierlei Weise. Die klassische Variante funktioniert folgendermaßen:
create type Person ( Name MyString
, GeburtsDatum MyDate )
create type Fotomodell ( Gehalt integer
, Haarfarbe MyString ) under Person
create type Schauspieler ( Gehalt integer
, Oscars integer ) under Person
create type Sportler ( Gehalt integer
, ZigarettenProTag integer ) under Person
create table BayernMuenchen of type Sportler
In diesem Beispiel werden wie aus objektorientierten Programmiersprachen bekannt aus der Oberklasse Person die Unterklassen Fotomodell, Schauspieler und Sportler abgeleitet. In der letzten Anweisung wird in der Datenbank eine Tabelle vom Typ Sportler angelegt. Ein Beispiel für
eine solche Tabelle wäre dann:
Name
GeburtsDatum Gehalt ZigaretteProTag
Oliver Kahn 4, April, 1969 1000000 0
Mario Basler 5, April, 1969 2000000 126
14
Bei dem Versuch eine Klassenhierarchie in einer erweiterten relationalen Datenbank (eine Datenbank sie zwar erweiterte Typen wie Menge und Struktur kennt aber keine Erbung anbietet) zu
speichern, ist man dagegen genötigt zwei Tabellen anzulegen und diese dann mittels Primärschlüssel zu verketten:
Name
GeburtsDatum
Oliver Kahn 4, April, 1969
Mario Basler 5, April, 1969
Name
Gehalt ZigaretteProTag
Oliver Kahn 1000000 0
Mario Basler 2000000 126
Neben dem höheren Modellierungsaufwand und dem Verlust der eindeutigen Beziehung zwischen realem Objekt und Tupel in der, die Objektklasse modellierenden, Tabelle, muss man sich
bei einer solchen Lösung auch selber um die Wahrung von Datenkonsistenzen bemühen.
Durch löschen des Tupels ( Mario Basler, (5, April, 1969) ) in der 1.Tabelle des vorangegangenen Beispiels muss auch, und zwar durch die Datenbankanwendung, sichergestellt werden, daß
das Tupel (Mario Basler, 2000000, 126) aus der 2.Tabelle gelöscht wird. Eine weitergehende
Beschreibung der Probleme, die sich beim Abbilden objektorientierter Daten auf ein rein relationale System ergeben, ist in [4] zu finden.
Die bereits angekündigte zweite Art und Weise in der objektrelationale Datenbanken das Erben
unterstützen, ist das Erben auf Relationen- oder Tabellenebene. Hierbei wird nicht aus einem
bereits bestehenden Datentyp , bzw. objektorientiert gesprochen, aus einer bestehende Klasse ein
Unterklasse erzeugt, sondern es wird eine exsistierende Tabelle als Vorlage für eine neue Tabelle
benutzt. Wie beim Erben auf Klassenebene besitzt die neu entstandene Tabelle alle Eigenschaften der Vorlagentabelle.
Dieses Merkmal objektrelationaler Datenbanken ist ein Vorteil gegenüber objektorientierten Systemen, da hierdurch Mehrfacherbung vermieden und Klassenhierarchien vereinacht werden können. In einem objektorientierten System würde man aufsetzend auf die bereits definierten Klassen Fotomodell, Schauspieler, Sportler eine Klasse für Personen die Schauspieler und Fotomodell sind eine gesonderte Klasse FotomodellSchauspieler erstellen die durch Mehrfacherbung
aus Schauspieler und Fotomodell entstanden wäre. Exsistierten darüber hinaus Personen die sowohl Sportler als auch Schauspieler oder Sportler und Fotomodell oder Sportler, Fotomodel und
Schauspieler sind, so müsste man die Klassen SportlerFotomodell, SportlerSchauspieler, SportlerFotomodellSchauspieler erstellen.
In einer objektrelationalen Datenbank löst man solch eine Konstellation dagegen durch das Erben auf Tabellenebene. Die sich durch Erbung auf dieser Ebene ergebenden Hierarchien sind die
in Kapitel 2 angesprochenen Relationen- oder Tabellenhierarchien. In objektrelationalem SQL
drückt man Erben auf Tabellenebene dadurch aus, dass man nach der create table Konstruktion
keinen Typ, sondern eine bereits bestehende Tabelle mittels des Schlüsselwortes under, als Basistabelle angibt. Bei Verwendung dieser Variante des Erbens sieht das vorangegangene Beispiel
folgendermaßen aus:
15
create type Person ( Name MyString
, GeburtsDatum MyDate )
create table Taugenichtse of type Person
create table Fotomodelle ( Gehalt integer
, Haarfarbe MyString ) under Taugenichtse
create table Schauspieler ( Gehalt integer
, Oscars integer ) under Taugenichtse
create table Sportler ( Gehalt integer
, ZigarettenProTag integer ) under Taugenichtse
Statt der vorher notwendigen sieben Tabellen, werden nun nur noch vier benötigt. Eine Person
die zugleich Sportler, Schauspieler und Fotomodell ist wird nun in allen vier Tabelle geführt.
Damit in den Tabellen Fotomodelle, Schauspieler und Sportler nicht redundant die Attribute der
Tabelle Taugenichtse aufführen, werden datenbankintern in den durch Erbung entstandenen Tabellen nur die Primärschlüssel der vererbenden Tabelle gespeichert. Bei Bedarf werden durch
eine internen Join die anderen Attribute ermittelt.
Für den Fall das Mehrfacherbung ausdrücklich erwünscht ist, wird angestrebt diese in objektrelationalen Systemen ebenfalls zu ermöglichen. Der derzeitige Standard:SQL1999 sieht Mehrfacherbung zwar nicht vor, doch ist dies Gegenstand der derzeitigen Entwicklung: Für den angestrebten zukünftigen Standard SQL:2000 ist Mehrfacherbung eingeplant.
16
4. Der neue Standard für objektrelationale Datenbanken SQL:1999
Der lange Zeit unter dem Namen SQL3 entwickelte Standard für objektrelationale Datenbanksprachen ist in 1999 unter dem Namen SQL:1999 verabschiedet worden. Wie im vorangegangenen Kapitel erwähnt, fehlt diesem vor allem noch die Möglichkeit zur Mehrfacherbung, welche
erst mit SQL:2000 angestrebt wird.
Der Aufbau des SQL:1999-Standards besteht wie folgt aus 9 Teilen:
1. Framework: Dieser Teil beschreibt den Aufbau des Standards
2. Foundation: Die Foundation ist der eigentliche Kern des Standards
3. SQL / CLI: Das Call Level Interface des SQL:1999 Standards
4. SQL / PSM: Dies sind die sog. Persistent Storage Modules
5. SQL / Bindings
6. SQL / Transaction
7. SQL / Temporal
8. SQL / MED: Das Management externer Daten
9. SQL / OLB: Das Object Language Binding, was auch dem SQLJ entspricht
Die Neuerungen gegenüber den alten SQL Standards beziehen sich unter anderem auf die neuen
vordefinierten Datentypen. Es existieren jetzt u. a. :
•
ein Boolean Typ
•
Large Objects wie Binary Large Objects (BLOB) und Character Large Objects (CLOB),
mit denen man nun auch Bild- oder sogar ganze Textdateien im DBS und nicht wie vorher in separaten Dateien verwalten kann
Ebenso wurde das Typsystem um die Möglichkeit, der Definition von User-Defined-Types
(UDT) unter Verwendung von vordefinierten Typen, konstruierten Typen und vorher definierten
User-Defined-Types erweitert. Dieses Erweiterbare Typsystem stellt eine signifikante Verbesserung der Modellierungsfähigkeiten dar.
17
Es wurden zahlreiche weitere Fähigkeiten hinzugefügt, wie z.B.:
•
Trigger
•
Rekursion (Rekursive Anfragen)
•
Verbesserte Möglichkeiten, Daten über Sichten (Joins) zu verändern
•
Sprachkonstrukte (Blöcke, Schleifen, Verzweigungen usw.)
•
Verweise über Referenzdatentypen
•
Tabellen-Hierarchien
•
Schema-Evolution bei UDT's und UDF's
•
Komplexe Tabellenstrukturen (Spalten für satz- und arrayartige Werte)
•
Anbindung der neuartigen Datenobjekte an Wirtssprachen (z.B. an Java)
Ebenfalls umfasst SQL:1999 eine Erweiterung der Standardbibliotheken um :
•
Typen und Routinen für die Volltextsuche
•
Typen und Routinen für geographische Informationssysteme (GIS)
18
5. Vergleich unterschiedlicher Produkte
In diesem Kapitel werden unterschiedliche Datenbankprodukte von verschiedenen Herstellern
unter die Lupe genommen. Es findet ein Vergleich der Produkte statt und weiterhin wird versucht die Produkte hinsichtlich ihrer objektrelationalen Eigenschaften zu klassifizieren.
5.1. Informix Universal Server
Als erstes soll nun der Informix Universal Server genauer betrachtet werden. Der Informix Universal Server stellt ein Beispiel für eine objektrelationale Datenbank dar, die aus Teilen von dem
aus dem Postgres weiterentwickeltem Illustra besteht (früher: „Miro“, „Mirage“ bzw. UniSQL).
Informix Universal Server gehört zu der Gruppe der erweiterbaren oder offenen Datenbanksysteme, wie z.B. auch DB2 und Oracle 8. Diese erlauben es neue Datentypen mit ihren Funktionen
unter Bewahrung der Kapselung zu definieren und diese auf der internen Ebene zu verankern.
Diese Technik wird bei Illustra bzw. Informix Universal Server Data Blades, bei DB2 Database
Extenders und bei Oracle 8 Data Cartridges genannt.
Die Datenbanksysteme DB2 V2 und Oracle werden zwar aus werbungstechnischen Gründen als
objektrelationale Datenbankmanagementsysteme bezeichnet, sind eigentlich jedoch nur eine
Vorstufe. Sie zählen zu den objektrelationalen Datenbankmanagementsystemen mit abstrakten
Datentypen, da ihnen das Vorhandensein einer Typhierarchie und die Möglichkeiten zur Vererbung von Strukturen und Methoden fehlt, im Gegensatz zu Informix Universal Server, der die
Vererbung und die Typhierarchie beherrscht.
Da der aktuelle SQL:1999 Standard in 1999 verabschiedet wurde sind bei den Heute verfügbaren objektrelationalen Datenbankmanagementsystemen noch diverse Abweichungen zu erkennen. Das sogenannte CALL-Statement von Informix Universal Server ist im Gegensatz zu dem
von DB2/MVS 4.1, DB2/400 3.1 und DB2 Common Server 2.1 eingesetzten CALL-Statements
noch nicht SQL:1999 konform.
Bei dem Informix Universal Server umschließt die Erweiterbarkeit über Data Blades (welche
von Illustra übernommen wurden) folgende Punkte:
•
benutzerdefinierte Datentypen
•
benutzerdefinierte Routinen
•
benutzerdefinierte Zugriffspfade (Indexstrukturen)
19
Weiterhin enthält der Informix Universal Server die bisherigen insgesamt ca. 30 Data Blade Modules, z.B.:
•
Time Series
•
Web
•
Image
•
Text
•
2D/3D Spatial
•
....
Viele SQL:1999-Features wurden bereits integriert, die Kollektionstypen sind umfassender als in
SQL:1999 vorgeschrieben und es existieren schon explizite ROW-Typen.
5.2. Oracle 8
Bei Oracle 8 wird die Erweiterbarkeit über Data Cartridges, die jedoch weniger eng integriert
wurden als die von Informix Universal Server bekannten Data Blades, unterstützt.
Die Erweiterbarkeit umschließt folgende Punkte:
•
benutzerdefinierte Typen
•
benutzerdefinierte Arrays
•
(einfach) geschachtelte Tabellen, die auf typisierte Tabellen (Objekt-Tabellen) und maximal
•
eine Schachtelungsstufe beschränkt sind. Der Zugriff erfolgt über den THE-Operator
•
(flattened subquery).
In Oracle 8 ist jedoch noch keine Vererbung möglich und auch keine Typhierarchie.
5.3. IBM DB2
IBM's DB2 bietet eine Mischung aus relationalen und objektorientierten Eigenschaften, bleibt im
Kern jedoch relational. Durch diese nach außen hin als Zwitter erscheinende Datenbank ist es
möglich, sowohl die auf dem alten relationalen Datenbankmodell basierenden Anwendungen,
wie auch die neuen mit objektorientierten Features ausgestatteten Applikationen zu benutzen.
20
Das DB2-SQL wurde so erweitert, das die Datenbank nun auch externe Daten, z.B. große Videooder Bilddaten, verarbeiten kann, wofür ein komplettes externes Datei-Handling integriert wurde. Integriert wurden auch die vom Common Server bekannten Multimedia Extender, welche auf
den User Defined Datatypes (UDT) und den User Defined Functions (UDF) aufbauen, wobei die
UDT's aus Performance-Gründen wie interne Funktionen behandelt werden.
Weitere Neuerungen sind:
•
rollenbasierter, erweiterbarer Optimizer
•
paralleles I/O
•
erheblich schnellerer Restart
•
Daten- und Index-Prefetch
•
•
verbesserte LOAD-Jobs (paralleles Lesen und Schreiben von Dateien, Tabellen bzw. Indexen)
verbesserte Skalierbarkeit und hohe Verfügbarkeit
•
verteilen einer Tabelle auf mehrere Laufwerke bzw. Rechner nun möglich
•
Replikation auf dieser Ebene möglich
•
Backup und Recovery jeweils parallel durchführbar
•
Teile einer Tabelle, die auf unterschiedlichen Laufwerken oder Rechnern liegen, können
nun
•
getrennt gesichert werden.
• neues User-Interface
• komplette Steuerung eines entfernten Servers machbar
Es ist jedoch wie bei Oracle 8 keine Vererbung möglich, ebenso ist die Typhierarchie nicht implementiert.
21
6. Fazit
Bei bestimmten Anwendungen haben die herkömmlichen objektorientierten Datenbankmanagementsysteme noch einen Entwicklungsvorsprung, unter anderem weil sie hohe Performanz für
navigierende Zugriffe (Pfadausdrücke) aufgrund ihrer engen Programmiersprachen-Integration
bieten. Außerdem werden sie noch bevorzugt für Anwendungen, die mit objektorientierten Programmiersprachen realisiert wurden und eine persistente Datenverwaltung benötigen, da es hier
nicht zum „Impedance Mismatch“ kommt.
Durch die Heterogenität der verschiedenen Implementierungen und die Unterschiede zur kommenden Norm wird eine Interoperabilität unter den verschiedenen objektrelationalen Produkten
noch vielfach verhindert. Auch können einige, sich selbst als objektrelational bezeichnende, Systeme noch nicht vollständig als solche betrachtet werden. So kann man Oracle 8 und DB2, trotz
ihrer Erweiterung gegenüber dem Relationenschema, noch nicht zu dieser Kategorie von Datenbanken zählen, da sie noch keine Vererbung ermöglichen und daher auch die Typhierarchie noch
nicht implementiert ist. Ebenfalls werden derzeit noch keine neuen Klassen oder Objektstrukturen als Anfrageergebnisse erzeugt, da das grundlegende Konzept immer noch die Relation oder
Tabelle ist. Der Trend zur vollen Unterstützung der objektrelationalen Konzepte ist jedoch bei
allen oben genannten Produkten erkennbar und wird zudem auch durch die Normung, also durch
den geschaffenen SQL:1999 Standard, gefördert.
Für die Integration von Texten Bildern und anderen häufig genutzten Daten, für den objektorientierten Zugriff auf vorhandene Daten und bei der Ergänzung existierender relationaler um objektorientierte modellierte Daten scheint der Einsatz der oben genannten Produkte schon vielversprechend. Das direkte Manipulieren und Abspeichern von Anwendungsobjekten ist mit den
objektrelationalen Datenbanksystemen mit ihren nutzerdefinierten Datentypen und ihren objektorientierten Konzepten möglich, ebenso wie ein flexibles Auffinden und Kombinieren dieser
Objekte in Anfragen.
Somit ist mit den objektrelationalen Datenbanken den objektorientierten Systemen neue Konkurrenz entgegengetreten. Letztere werden dadurch weder verdrängt noch überflüssig werden, jedoch wird in Anwendungsfällen, bei denen ein bestehender relationaler Datenbestand weiter
gepflegt werden soll, in der Regel zugunsten eines objektrelationalen Produktes entschieden
werden.
22
7. Literatur
[1] Martin Hueber, Computer World Spezial: Datenbank 97
[2] Andreas Heuer, Objektorientierte und objektrelationale Datenbanksysteme,
OBJEKTspektrum 1/98
[3] Abraham Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts,
McGraw-Hill, 1997
[4] Jonathan Robie, Dirk Bartels, A Comparison between Relational and Object Oriented
Databases for Object Oriented Application Development, Poet Software Corporation, 1994
[5] Jens Lufter, Objektrelationale Datenbanksysteme, Informatik_Spektrum_22_August_1999
[6] Skript Datenbanksysteme 2: www.informatik.uni.leipzig.de/ifi/abteilungen/db/skripte/
DBS2/HTML/kap6-1.html
[7] Deutsches Institut für Normung e.V.: www.din.de/gremien/nas/ni/aktuell/sql3/
[8] Blauer Generalist – DB2 Universal Database: c’t 8/1997
23
Herunterladen