将两个外键放入一列中

时间:2011-10-11 04:59:51

标签: sql-server-2008 polymorphic-associations

我在创建一个包含两个外键关系的列的表时遇到问题。让我详细解释一下。

我有三张桌子:

  • Table A - 列ID (primary key), Name
  • Table B - 列ID (primary key), Name
  • Table C - 列ID, Name, Detail

C.Detail中,我必须存储来自其他表(A.ID和B.ID)的数据。所以我尝试在列C.Detail中添加两个外键。在Table B中的插入操作期间,发生以下错误,并且在尝试将数据插入Table A时出现相同的错误消息。

  

“INSERT语句与FOREIGN KEY约束冲突   “FK_C_A”。冲突发生在数据库“X”,表“dbo.A”,列中   A.ID“。

拜托,有人可以帮助我们纠正这个问题吗?我们不想在table C中为两个外键添加两列。

希望等待回复。

2 个答案:

答案 0 :(得分:1)

我建议在表C中引入两个新列(即AID和BID)。 在此新闻列上创建Foregin密钥。

答案 1 :(得分:0)

我可能错了,但我认为这样做的方法是为A和B创建一个“父”表,其中包含A_B_parent.id(primary_key),然后让A和B都有外键。 id到父表。然后C也可以拥有父表的外键。

这显然最终变得非常复杂,所以更好的解决方案可能只是以编程方式强制执行约束而不是使用外键然后对表进行注释。