此範例探討了一個常見的資料庫設計挑戰:建立外鍵關係,其中單一資料表需要引用多個其他資料表的主鍵。 具體場景涉及deductions
表格需要連結到employees_ce
和employees_sn
表。
問題是deductions
中的外鍵是否可以同時直接引用employees_ce
和employees_sn
中的主鍵。 答案是:不直接,在標準關係資料庫中。 單一外鍵只能引用單一主鍵。
建議的解決方案利用結構良好的繼承模型來解決這個問題。
表employees
、employees_ce
和employees_sn
表示繼承層次結構。 employees
是基底表,employees_ce
和 employees_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_ce
或 employees_sn
中是否有其他資訊。 這種設計有效地管理了關係並保持了數據的一致性。
以上是外鍵可以同時引用多個主鍵嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!