Kursinhalt
Relationale Datenbank und Normalisierung
Relationale Datenbank und Normalisierung
Fremdschlüsselbeschränkungen. On Delete-Optionen
ON DELETE
In relationalen Datenbanken stellt ein foreign key eine Beziehung zwischen zwei Tabellen her. Diese Beziehung ist strikt und wird durch bestimmte Regeln oder Einschränkungen definiert, die als ON DELETE Optionen bekannt sind.
Die ON DELETE Option legt die Aktion fest, die ausgeführt wird, wenn ein Datensatz, der durch einen foreign key verbunden ist, aus einer anderen Tabelle entfernt wird.
Zur Veranschaulichung betrachten Sie ein Szenario, in dem ein primary key und der zugehörige foreign key zum Einsatz kommen. Wenn Sie einen Datensatz löschen, der den primary key enthält, wird die angegebene ON DELETE Aktion für den entsprechenden foreign key ausgelöst.
Hinweis
Beim Erstellen eines foreign key über eine Database Management System (DBMS) Schnittstelle werden Sie häufig aufgefordert, eine ON DELETE Option auszuwählen. Wenn Sie die Beziehung jedoch direkt über SQL definieren, müssen Sie diese Option manuell angeben.
Ein foreign key erfordert, dass eine ON DELETE Aktion definiert wird.
Hier sind die wichtigsten ON DELETE Aktionen:
- CASCADE;
- RESTRICT (or NO ACTION);
- SET NULL;
- SET DEFAULT.
CASCADE
Wenn der primäre Datensatz gelöscht wird, werden auch alle zugehörigen Datensätze entfernt (die ihn über einen Fremdschlüssel referenzieren).
Zum Beispiel, wenn Sie Tabellen mit den Namen Group und Student haben (wobei die Student-Tabelle einen Fremdschlüssel besitzt, der auf die Group-Tabelle verweist):
Und wenn die Fremdschlüsselbeziehung von student.group_id
zu group.id
mit der ON DELETE CASCADE Option definiert ist, führt das Löschen einer Gruppe dazu, dass alle mit dieser Gruppe verknüpften Studenten entfernt werden.
RESTRICT or NO ACTION
Sie können keinen primären Datensatz löschen, wenn es zugehörige Datensätze in anderen Tabellen gibt. Wenn Sie es versuchen, wird die Aktion blockiert, um die Integrität der Datenbank zu gewährleisten.
SET NULL
Beim Löschen des Primärdatensatzes wird der Fremdschlüssel in den abhängigen Datensätzen auf NULL gesetzt, anstatt diese Datensätze zu löschen.
Hinweis
Um die ON DELETE SET NULL-Aktion zu nutzen, sollte die foreign key-Spalte null values zulassen.
SET DEFAULT
Die SET DEFAULT-Aktion ähnelt SET NULL. Durch das Löschen des Primärdatensatzes wird der foreign key in den zugehörigen Datensätzen auf einen von Ihnen festgelegten Standardwert geändert, anstatt auf NULL gesetzt zu werden.
1. Wenn du eine Tasse fallen lässt und es sich anfühlt, als würde die Welt um dich herum zusammenbrechen, welche ON DELETE Option spiegelt dieses Gefühl wider?
2. Eltern haben immer Rückhalt für ihre Kinder, aber wenn sich die Rollen umkehren würden, welche ON DELETE Option würde darstellen, dass Kinder ihre Eltern beschützen?
3. Du hast heimlich einen Datensatz entfernt und keinerlei Spuren hinterlassen. Welche ON DELETE Option hast du für diesen verdeckten Vorgang verwendet?
4. Wenn du dir wünschst, dass sich stets, wenn etwas kaputtgeht, das Ganze auf magische Weise in Gold verwandelt, welche ON DELETE Option würde diesen Traum wahr werden lassen?
Danke für Ihr Feedback!