绑定到复合FK

时间:2014-12-12 08:24:39

标签: c# database-design data-modeling

是否有可能/或良好做法使一个表像地址簿与不同的实体相关,例如:人,公司等 我正在考虑使用compsite FK(typeid =实体类型id,例如:1代表人,2代表公司等,而另一列代表实体表的pk)。

我的另一个选择是使用实体和地址簿表之间的联结表。

我正在使用VS 2005 C#和sql server 2008

2 个答案:

答案 0 :(得分:0)

假设:您的实体都存储在一个带有类型鉴别器的表中

是的,外键可以有多个列。

address条目只需要知道父entity的PK 它不需要知道entity的类型:entityTypeentity的属性,而不是address

接线表还是直接FK?这取决于你的关系:

  1. 一个地址可以由多个实体共享吗?
  2. 一个实体可以有多个地址吗?

    • 两者:联结表
    • 是Q1 address PK是entity的属性。实体是FK中的子表
    • 是Q2 entity PK是address的属性。地址是FK中的子表
  3. 我不指望的情况:

    • 两者:1:1关系,或者您只需要一个表格,address属于entity

答案 1 :(得分:0)

我认为不需要引用一个表或另一个表的类型和entity_id。这是一种复杂的方法(两个表使用相同的ID池,并且没有可能的表的外键),这可能会在以后引起问题。

你的问题似乎很简单,这里不需要任何技巧。

您有公司,人员和地址。如果每个人和每个公司都有一个地址,那么您在公司和个人表中都有地址ID。如果一个人可以拥有多个地址,则需要一个桥接表。每个公司有多个地址相同。就是这样。