同一表列需要两个外键条件

时间:2014-01-17 01:41:08

标签: sql sql-server database foreign-key-relationship

ERD

我附上了旧数据库的简单图表。

在此设计中

  • TP 表示的两个表 T P 之间存在多对多关系。
  • 关系表 TP 与表 D
  • 具有一对多的关系

现在,要求有一些变化, T 本身可能有很多( D )s。

除了旧的 TP D 之外,如何在表 D 中创建这些新的外键条件。

我的意思是,除了链接 TP之外,是否可以将 T. [Id] D. [T] 相关联。[T,P ] D. [T,P]

如何解决我的新要求?

3 个答案:

答案 0 :(得分:0)

是的,您可以将表T中的外键引用放入表D.它将是一对多的关系,就像表T到表TP的关系一样。

我不明白你为什么要在表D中对表T进行FK引用。目前,您可以将T连接到TP到D以获取表D中与表T中的行相关的行。

答案 1 :(得分:0)

这似乎很简单。只需在链接到T的D中添加一个新列。请注意,如果我这样做,则来自D. [T,P]的T可能与来自D的T不同。[T]

答案 2 :(得分:0)

我通过以下方式解决了这个问题:

  • 使 D. [T] Nullable。
  • 将新的外键约束添加到表 D T. [Id] D. [T] )。

现在,

如果将新行插入 D 表,以便 P 组件值设置为 NULL ,则只需将 T约束为将检查D

如果新行的 P 组件设置为值延迟 NULL ,则两个约束 T到D 将检查TP到D