prev up next

Statische Integrität in SQL

Durch die check-Klausel können einem Attribut Bereichseinschränkungen auferlegt werden.

Zum Beispiel erzwingen


... check Semester between 1 and 13 ...
... check Rang in ('C2', 'C3', 'C4') ...
gewisse Vorgaben für die Semesterzahl bzw. den Professorenrang.

Listing 8.1 zeigt die Formulierung der Uni-Datenbank mit den Klauseln zur Überwachung von statischer und referentieller Integrität. Hierbei wurden folgende Restriktionen verlangt:

Listing 8.1: Universitätsschema mit Integritätsbedingungen
 CREATE TABLE Studenten (
         MatrNr         INTEGER PRIMARY KEY,
         Name           VARCHAR(20) NOT NULL,
         Semester       INTEGER,
         GebDatum       DATETIME)

 CREATE TABLE Professoren (
         PersNr         INTEGER PRIMARY KEY,
         Name           VARCHAR(20) NOT NULL,
         Rang           CHAR(2) CHECK (Rang in ('C2', 'C3', 'C4')),
         Raum           INTEGER UNIQUE,
         Gebdatum       DATETIME)

 CREATE TABLE Assistenten (
         PersNr         INTEGER PRIMARY KEY,
         Name           VARCHAR(20) NOT NULL,
         Fachgebiet     VARCHAR(20),
         Boss           INTEGER REFERENCES Professoren,
         GebDatum       DATETIME)
 
 CREATE TABLE Vorlesungen (
         VorlNr         INTEGER PRIMARY KEY,
         Titel          VARCHAR(20),
         SWS            INTEGER,
         gelesenVon     INTEGER REFERENCES Professoren)

 CREATE TABLE hoeren (
         MatrNr         INTEGER REFERENCES Studenten   ON UPDATE CASCADE
                                                       ON DELETE CASCADE,
         VorlNr         INTEGER REFERENCES Vorlesungen ON UPDATE CASCADE,
         PRIMARY KEY    (MatrNr, VorlNr))
 
 CREATE TABLE voraussetzen (
         Vorgaenger     INTEGER REFERENCES Vorlesungen ON UPDATE CASCADE,
         Nachfolger     INTEGER REFERENCES Vorlesungen,
         PRIMARY KEY    (Vorgaenger, Nachfolger))

 CREATE TABLE pruefen (
         MatrNr         INTEGER REFERENCES Studenten   ON UPDATE CASCADE
                                                       ON DELETE CASCADE,
         VorlNr         INTEGER REFERENCES Vorlesungen ON UPDATE CASCADE,
         PersNr         INTEGER REFERENCES Professoren,
         Note           NUMERIC(3,1) CHECK (Note between 0.7 and 5.0),
         PRIMARY KEY    (MatrNr, VorlNr))
	


prev up next