2012-07-23 100 views
1

如果我有2個帳戶表:儲蓄帳戶和透支帳戶,然後我有表格交易,其中「from_account」列的值只能等於存儲帳戶ID或透支賬戶ID,我應該如何設置外鍵約束?是否有更好的模式設計,因爲透支賬戶ID可能會相互衝突。 即時通訊使用MySQL btw :) ThanxMySQL:1列是指2個不同的表格

回答

1

更好的模式設計將是在交易表中有兩個不同的列:一個引用保存帳戶表和另一個引用透支帳戶表。當然,這些列應該是可空的,只有其中的一列將指向其他表中的實際行。但是通過這種設計,您可以執行參照完整性約束。

另一種選擇是將兩個帳戶表合併爲一個,特別是如果他們有許多相似的列。

0

您可以定義一個附加列ACCOUNT_TYPE並設置一個UNIQUE CONSTRAINT,合併FROM_ACCOUNTACCOUNT_TYPE列。您還可以將CHECK CONSTRAINT添加到ACCOUNT_TYPE,以將其值限制爲1,2。

或者您爲每個引用的表格添加一列,並加上CHECK CONSTRAINT以確保您永遠不會同時填充兩個表格。

最後,考慮合併兩個帳戶表,如果它們之間沒有太大差異。