Dies ist eine alte Version des Dokuments!
Um die Konsistenz einer Datenbank zu gewährleisten ist es empfehlenswert, Fremdschlüssel (FOREIGN KEYS) zu erstellen. Somit ist bereits von der Seite der Datenbank her gewährleistet, dass von anderen Datensätzen abhängige Datensätze auch vorhaden sind. Dies kann in der Programmierung Fehler und Abstürze verhindern.
Wir haben 2 Tabellen, dessen Datensätze voneinander abhängig sind:
Es macht keinen Sinn, dass bei einem gelöschten Spielschein die Spielfelder noch weiterhin in der Datenbank vorhanden sind. Mit einem Fremdschlüssel in der Tabelle „Spielfelder“ können wir erreichen, dass beim Löschen des Spielscheines die zugehörigen Spielfelder automatisch gelöscht werden.
Hinweis/Voraussetzung:
Das Erstellen von Fremdschlüsseln mit der Eigenschaft (ON DELETE CASCADE) kann in MySQL ausschliesslich mit der InnoDB Storage Engine möglich. Daher ist zuvor zu prüfen, ob beim Provider die Umstellung von „MyISAM“-Engine auf die „InnoDB“-Engine möglich ist.
Umstellung der Engine
ALTER TABLE Spielscheine ENGINE=innodb; ALTER TABLE Spielfelder ENGINE=innodb;
Hinzufügen des Fremdschlüssels
ALTER TABLE Spielfelder ADD CONSTRAINT FK_Spielfeld_Spielschein FOREIGN KEY (Spielschein) REFERENCES Spielscheine(ID) ON UPDATE CASCADE ON DELETE CASCADE;
ON DELETE CASCADE: Bewirkt, dass beim Löschen eines Datensatzes aus der Tabelle „Spielschein“ auch die zugehörigen Datensätze aus der Tabelle „Spielfelder“ gelöscht werden.
ON UPDATE CASCADE: Bewirkt, dass bei der Änderung der ID in der Tabelle „Spielschein“ auch die ID der Tabelle „Spielfelder“ geändert werden.