SQL bietet folgende Sprachkonstrukte zur Gewährleistung der referentiellen
Integrität:
-
Ein Schlüsselkandidat wird durch die Angabe von unique gekennzeichnet.
-
Der Primärschlüssel wird mit primary key markiert.
Seine Attribute sind automatisch not null.
-
Ein Fremdschlüssel heißt foreign key. Seine Attribute können auch
null sein, falls nicht explizit not null verlangt wird.
-
Ein unique foreign key modelliert eine 1:1 Beziehung.
-
Innerhalb der Tabellendefinition von S legt die Klausel integer
references R fest, daß der Fremdschlüssel (hier vom Typ Integer)
sich auf den Primärschlüssel von Tabelle R bezieht. Ein Löschen von Tupeln
aus R wird also zurückgewiesen, solange noch Verweise aus S bestehen.
-
Durch die Klausel on update cascade werden Veränderungen des
Primärschlüssels auf den Fremdschlüssel propagiert (Abbildung 8.1a).
- Durch die Klausel on delete cascade zieht das Löschen eines Tupels in R
das Entfernen des auf ihn verweisenden Tupels in S nach sich (Abbildung 8.1b).
-
Durch die Klauseln on update set null und on delete set null
erhalten beim Ändern bzw. Löschen eines Tupels in R die entsprechenden Tupel
in S einen Nulleintrag (Abbildung 8.2).
Referentielle Integrität durch Kaskadieren
Referentielle Integrität durch Nullsetzen
Kaskadierendes Löschen kann ggf.
eine Kettenreaktion nach sich ziehen.
In Abbildung 8.3 wird durch das Löschen von Sokrates der
gestrichelte Bereich mit drei
Vorlesungen und drei hören-Beziehungen entfernt, weil
der Fremdschlüssel gelesenVon die Tupel
in Professoren mit on delete cascade referenziert
und der Fremdschlüssel VorlNr in hören
die Tupel in Vorlesungen mit on delete cascade
referenziert.
Kaskadierende Löschoperationen