将一个外键连接到多个表(主键)

时间:2017-01-30 19:39:01

标签: sql foreign-keys primary-key

我正在开发一个引用的应用程序。首先,您要进行成本分解(或计算),然后根据该结果将项目添加到报价中。问题是我有很多产品,所以产品的每个类别都有自己的成本分解形式,需要填写不同的参数。如果我只有一张表用于成本分解,那么它将是巨大的(很多表中的字段)。我觉得这不是正确的做法。所以我想出了下面的图表:

My diagram

这个解决方案是否可行,或者每个成本分解表必须有“N”(如果我有N表)不同的FK?你有更好的解决方案吗?

如果我的链接表“Quotation_QtnDetail”是必要的,我还有另一个问题吗?

1 个答案:

答案 0 :(得分:0)

通过使CalculationType列指示记录所在的表以及通用引用ID列(包含其中的ID),可以在其中一个表中存储对特定值的引用。相关记录)。例如,如果您存储的CalcId为123且CalculationType为2,则会指向Calc2表中ID为123的记录。

这样做的缺点是您将失去使用FK约束验证数据的能力,并且它还会使计算表的连接更复杂一些。

关于Quotation_QtnDetail表,除非QtnDetail记录可以链接到多个Quotation记录,否则不需要这个额外的链接表。相反,只需将QtnId列添加到QtnDetail表即可直接链接。同样,如果某个项目只链接到一个计算记录,您也可以删除Calc_QtnItm表。