Skript-Constraints.sql

Aus Wikibooks

Seitentitel: Einführung in SQL: Downloads: Skript-Constraints.sql
(Einführung in SQL: Downloads: Skript-Constraints.sql)
(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;