Skript-Constraints.sql
Erscheinungsbild

(Einführung in SQL: Downloads: Skript-Constraints.sql)
Die Befehle auf dieser Seite manipulieren die Struktur der Beispieldatenbank durch Anlegen von UNIQUE KEYs und CHECK-Constraints. Die Anleitung steht im Anhang B Downloads.
/* UNIQUE Keys und CHECKs definieren */
ALTER TABLE Versicherungsvertrag
ADD CONSTRAINT Versicherungsvertrag_Nummer UNIQUE (Vertragsnummer)
USING INDEX Versicherungsvertrag_Nummer_UK,
ADD CONSTRAINT Versicherungsvertrag_Art
CHECK( Art = 'HP' OR Art = 'TK' OR Art = 'VK' );
ALTER TABLE Fahrzeug
ADD CONSTRAINT Fahrzeug_Kennzeichen UNIQUE (Kennzeichen)
USING INDEX Fahrzeug_Kennzeichen_UK;
ALTER TABLE Dienstwagen
ADD CONSTRAINT Dienstwagen_Kennzeichen UNIQUE (Kennzeichen)
USING INDEX Dienstwagen_Kennzeichen_UK;
ALTER TABLE Mitarbeiter
ADD CONSTRAINT Mitarbeiter_Nummer UNIQUE (Personalnummer)
USING INDEX Mitarbeiter_Nummer_UK;
/* weitere J/N-Werte */
ALTER TABLE Versicherungsnehmer
ADD CONSTRAINT Versicherungsnehmer_Eigener_Kunde
CHECK( Eigener_Kunde = 'J' OR Eigener_Kunde = 'N' );
ALTER TABLE Schadensfall
ADD CONSTRAINT Schadensfall_Verletzte
CHECK( Verletzte = 'J' OR Verletzte = 'N' );
/* Die letzte Einschränkung steht hier nur der Vollständigkeit halber;
sie müsste erledigt sein, als der Vorgabewert hinzugefügt wurde. */
ALTER TABLE Mitarbeiter
ADD CONSTRAINT Mitarbeiter_Ist_Leiter
CHECK( Ist_Leiter = 'J' OR Ist_Leiter = 'N' );
/* komplexe Bedingung */
ALTER TABLE Versicherungsnehmer
ADD CONSTRAINT Versicherungsnehmer_Person
CHECK( ( Geschlecht IS NULL )
OR ( Vorname IS NOT NULL
AND Geburtsdatum IS NOT NULL
AND Fuehrerschein IS NOT NULL
AND Fuehrerschein >= Geburtsdatum + 365*16 )
);
COMMIT;