Typisierte Tabellen (SQL)

Zu den objektrelationalen Konzepten des SQL-Standards zählen die typisierten Tabellen, die eine sog. Basistabelle sind zur persistenten Speicherung von Objekten. Sie sind quasi die objektrelationale Variante der objektrelationalen Tabellen.

Typisierte Basistabellen können mit einer sog. CREATE typisierte TABLE-Anweisung implementiert werden. Die Attributnamen und -datentypen korrespondieren mit den Attributnamen und -datentypen des der Tabellendefinition zugrunde liegenden benutzerdefinierten Datentyps zuzüglich eines Object Identifier (OID), der ggf. auch noch eine weitere Spalte beansprucht.

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

      SET(ROW(REF(ST), TYPE(S1),…, TYPE(Sn))) 

beschreiben, wobei SET der Konstruktor für eine Menge von Datensätzen (Objekten) ist. TYPE(Si) meinst Attribute mit benutzerdefinierten Datentypen und REF-Beziehungen, die OID-Spalte des Objekts, die eine unveränderliche Objektidentifikation gewährleistet und somit stabile Referenzen darstellt. Bemerkenswert und folgenschwer an dieser Definition ist, dass der ROW-Konstruktor statt einem OBJECT-Konstruktor wie bei den Oracle-Objekttabellen verwendet wird. Somit ist der Zeilentyp "nur" tupelwertig und nicht objektwertig. Dies hat zur Konsequenz, dass z.B. keine Methodenaufrufe für die Zeilen (Objekte) möglich sind. Can Türker/Gunter Saake sprechen daher in ihrem Buch "Objektrelationale Datenbanken" (s.u.) von einem Pseudo-Objekt im Zusammenhang mit typisierten Tabellen im SQL-Standard, wohingegen von einem Objekt im Zusammenhang mit den Oracle-Objekttabellen die Rede ist. Trotz allem ist die typisierte Tabelle für den Aufbau von Tabellenhierarchien einsetzbar.

Can Türker/Gunter Saake definieren in ihrem Buch "Objektrelationale Datenbanken" (s.u.) eine typisierten Tabellen als ein MULTISET(ROW(...)), 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(...)) voraussetzen.

Zusammenfassend lassen sich typisierte Tabellen mit den Eigenschaften:

Typisiert heißt, dass die Tabellendefinition auf einem benutzerdefinierten Datentyps basiert.

Tupelwertig bedeutet, nur auf einem benutzerdefinierten Datentyps und nicht auf einem Objekttyp, womit sich die Zeilen kaum noch von den Daten (Zeilen) relationaler Tabellen unterscheiden.

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

Erstellt werden sie mittels des CREATE TABLE-Befehls. Grundlage ist ein benutzerdefinierter Datentyp, der seinerseits mit einem CREATE-TYPE-Befehl angelegt wird.


Quellen:

  • ANSI/ISO/IEC 9075-1:2003. Part 1 "SQL/Framework", ISO International Organization for Standardization / ANSI American National Standards Institute, September 2003
  • ANSI/ISO/IEC 9075-2:2003. Part 2 "SQL/Foundation", ISO International Organization for Standardization / ANSI American National Standards Institute, Dezember 2003
  • Türker, Can/Saake, Gunter: "Objektrelationale Datenbanken", dpunkt-verlag, Heidelberg, 2006, ISBN 3-89864-190-2

Kategorie: Objektrelationale DB, T