Referenzielle Integrität

Einführung in relationale Datenbanken in SQL

Timo Grossenbacher

Data Journalist

Referenzielle Integrität

  • Ein Datensatz, der auf eine andere Tabelle verweist, muss auf einen vorhandenen Datensatz in dieser Tabelle verweisen.
  • Betrifft immer zwei Tabellen
  • Durch Fremdschlüssel durchgesetzt
Einführung in relationale Datenbanken in SQL

Verstöße gegen referenzielle Integrität

Referenzielle Integrität von Tabelle A zu Tabelle B wird verletzt, wenn:

  • ein Datensatz in Tabelle B gelöscht wird, auf den ein Datensatz in Tabelle A verweist,
  • ein Datensatz in Tabelle A eingefügt wird, der auf einen nicht vorhandenen Datensatz aus Tabelle B verweist.
  • Fremdschlüssel verhindern Verstöße!
Einführung in relationale Datenbanken in SQL

Umgang mit Verstößen

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
Einführung in relationale Datenbanken in SQL

Umgang mit Verstößen (Fortsetzung)

ON DELETE ...

  • ... NO ACTION: Fehler wird ausgelöst
  • ... CASCADE: Löscht alle verweisenden Datensätze
  • ... RESTRICT: Fehler wird ausgelöst
  • ... SET NULL: Setzt verweisende Spalte auf NULL
  • ... SET DEFAULT: Setzt die verweisende Spalte auf ihren Standardwert
Einführung in relationale Datenbanken in SQL

Schauen wir uns einige Beispiele an.

Einführung in relationale Datenbanken in SQL

Preparing Video For Download...