首頁 > 資料庫 > mysql教程 > 外鍵可以同時引用多個主鍵嗎?

外鍵可以同時引用多個主鍵嗎?

Barbara Streisand
發布: 2025-01-11 10:21:43
原創
123 人瀏覽過

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

資料庫設計中處理複雜的外鍵關係

場景

此範例探討了一個常見的資料庫設計挑戰:建立外鍵關係,其中單一資料表需要引用多個其他資料表的主鍵。 具體場景涉及deductions表格需要連結到employees_ceemployees_sn表。

問題及其解決方案

問題是deductions中的外鍵是否可以同時直接引用employees_ceemployees_sn中的主鍵。 答案是:不直接,在標準關係資料庫中。 單一外鍵只能引用單一主鍵。

建議的解決方案利用結構良好的繼承模型來解決這個問題。

基於繼承的方法

employeesemployees_ceemployees_sn 表示繼承層次結構。 employees 是基底表,employees_ceemployees_sn 作為繼承自它的專用表。

資料庫結構:

<code class="language-sql">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))</code>
登入後複製

解:

employees_ce 表應引用公共父表 employees_sn:deductions,而不是直接連結到 employees

<code class="language-sql">deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))</code>
登入後複製

這種方法確保引用完整性並避免冗餘。 employee_id 中的 deductions 連結到 employees 中的員工記錄,無論該員工在 employees_ceemployees_sn 中是否有其他資訊。 這種設計有效地管理了關係並保持了數據的一致性。

以上是外鍵可以同時引用多個主鍵嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板