Referentielle Integrität
Was ist Referentielle Integrität?
Die referentielle Integrität (kurz RI) definiert Regeln, zur Erreichung und Sicherung der Integrität von Daten in Datenbanken. Dabei umfasst die referentielle Integrität nur einen Teil von Integritätsbestimmungen, die zusammengenommen die Konsistenz von Datenbanken definieren. Eine Datenbank ist in einem konsistenten Zustand, wenn folgende Integritäts-bestimmungen eingehalten werden:
- Bereichsintegrität: Die Werte von Attributen müssen innerhalb von definierten Wertebereichen liegen
- Entitätsintegrität: Primärschlüssel müssen eindeutig sein und dürfen auch nicht leer (NULL) sein
- Referentielle Integrität: Fremdschlüssel müssen auf einen existierenden Datensatz mit passendem Schlüssel verweisen oder leer sein
- Logische Konsistenz: Zusätzliche vom Benutzer definierte Integritätsbestimmungen, die vom Benutzer selbst auch erfüllt werden müssen
RI-Regeln
Die referentielle Integrität geht von einem konsistenten Zustand einer Datenbank aus und definiert mit den RI-Regeln Bedingungen, wie Datensätze in Datenbanken eingefügt und gelöscht werden dürfen, damit die Integrität der Daten erhalten bleibt. Dabei geht es darum, dass Datensätze nur auf existierende Datensätze verweisen dürfen:
Erste RI-Regel
Ein Datensatz mit einem Fremdschlüssel darf nur dann in eine Tabelle eingefügt werden, wenn in der referenzierten Tabelle ein Datensatz mit einem passenden Schlüssel existiert:
Zweite RI-Regel
Ein Datensatz, dessen Schlüssel in einer anderen Tabelle als Fremdschlüssel verwendet wird darf nicht gelöscht und sein Schlüssel nicht verändert werden:
Technische Umsetzung der RI
Die technische Umsetzung der referentiellen Integrität erfolgt über Fremdschlüssel. Dabei verweisen die Datensätze in der abhängigen Tabelle auf den entsprechenden Datensatz in der korrespondierenden Tabelle, indem sie den identischen Wert in der Spalte Fremdschlüssel haben, wie der korrespondierende Datensatz in der Spalte Primärschlüssel. Das Datenbank-managementsystem (DBMS) prüft mit Hilfe von diesen Schlüsseln, dass beim Einfügen und Löschen von Datensätzen nur Verweise auf existierende Datensätze entstehen bzw. bestehen bleiben. Bei der Art und Weise und dem Umfang angebotener Lösungen zur Wahrung der referentiellen Integrität unterscheiden sich die verschiedenen DBMS. Die Regeln in einem DBMS, die festlegen wie die Daten verändert werden dürfen werden auch als „Constraints“ bezeichnet.
Folgende unterschiedliche Löschoperationen werden von DBMS angeboten, bei denen die referentielle Integrität erhalten bleibt:
RESTRICT
Bei der Löschoperation „RESTRICT“ wird eine Fehlermeldung ausgegeben, wenn versucht wird ein Datensatz zu löschen, auf den ein anderer Datensatz verweist:
CASCADE
Bei der Löschoperation „CASCADE“ werden alle Datensätze mitgelöscht, die auf den zu löschenden Datensatz verweisen:
SET NULL
Bei der Löschoperation „SET NULL“ werden die Fremdschlüssel, die auf den zu löschenden Datensatz verweisen auf „NULL“ gesetzt: