[英]Creating a foreign key contstraint on non primary or unique key
如何對非主鍵使用外鍵約束?
例如我有兩個表account
和transactions
。 我要檢查的acname
表transactions
是一個acname
表account
。
table account (acno, acname, bal, type)
table transactions (tid, acno, acname, bal, credit/debit, datetime)
這里的transactions.acname
應該等於account.acname
。
請參閱此圖以獲取幫助:
修復您的數據模型!
也就是說,不要將acno
和acname
都存儲在兩個表中。 相反,將acno
存儲在accounts
。
然后當你想要名字時,使用join
:
select t.*, a.acname
from transactions t join
accounts a
on t.acno = a.acno
基本規則是您希望將外鍵約束鏈接到引用表的主鍵(盡管大多數數據庫允許它們具有唯一鍵)。 而且,您不希望跨表重復數據。
盡管 MySQL 允許您定義對非主鍵的外鍵引用,但沒有理由這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.