1

如果我有 2 个账户表:储蓄账户和透支账户,然后我有表事务,其中“from_account”列的值只能等于储蓄账户 ID 或透支账户 ID,我应该如何设置外键约束?是否有更好的架构设计,因为储蓄和透支帐户 ID 可能会发生冲突。我正在使用 mysql btw :) 谢谢

4

2 回答 2

1

更好的模式设计是在交易表中有两个不同的列:一个引用储蓄账户表,另一个引用透支账户表。当然,这些列应该可以为空,并且只有其中一个会指向其他表中的实际行。但是通过这种设计,您可以强制执行参照完整性约束。

另一种选择是将两个帐户表合并为一个,特别是如果它们有许多相似的列。

于 2012-07-23T09:24:55.377 回答
0

您可以定义一个附加列ACCOUNT_TYPE并设置一个UNIQUE CONSTRAINT组合列FROM_ACCOUNTACCOUNT_TYPE列。您还可以添加 aCHECK CONSTRAINTACCOUNT_TYPE将其值限制为 1,2。

或者您为每个引用的表定义一列加上 aCHECK CONSTRAINT以确保您永远不会同时填充两者。

最后,考虑合并两个帐户表,如果它们之间没有太大区别的话。

于 2012-07-23T09:29:47.033 回答