是否有可能/或有一个表格,如与不同实体相关的地址簿,例如:人员、公司等我正在考虑使用复合 FK(typeid = 实体类型 id,例如:1 代表人,2 代表公司等,而另一列是指实体表的 pk)。
我的另一个替代方法是在实体和地址簿表之间使用连接表。
我正在使用VS 2005 C#和sql server 2008
假设:您的实体都存储在一个带有类型鉴别器的表中
是的,一个外键可以有多个列。
address
条目只需要知道父entity
的PK它不需要知道entity
的类型:entityType
是entity
的属性,而不是address
接线台还是直FK?这取决于您的关系:
- 一个地址可以由多个实体共享吗?
-
一个实体可以有多个地址吗?
- 对两者都是:接线表
-
仅对 Q1 是:
address
PK 是entity
的属性。实体是 FK 中的子表 -
仅对 Q2 是:
entity
PK 是address
的属性。地址是 FK 中的子表
而我没想到的情况:
- 对两者都不:1:1 关系或您只需要一个表,
address
是entity
的属性
我认为不需要引用一个表或另一个表的类型和entity_id。这是一种复杂的方法(两个表使用相同的 ID 池,并且可能没有表的外键),以后可能会导致问题。
你的问题似乎很简单,这里不需要任何技巧。
你有公司、人员和地址。如果每个人和每个公司都有一个地址,则在"公司"和"人员"表中具有地址 ID。如果一个人可以有多个地址,则需要一个桥接表。每个公司有多个地址相同。就这样。