Heim > Datenbank > MySQL-Tutorial > Kann ein Fremdschlüssel gleichzeitig auf mehrere Primärschlüssel verweisen?

Kann ein Fremdschlüssel gleichzeitig auf mehrere Primärschlüssel verweisen?

Barbara Streisand
Freigeben: 2025-01-11 10:21:43
Original
199 Leute haben es durchsucht

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

Umgang mit komplexen Fremdschlüsselbeziehungen im Datenbankdesign

Szenario

In diesem Beispiel wird eine häufige Herausforderung beim Datenbankdesign untersucht: das Erstellen einer Fremdschlüsselbeziehung, bei der eine einzelne Tabelle auf Primärschlüssel aus mehreren anderen Tabellen verweisen muss. Das spezifische Szenario beinhaltet, dass die Tabelle deductions mit den Tabellen employees_ce und employees_sn verknüpft werden muss.

Das Problem und seine Lösung

Die Frage ist, ob ein Fremdschlüssel in deductions gleichzeitig direkt auf Primärschlüssel in employees_ce und employees_sn verweisen kann. Die Antwort lautet: nicht direkt, sondern in einer standardmäßigen relationalen Datenbank. Ein einzelner Fremdschlüssel kann nur auf einen einzelnen Primärschlüssel verweisen.

Die vorgeschlagene Lösung nutzt ein gut strukturiertes Vererbungsmodell, um dieses Problem zu lösen.

Vererbungsbasierter Ansatz

Die Tabellen employees, employees_ce und employees_sn stellen eine Vererbungshierarchie dar. employees ist die Basistabelle, wobei employees_ce und employees_sn als spezialisierte Tabellen davon erben.

Datenbankstruktur:

employees (id INT PRIMARY KEY, name VARCHAR(255))
employees_ce (id INT PRIMARY KEY, ce_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
employees_sn (id INT PRIMARY KEY, sn_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
Nach dem Login kopieren

Lösung:

Anstelle eines direkten Links zu employees_ce und employees_sn sollte die deductions-Tabelle auf die gemeinsame übergeordnete Tabelle employees:

verweisen
deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))
Nach dem Login kopieren

Dieser Ansatz stellt die referenzielle Integrität sicher und vermeidet Redundanz. Das employee_id in deductions verweist auf den Mitarbeiterdatensatz in employees, unabhängig davon, ob dieser Mitarbeiter zusätzliche Informationen in employees_ce oder employees_sn hat. Dieses Design verwaltet die Beziehung effizient und sorgt für die Datenkonsistenz.

Das obige ist der detaillierte Inhalt vonKann ein Fremdschlüssel gleichzeitig auf mehrere Primärschlüssel verweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage