如果我有2个帐户表:保存帐户和透支帐户,然后我有表格事务,其中“from_account”列只能具有等于保存帐户ID或透支帐户ID的值,我该如何设置外国关键约束?是否有更好的架构设计,因为保存和透支帐户ID可能会发生冲突。 我用mysql btw :) 感谢名单
答案 0 :(得分:1)
更好的架构设计是在事务表中有两个不同的列:一个引用保存帐户表,另一个引用透支帐户表。当然,这些列应该是可空的,并且只有其中一列指向其他表中的实际行。但是使用此设计,您可以强制执行参照完整性约束。
另一种选择是将两个帐户表合并为一个,特别是如果它们有许多相似的列。
答案 1 :(得分:0)
您可以定义其他列ACCOUNT_TYPE
并设置UNIQUE CONSTRAINT
和FROM_ACCOUNT
列的ACCOUNT_TYPE
。您还可以向CHECK CONSTRAINT
添加ACCOUNT_TYPE
,将其值限制为1,2。
或者您为每个引用的表格加上CHECK CONSTRAINT
定义一列,以确保您不会同时填充这两个列。
最后,考虑合并两个帐户表,如果它们之间没有太大差异。