Hauptmenü

Untermenü

Advanced SQL - Einstiegstutorial 2 - Fazit

1. Die Abschnitte

2. Zusammenfassung

Kommen wir zuerst zu den Vor- und Nachteilen von Fremdschlüsseln. Denn eure Entscheidung hängt von etlichen Faktoren ab, die in so einem Fall konkrete Auswirkungen haben.

Die Nachteile von InnoDb

Allerdings hängt das von der Datenbank und deren Aufbau selber ab. Bei diesem pisseligen Beispiel werdet ihr in beiden Fällen kaum Unterschiede feststellen können. Nach meinen persönlichen Erfahrungen und den Ergebnissen diverser Internetrecherchen ist der Speicherbedarf je nach Projekt um den Faktor zwei bis fünf Mal größer als bei Tabellen vom Typ MyIsam. Auch die Performance ist deutlich geringer.

Die Vorteile von InnoDb

Die Wirkung dieser beiden Features erleichtert einem die Arbeit ganz erheblich, da man sich um bestimmte Dinge einfach nicht mehr kümmern muss. Denn bei Tabellen vom Typ MyIsam muss man sich selbst darum kümmern. Und das ist je nach Datenbankstruktur mit ziemlich viel Arbeit verbunden.

3. Referenzaktionen

Konzentrieren wir uns zunächst auf das Einfache. Wenn man sich entschlossen hat, bei den wichtigen Tabellen mit Fremdschlüsseln zu arbeiten, so sollte man bei denen immer ein ON UPDATE CASCADE einsetzen. Denn dann kann man ruhiger schlafen, weil man sich um bestimmte Dinge keine Sorgen mehr machen muss.

ON UPDATE

Tja, das ist eine echte Gewissensfrage und treibt Programmierer immer wieder in den Wahnsinn. Setze ich da nun da ein CASCADE, ein SET NULL oder ein NO ACTION/RESTRICT? Leider kann man diese Frage nicht allgemein gültig beantworten.

RESTRICT

Das sollte man immer dann setzen, wenn man in Elterntabellen etwas weghauen möchte, das aber zwingend für die Logik unserer Applikation benötigt wird. Darum ist die Vorgehensweise in der Tabelle charakter auch nur konsequent, denn wenn da eine Relation nicht mehr vorhanden ist, so kann das Mitglied nicht mehr spielen. Das gilt auch für den Status in der Tabelle mitglied, den wir später unbedingt für die Rechtevergabe benötigen.

SET NULL

... haben wir nur einmal benutzt und zwar bei der Spalte gilde in der Tabelle mitglied. Ist ja auch irgendwie logisch. Wenn der große Obermotz einer Gilde keinen Bock mehr hat und die löscht, so können die übrigen Mitglieder sich eine neue suchen und mit ihrem Charakter weiterspielen.

CASCADE

Damit arbeiten wir in allen Angebotstabellen bei den Verweisen auf die Mitglieder. Ist ja auch klar, wenn da einer nicht mehr mitspielt, so sind die damit verbunden Angebote hinfällig.

zurück zum vorherigen Abschnitt