2016-08-02 53 views
0

enter image description here外键进行PK在第三

嗨,账表可从SA & CA表得到其值的字段SA和CA是在帐目表的FK的约束?

逻辑要求我这样做,而不是相反。即不首先将帐户建立为超级用户,然后从那里创建另外两个帐户。

谢谢。

回答

1

没有继承的概念supertable正如你所建议的。这不是一个面向对象。因此,使用外键约束创建表并手动插入数据。

外键值可以为NULL。虽然通常不是一个好主意。您可能需要使用type列将表格从3折叠到2或1。

您可能希望没有帐户表。除复制信息外,甚至还有其目的。当然,它可以处理更多的粒度,但不要用不必要的表格填充设计。

如果您坚持要单独存储和检查表以及一个Accounts表,那么用FK's取消Accounts表的唯一方法就是使用NULLS。而且,如前所述,这不被推荐。之所以?这就像是说它必须是这些 ...之一,除非我不在乎。我们应该关心我们的数据。

抵制FK的冲动NULL。实现这一目标的一种方法是创建一个帐户表,并在其他表上加入,只知道其中一些会成功。 A Conditional Join。通过LEFT JOIN实现。

+0

>使用FK的帐户表的唯一方法是使用NULLS您是否应该允许Accounts字段为NULL,以使两个FK可以工作? – Ajoo

+0

是的,这就是我的意思。无论如何,什么样的FK?黑客和可耻的人!抵制冲动!我的意思是,总是一个坏设计的标志。 – Drew

+0

只是想尝试一次,看看它是否工作。那么请建议我怎样才能达到我想要的。即从储蓄表和经常账户表创建账户表(即使存在复制数据的风险)。谢谢 – Ajoo