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

外鍵可以引用不同表中的多個主鍵嗎?

DDD
DDD原創
2025-01-11 08:16:41310瀏覽

Can a Foreign Key Reference Multiple Primary Keys in Different Tables, and What's the Best Alternative?

跨表外鍵引用

本文探討在一個表中建立外鍵以引用多個其他表的主鍵的可能性。具體來說,它圍繞著提問者提出的場景。

場景解讀

提問者有兩個表,employees_ceemployees_sn,每個表都有自己的主鍵列。他們還有一個名為 deductions 的第三個表,需要一個外鍵來引用 employees_ceemployees_sn 的主鍵。提供的範例進一步說明了這種情況:

<code>employees_ce
--------------
empid   name
khce1   prince

employees_sn
----------------
empid   name
khsn1   princess</code>
<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

雖然提問者的目標在技術上是可以實現的,但這並非資料庫設計的最佳實踐。建議的方法是定義一個中間表來連結這兩個表,例如:

<code>employees
----------------
empid   name

employees_types
---------------
empid   type
khce1   ce
khsn1   sn</code>

透過這個設置,deductions 表可以有一個外鍵引用 employees 表中的 empid 列,從而在三個表之間建立簡單的關係。

<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

中間表方法的優點

中間表法提供以下幾個優點:

  • 它透過提供單一引用點來引用員工,簡化了資料管理。
  • 它避免了外鍵引用多個主鍵的問題,這可能會導致不一致和資料完整性問題。
  • 它允許靈活性和可擴展性,能夠添加其他員工類型而無需更改 deductions 表。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn