Typisierte Sicht (SQL)

Analog zu den typisierten Tabellen gibt es im SQL-Standard die typisierten Sichten. Sie gehören zu den objektrelationalen Sichten?. Es sind typisierte, tupelwertige, referenzierbare Sichten. Dieses Konzept läßt sich auf der Basis von Typkonstruktoren als

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

beschreiben, wobei TYPE(Si) Spalten mit benutzerdefinierten Datentypen meint und REF(ST) die OID-Spalte des Objekts. Hier gilt die gleiche Einschränkung wie auch bereits bei den typisierten Tabellen, dass die Zeilen nicht objektwertig sondern nur tupelwertig sind, womit Methodenaufrufe für Zeilen nicht möglich sind. Aufgrund des Vorhandensein der OID ist die Eigenschaft der Referenzierbarkeit gegeben. Die Eigenschaft der Typisierung basiert auf der Verwendung eines benutzerdefinierten Datentyps bei der Definition mittels einer CREATE-VIEW-Typisiert-Anweisung.

Eine typisierte Sicht basiert wie eine typisierte Tabelle auf einem Strukturdatentyp und ist eine virtuelle, typisierte Tabelle. Die Zeilen der typisierten Sicht stellen je nach Ausprägung des zugrunde liegenden Strukturdatentyps entweder Tupel, Pseudo-Objekte oder Objekte dar. Ferner werden sie danach unterschieden, ob sie objekterhaltend oder objektgenerierend sind, wobei diese Unterscheidung nur typisierte Sichten betrifft, deren Zeilen Objekte oder zumindest Pseudo-Objekte darstellen:

  • Objekterhaltende Sicht: umfasst ausschließlich Objekte, die schon in einer Datenbank existieren, die also eine OID besitzen.
  • objektgenerierende Sicht: erzeugt neue Objekte, d.h. Objekte mit neuen OID´s.

Eine objekterhaltende Sicht kann mit Unterstützung durch das Substituierbarkeitsprinzip dazu genutzt werden, um die jeweiligen Objekte als Instanzen eines ihrer Supertypen darzustellen. Z.B. eine Sicht über die Menge aller Personen, die zwar Angestellte sind, jedoch über die Sicht nur als Personen mit ihren personenspezifischen Eigenschaften (Attributen und Methoden) dargestellt werden sollen. Die From-Klausel basiert bezeichnenderweise auf nur einer einzigen typisierten Tabelle bzw. Sicht. Diese kann sich aber auch aus mehreren mit Mengenoperationen verknüpften typisierten Tabellen oder Sichten zusammensetzen. Das wesentliche Problem bei objektgenerierenden Sichten liegt darin, dass die Gewährleistung der Stabilität von generierten Objekten bzw. derer OID´s nicht immer gegeben ist. Der Inhalt von Sichten wird dynamisch mit jeder Anfrage neu berechnet. Aus diesem Grund kann die Stabilität der OID´s nicht gewährleistet werden, wenn die OID´s jedes Mal neu berechnet werden würden. Aktuelle objektrelationale DBMS beschränken sich deshalb nur auf abgeleitete und benutzerdefinierte OID´s für typisierte Sichten. Unter der Annahme, dass sich die der Abbildungsfunktion zugrunde liegenden Attribute nicht ändern, sind die OID´s dann stabil, wenn sie jeweils durch eine fest vorgegebene Abbildungsfunktion berechnet werden.

Zu erwähnen ist noch, dass die (typisierten) referenzierbaren Sichten sowohl in Oracle als auch in DB2 mit einer objekterhaltenden oder mit einer objektgenerierenden Semantik definiert werden können.

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

Kategorien: Objektrelationale DB, T