MySQL:1列指的是2个不同的表

时间:2012-07-23 09:17:10

标签: mysql database-design

如果我有2个帐户表:保存帐户和透支帐户,然后我有表格事务,其中“from_account”列只能具有等于保存帐户ID或透支帐户ID的值,我该如何设置外国关键约束?是否有更好的架构设计,因为保存和透支帐户ID可能会发生冲突。 我用mysql btw :) 感谢名单

2 个答案:

答案 0 :(得分:1)

更好的架构设计是在事务表中有两个不同的列:一个引用保存帐户表,另一个引用透支帐户表。当然,这些列应该是可空的,并且只有其中一列指向其他表中的实际行。但是使用此设计,您可以强制执行参照完整性约束。

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

答案 1 :(得分:0)

您可以定义其他列ACCOUNT_TYPE并设置UNIQUE CONSTRAINTFROM_ACCOUNT列的ACCOUNT_TYPE。您还可以向CHECK CONSTRAINT添加ACCOUNT_TYPE,将其值限制为1,2。

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

最后,考虑合并两个帐户表,如果它们之间没有太大差异。