Heim >Datenbank >MySQL-Tutorial >Kann ein einzelner Fremdschlüssel auf mehrere Primärschlüssel in verschiedenen Tabellen verweisen?

Kann ein einzelner Fremdschlüssel auf mehrere Primärschlüssel in verschiedenen Tabellen verweisen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-11 09:15:43631Durchsuche

Can a Single Foreign Key Reference Multiple Primary Keys in Different Tables?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn