SQL - Die Sprache der relationalen Datenbanken
7. Constraints, Assertions und referentielle Integrität
7.5 Trigger und Domains

Domains

Am Ende dieses Kapitels über Datenintegrität möchten wir Ihnen noch kurz das Konzept der SQL-Domains vorstellen.
 
Definition im Lehrtext
Definition
Domains sind vom Benutzer in einem Schema definierte gültige Werte. Sie sind vergleichbar mit selbst definierten Datentypen, zu denen man noch zusätzlich Constraints, Defaultwerte und dergleichen festlegen kann. Domains sind Datenbankobjekte wie Tabellen oder Views.
 
Wir beschreiben hier nur einige Beispiele für einfache, häufig benutzte Domains.
 
 
Nahezu jedes Geschäftsmodell beschäftigt sich mit Geld und Zinsen. Es ist möglich, hierzu Domains zu definieren, die dann den entsprechenden Spalten der Tabellen zugewiesen werden können. Im Folgenden sehen Sie mögliche Domains für Geld, Zinsen und Rabatte:
 
CREATE DOMAIN GELD
      AS DECIMAL(8.2);
 
CREATE DOMAIN ZINSEN
      AS DECIMAL(5.3)
      CONSTRAINT positivezinsen_chk
      CHECK(VALUE >= 00.000);
 
CREATE DOMAIN RABATT
      AS DECIMAL(3.2)
      DEFAULT 1.00
      CONSTRAINT gueltigerrabatt_chk
      CHECK(VALUE BETWEEN 0.00 AND 1.00); 
 
 
Die Definition der Tabelle VERLEIHVERTRAG könnte dann folgendermaßen aussehen:
 
CREATE TABLE VERLEIHVERTRAG ( 
    id                   NUMERIC(8) NOT NULL
    datum                DATE NOT NULL,  
    sonderrabatt         RABATT,
    betrag               GELD,  
    notiz                VARCHAR(200), 
    mitgliedschaft_id    NUMERIC(8),  
    CONSTRAINT verleihvertrag_id_pk PRIMARY KEY(id)
);
 
 
Eine weitere Möglichkeit ist, Domains mit bestimmten Character-Sets zu belegen, um z.B. fremdsprachige Objekte in der Originalsprache zu speichern.
 
Ist z.B. ein Character-Set chinese_traditional für traditionelle chinesische Zeichen, Fantizi 繁體字 (im Gegensatz zu Jiantizi 简体字, der in Festlandchina benutzten Variante), definiert, so kann man eine Domain speziell für Filmtitel aus Singapur, Hong Kong oder Taiwan schaffen:
 
CREATE DOMAIN CHIN_TITEL_TRAD
      AS CHAR(50)
      CHARACTER SET CHINESE_TRADITIONAL;
 
 
Wichtiger Hinweis im Lehrtext
Hinweis
Für weitere Informationen über Domains, Trigger, Persistent Stored Modules, Collations etc. müssen wir Sie auf die weiterführende Literatur verweisen. Diese Themen sprengen den Rahmen dieses Kurses.
道歉 dào qiàn Entschuldigung!