Objekttabellen (Oracle)

Oracle differiert hier nicht nur im Namen sondern auch im Konzept von den typisierten Tabellen des SQL-Standards. Die Spalten einer Objekttabelle entsprechen dabei genau denen des zugrunde liegenden benutzerdefinierten Datentyps, die bei Oracle als Objekttypen? bezeichnet werden. Die Objekttabellen sind typisierte, objektwertige, referenzierbare Tabellen, wobei Typisiert heißt, dass die Tabellendefinition auf einem benutzerdefinierten Datentyp, sprich einem Oracle-Objekttyp? basiert.

Da es sich in diesem Fall - anders als bei den typisierten Tabellen des SQL-Standards - wirklich um Objekttypen handelt, ergibt sich dann die nächste Eigenschaft:

Objektwertig bedeutet, dass die Daten (Zeilen) Instanzen des zugrunde liegenden Objekttyps sind. Ein Objekttyp ist ein benutzerdefinierter Datentyp, der zur Definition einer Objekttabelle in einer CREATE-Object-TABLE-Anweisung verwendet wird. Somit können Methodenaufrufe des zugehörigen Objekttyps direkt über die Zeilenvariable erfolgen.

Referenzierbar besagt, dass Objekte (Zeilen) mittels Referenzspalten referenzierbar sind , was das Vorhandensein von OIDs voraussetzt.

Dieses Konzept läßt sich auf der Basis von Typkonstruktoren als

      SET(ROW(Objekttyp)) 

beschreiben. Can Türker/Gunter Saake definieren in ihrem Buch "Objektrelationale Datenbanken" (s.u.) eine typisierten Tabellen als ein MULTISET(ROW(Objekttyp)), also einer Multimenge von Objekten (Datensätzen). Diese Zulässigkeit von Duplikaten ist meiner Meinung nach nicht vereinbar mit dem Verständnis der Eindeutigkeit von Objekten, so dass wir das Verständnis als SET(ROW(Objekttyp)) voraussetzen.

Die Zeilen einer Objekttabelle stellen Instanzen des zugrunde liegenden Objekttyps dar. Die Darstellung der Instanzen erfolgt als abstrakte Einheiten. Jedes Objekt besitzt eine eindeutige, für den Datenbankbenutzer transparente OID (Objektidentifikator = eindeutige, unveränderliche Objektreferenz), über die es referenzierbar ist. Was wiederum heißt, dass die OID nicht als Spaltenwert in der Objekttabelle sichtbar ist. Mit Hilfe der Oracle-Funktion REF kann sie jedoch ermittelt werden. Ähnlich ist es möglich, auf den Wert eines Objekts mit einer speziellen Oracle-Funktion VALUE zuzugreifen.

Tabellenhierarchien sind nicht definierbar.

Erzeugt werden Objekttabellen mit der CREATE-Object-TABLE-Anweisung.


Quellen:

Kategorie: Objektrelationale DB, O