Benuzterdefinierter Datentyp

Sie stellen eines der zentralen Konzepte objektrelationaler Datenbankssysteme dar, mit ihrer Hilfe sollen komplexe Objekte der Realität in ihrer Struktur realitätsnäher in der Datenbank abgebildet werden können. Damit soll die im relationalen Modell unter anderem auch aufgrund der Normalisierungsanforderungen entstandenen, bisweilen etwas künstliche Verteilung eines Objekts mit all seinen Eigenschaften (Attributen) auf ggf. mehrere Entity-Mengen (Relationen/Tabellen) vermieden bzw. sogar ausgeschlossen werden. So kann sich im relationalen Modell beispielsweise ein Mitarbeiter einer Firma mit seinen Stammdaten in einer Mitarbeiter-Relation gespeichert sein, während für die Daten seiner Ausbildung, seiner beruflichen Weiterbildung, seiner Abteilungszugehörigkeiten, seiner Beurteilungen jeweils wiederum eigene Relationen benötigt werden. Für einen Zugriff auf das gesamte "Objekt" Mitarbeiter sind bei Anfragen (SELECTs) dann wiederum zeitaufwändige Joins notwendig.

Zudem geht mit der Einführung der benutzerdefinierten Datentypen eine strenge Typisierung einher mit dem Ziel, semantisch unsinnige Vergleiche, Berechnungen oder Zuweisungen zu vermeiden. Im relationalen Modell ist es möglich, zwei Attribute oder Variablen mit einander zu vergleichen, obwohl sie semantisch überhaupt nichts miteinander zu tun haben, nur aufgrund ihres gleichen Datentyps. So lassen sich z.B. Artikelbezeichnungen, die Raumkennung und die Vornamen der Mitarbeiter miteinander vergleichen, nur weil ihnen der gleiche Datentyp zugrunde liegt, hier VARCHAR. Oder es ist möglich, die verkaufte Anzahl eines Artikels und die Kundennummer zusammen zu addieren, nur weil beide vom Typ DECIMAL sind.

Benuzterdefinierte Datentypen sind in SQL ein Oberbegriff, der die DISTINCT-Datentypen und die strukturierten Datentypen zusammenfasst und werden mittels des CREATE-TYPE-Befehls erzeugt.

Bei Oracle werden die benutzerdefinierten Datentypen als Objekttypen? bezeichnet und im Kontext von PL/SQL auch als ADTs. Sie sind zwingend für die Definition von Objekttabellen bei Oracle und werden mittels des CREATE-TYPE-Oracle-Befehls? erzeugt.


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
  • Türker, Can, Saake, Gunter: "Objektrelationale Datenbanken", dpunkt-verlag, Heidelberg, 2006, ISBN 3-89864-190-2

Kategorien: Objektrelationale DB, B