如何在一列中的某些表之间建立关系?

时间:2014-03-22 21:37:43

标签: sql sql-server database relational-database

我想问你如何在一列中的某些表之间建立关系?

  • 任务表
  • 客户表
  • 合作伙伴表
  • 竞争对手表

任务表与(客户,合作伙伴和竞争对手)的关系,它有两列(RelatedBy,WhoRelatedBy)。

RelatedBy列表包含(客户,合作伙伴和竞争对手)

WhoRelatedBy有价值来确定记录的ID如下:

  • 当选择相关的客户时,WhoRelatedBy包含CustomerID
  • 当RelatedBy中的选定合作伙伴WhoRelatedBy包含PartnerID
  • 当选择RelatedBy中的参赛者时,WhoRelatedBy包含CompetitorID

怎么做?

1 个答案:

答案 0 :(得分:0)

两个表之间的数据库上的引用完整性关系是" static"。 创建关系时,它始终是相同的。表的所​​有id(使用CustomeId)必须包含在定义id的另一个表中。 您的CustomerID可以包含一个id,该ID引用三个不同表中的三个不同列。 由于id可能存在于表中而不存在于另一个表中,因此不能存在引用完整性关系。

如果您想要绝对的参照完整性关系,则必须有三个新表

TaskCustomer(IdTask, IdCustomer)
TaskPartners(IdTask, IdPartner) 
TaskCompetitors (IdTask, IdCompetitors)

这可能与任务和客户有关,因为例如TaskCustomer中的IdTask将存在于Task中。