Domains
Am Ende dieses Kapitels über Datenintegrität möchten wir Ihnen noch kurz das
Konzept der SQL-Domains vorstellen.

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);
AS DECIMAL(8.2);
CREATE DOMAIN ZINSEN
AS DECIMAL(5.3)
CONSTRAINT positivezinsen_chk
CHECK(VALUE >= 00.000);
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);
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)
);
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;
AS CHAR(50)
CHARACTER SET CHINESE_TRADITIONAL;

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!
道歉 dào qiàn Entschuldigung!