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:
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)) |