Hallo zusammen,
ich habe bisher immer ohne Foreign Keys gearbeitet - aber ich hatte auch schon Probleme mit "herrenlosen" Datensätzen ;-) Daher hab ich da mal Nachholbedarf gesehen.
Jetzt hab ich mich in das Thema eingelesen, und wollte nur nochmal von euch bestätigt bekommen, ob ich den Sinn wirklich verstanden habe: Foreign Keys sichern die referentielle Integrität. Korrekt eingesetzt verhindern sie Datenmüll, der zurückbleiben kann, wenn man beispielsweise aus einer Tabelle einen Datensatz löscht, ohne in diversen Untertabelle damit verbundene Datensätze ebenfalls zu löschen. Dank "on update" Funktion können die Datensätze in Untertabellen automatisch gelöscht oder geändert werden.
Sie verhindern auch das Einfügen von Datensätzen in Untertabellen, wenn in der übergeordneten Tabelle keine Referenz dazu vorhanden ist.
ABER: Sie bringen bei Abfragen keinen Geschwindigkeitsunterschied. Vielleicht geht das Löschen von Datensätzen etwas schneller, weil automatisch untergeordnete Daten mit gelöscht werden und man keine 2, 3 oder 4 DELETE-Statements dafür braucht. Aber generell sind die Abfragen, zb JOINs zwischen zwei durch Foreign-Keys verbundene Tabellen nicht schneller als würde man das gleiche bei "nicht verbundenen" Tabellen tun.
Stimmt das? Wäre sehr dankbar für ein kurzes Feedback :)
Beste Grüße
Mark