是否有可能/或良好做法使一个表像地址簿与不同的实体相关,例如:人,公司等 我正在考虑使用compsite FK(typeid =实体类型id,例如:1代表人,2代表公司等,而另一列代表实体表的pk)。
我的另一个选择是使用实体和地址簿表之间的联结表。
我正在使用VS 2005 C#和sql server 2008
答案 0 :(得分:0)
假设:您的实体都存储在一个带有类型鉴别器的表中
是的,外键可以有多个列。
address
条目只需要知道父entity
的PK
它不需要知道entity
的类型:entityType
是entity
的属性,而不是address
接线表还是直接FK?这取决于你的关系:
一个实体可以有多个地址吗?
address
PK是entity
的属性。实体是FK中的子表entity
PK是address
的属性。地址是FK中的子表我不指望的情况:
address
属于entity
答案 1 :(得分:0)
我认为不需要引用一个表或另一个表的类型和entity_id。这是一种复杂的方法(两个表使用相同的ID池,并且没有可能的表的外键),这可能会在以后引起问题。
你的问题似乎很简单,这里不需要任何技巧。
您有公司,人员和地址。如果每个人和每个公司都有一个地址,那么您在公司和个人表中都有地址ID。如果一个人可以拥有多个地址,则需要一个桥接表。每个公司有多个地址相同。就是这样。