Frage

Zum Beispiel eine Hierarchie von Kategorien erstellen Sie eine Spalte ‚parent_id‘ verwenden, die in der gleichen Tabelle in einer anderen Kategorie verweist.

Sollte dies ein Fremdschlüssel sein? Was würden die dis / Vorteile sein?

War es hilfreich?

Lösung

Ja. Stellt sicher, dass Sie keine Waise haben (Eintritt ohne Eltern), und je nach Nutzung, wenn Sie eine Kaskadierung definieren löschen, wenn ein Elternteil gelöscht wird, alle seine Kinder werden ebenfalls gelöscht.

Nachteil wäre eine leichte Leistungseinbußen wie jede andere Fremdschlüssel.

Andere Tipps

Ja, Sie sollten. Wenn Sie ein Attribut in einer Beziehung der Datenbank, die als Primärschlüssel einer anderen Beziehung in derselben Datenbank dient, sollten Sie es eine FK machen.

Sie werden genießen Sie die Vorteile Fremdschlüssel zugeordnet

  • Unter der Annahme der richtigen Gestaltung der Beziehungen, machen Fremdschlüssel-Constraints es schwieriger für einen Programmierer, Inkonsistenzen in der Datenbank einzuführen.
  • Die Zentralisierung der Überprüfung dieser Einschränkungen, die durch den Datenbankserver macht es unnötig, diese Überprüfungen auf der Anwendungsseite auszuführen. Dadurch entfällt die Möglichkeit, dass verschiedene Anwendungen nicht Einschränkungen in der gleichen Art und Weise überprüfen können.
  • Verwenden von Cascading Aktualisierungen und Löschungen können den Anwendungscode vereinfachen.
  • Richtig dimensionierte ausländische Hilfe Schlüssel Regeln in Beziehungen zwischen Tabellen zu dokumentieren.

Die Nachteile:

  • Wenn Sie Fremdschlüssel zu definieren, ist es manchmal schwieriger zu Bulk-Operationen durchzuführen.
  • Vielleicht bedeutet es mehr Festplattennutzung und eine leichte Leistungseinbußen.

Ja, Sie sollten.

Vorteile (wie für jeden Fremdschlüssel):

  • Stellt sicher, dass parent_id verweist auf eine reale Zeile in der Tabelle
  • Verhindert versehentliches Löschen eines Elternteils, die Kinder, oder sorgt dafür, dass die Lösch Kaskaden zu löschen, die Kinder auch
  • hat
  • Informationen liefert der Optimierer verwenden

Ich kann mich keine wirklichen Nachteile.

Ja, man sollte es einen Fremdschlüssel machen.

Die Vorteile werden eine bessere Datenmodell mit weniger Redundanz sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top