Typkonstruktor

Typkonstruktoren ermöglichen die Konstruktion neuer Datentypen aus bereits vorhandenen Basisdatentypen? oder anderen komplexen Datentypen. Typkonstruktionsregeln geben an, welche Datentypen sich mit welchen Typkonstruktoren kombinieren lassen, um neue Typen zu gewinnen. Die Verfügbarkeit der Typkonstruktoren sowie die zugehörigen Regeln sind ausschlaggebend dafür sind, wie realitätsnah Objektstrukturen im Datenbanksystem abgebildet werden können.

Grundsätzlich ist dieser Begriff nicht mit dem Begriff des Konstruktors zu verwechseln. Für jeden Typkonstruktor wird jedoch i.d.R. ein namensgleicher Konstruktor automatisch vom DBS erzeugt.

"Gängige" Typkonstruktoren sind:

  ARRAY (SQL)    VARRAY (Oracle)           LIST              ROW (SQL, Oracle)   SET 
  MULTISET (SQL) NESTED-TABLE (Oracle)    Object (Oracle)   REF (SQL, Oracle)   UNION 

In Klammern ist angegeben, ob der jeweilige Typkonstruktor in SQL bzw. bei Oracle als Typkonstruktor gegeben ist, mittels dem neue Datentypen definierbar sind. Die übrigen Typkonstruktoren liegen teilweise zwar als Konzept vor, nicht jedoch als expliziter Typkonstruktor.

Hier einige Beispiele: So ist SET in SQL und bei Oracle implizit realisiert dadurch, dass typisierte Tabellen bzw. Objekttabellen als Mengen von Objekten realisiert sind. Und OBJECT bei Oracle dadurch, dass Objekttabellen für die Speicherung von Objekten definiert werden können. MULTISET ist bei Oracle zu finden, weil in relationalen Tabellen Multimengen von Datensätzen gespeichert werden können, also mit Duplikaten.

Verwendet werden die Typkonstruktoren in SQL, in dem CREATE-TYPE-Befehl und bei Oracle ebenfalls in einem leicht differierenden CREATE-TYPE-Befehl?.

Typkonstruktoren lassen sich nach verschiedenen Konzepten unterscheiden:

  • benannte vs. unbenannte Typkonstruktoren
    • Benannte Typkonstruktoren
      • sind solche, mit einem eindeutigen Namen versehen in der Datenbank mittels eines DDL-Befehls erzeugt werden, z.B. CREATE TYPE typname ... .
      • erweitern die gegebenen Datentypen für eine passgenaue Typisierung, sind wiederverwendbar für verschiedene Anwendungen, können evolutionär weiterentwickelt werden, bieten ein gute Performance beim Zugriff auf komplexe Objekte.
    • Unbenannte Typkonstruktoren
      • sind solche, die innerhalb einer SQL-Anweisung, z.B. SELECT-Anfrage unmittelbar spezifiziert werden.
      • Ihre Gültigkeit beschränkt sich auf die Laufzeit der Anweisung.
      • weisen eine hohe Flexibilität und Dynamik auf, da für jeden speziellen Wert mit beliebiger Komplexität innerhalb einer Anfrage z.B. ein eigener Typ konstruiert werden kann. Ein Beispiel: SELECT ROW(s1.A1) FROM …..

In der Theorie sind die Eigenschaften 'benannt' und 'unbenannt' orthogonal zu allen Typkonstruktoren vom ARRAY bis zum UNION. Im SQL-Standard und in der Praxis sind sie jedoch nur sehr bruchstückhaft umgesetzt. SQL kennt benannte Typkonstruktoren nur für den Typkonstruktor OBJECT und unbenannte nur für ROW, ARRAY, MULTISET und Oracle die benannten nur für ARRAY, MULTISET, OBJECT und einen unbenannten für REF.

Die Datenmodelle unterscheiden sich teilweise erheblich durch die Anzahl und Komplexität der zugelassenen Typkonstruktoren und ihren Anwendungsregeln. So sind im relationalen Datenmodell nur SET(ROW(Basisdatentyp)) zugelassen und in SQL ist es MULTISET(ROW(Basisdatentyp)). Im objektorientierten Datenmodell ist es hingegen SET(OBJECT(Basisdatentyp)).


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
  • Oracle® Database Object-Relational Developer's Guide 11g Release 2 (11.2), E11822-03, http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11822.pdf
  • Oracle® Database PL/SQL Language Reference 11g Release 2 (11.2), E10472-06, http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10472.pdf
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E10592-04, http://download.oracle.com/docs/cd/E11882_01/server.112/e10592.pdf
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
  • Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
  • Türker, C., Saake, G.: Objektrelationale Datenbanken - Ein Lehrbuch, Heidelberg, dpunkt-Verlag 2005.ISBN-10: 3898641902
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: Datenmodellierung, Objektrelationale DB, T