Fremdschlüssel
erzwingen referenzielle Integrität
. Diese Einschränkungen garantieren, dass eine Zeile in einer Tabelle order_details
mit einem Feld order_id
Verweis auf eine orders
Tabelle wird niemals eine order_id
haben Wert, der in den orders
nicht existiert Tisch.
Fremdschlüssel sind nicht erforderlich, um eine funktionierende relationale Datenbank zu haben (tatsächlich MySQLs Standardspeicher ). -Engine unterstützt keine FKs), aber sie sind definitiv unerlässlich, um unterbrochene Beziehungen und verwaiste Zeilen (z. B. referenzielle Integrität) zu vermeiden. Für C ist die Fähigkeit erforderlich, die referenzielle Integrität auf Datenbankebene zu erzwingen in ACID zu stehen.
Was Ihre Bedenken hinsichtlich der Leistung betrifft, so fallen im Allgemeinen Leistungskosten an, die jedoch wahrscheinlich vernachlässigbar sind. Ich schlage vor, alle Ihre Fremdschlüsselbeschränkungen einzubauen und nur dann ohne sie zu experimentieren, wenn Sie echte Leistungsprobleme haben, die Sie nicht anders lösen können.