Heim >Datenbank >MySQL-Tutorial >Kann ein einzelner Fremdschlüssel auf mehrere Primärschlüssel in verschiedenen Tabellen verweisen?
Kann ein Fremdschlüssel mehrere Primärschlüssel in verschiedenen Tabellen referenzieren?
Eine häufige Frage zum Datenbankdesign betrifft die Referenzierung von Primärschlüsseln aus mehreren Tabellen mithilfe einer einzelnen Fremdschlüsselspalte. Lassen Sie uns dies anhand eines Beispiels veranschaulichen:
Datenbank: Mitarbeiterinformationen
Tabellen:
employees_ce
(Primärschlüssel: empid
)employees_sn
(Primärschlüssel: empid
)deductions
(Fremdschlüssel: id
)Kann der id
Fremdschlüssel in der deductions
-Tabelle auf beide empid
Primärschlüssel in employees_ce
und employees_sn
verweisen?
Die Lösung:
Obwohl es intuitiv erscheinen mag, einen einzelnen Fremdschlüssel mit mehreren Primärschlüsseln über verschiedene Tabellen hinweg zu verknüpfen, lässt das Standard-Datenbankdesign dies nicht zu. Die beste Vorgehensweise besteht darin, eine Verknüpfungstabelle einzuführen, um die zugehörigen Entitäten zu verbinden.
Verbesserte Datenbankstruktur:
employees
(Primärschlüssel: id
)employees_ce
(Fremdschlüssel: id
)employees_sn
(Fremdschlüssel: id
)deductions
(Fremdschlüssel: employee_id
)Diese überarbeitete Struktur verwendet eine einzige employees
-Tabelle mit einem Primärschlüssel (id
), um alle Mitarbeiter unabhängig von ihrem Typ darzustellen. employees_ce
und employees_sn
verwenden jetzt Fremdschlüssel, die auf die Spalte id
in employees
verweisen und sie mit ihren jeweiligen Mitarbeiterkategorien verknüpfen. Der Fremdschlüssel der deductions
-Tabelle, employee_id
, verweist auf den Primärschlüssel in der employees
-Tabelle. Dieser Ansatz stellt die Datenintegrität sicher und vereinfacht Abfragen und Verknüpfungen zwischen Tabellen.
Das obige ist der detaillierte Inhalt vonKann ein einzelner Fremdschlüssel auf mehrere Primärschlüssel in verschiedenen Tabellen verweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!