我有一个我正在设计的数据库。我有制造商,我在不同的表格上有经销商,其中包含几乎相同的信息,几乎没有例外。两个组都有一个需要连接的联系人。我创建了一个联系表来保存联系信息,一个!
我需要第二张联系表吗?我想尽可能让它成为DRY。那怎么样?提前谢谢
答案 0 :(得分:1)
可能是party-role pattern的情况? Manufacturer
和Distributor
是缔约方发挥的作用。联系人适用于缔约方,而不是其所扮演的角色。所以你有:
Party
ContactMethod
(或类似)这将解决对两个Contact
表的需求。如何为角色方面建模将取决于更广泛的要求。规范模型将具有:
Role
(注意:除此之外,这也允许一方扮演制造商和经销商的角色 - 可能相关或不相关)。
在关系表中实现子类型层次结构有3种“标准”模式:
(1)。 (但我怀疑这不太可能;可能与分销商有关的信息不适用于制造商,反之亦然)。
(2)指来自Party的多个关系(即一个到每个角色子类型)。
(3)避免上述两种情况,但意味着从党派到其角色的额外加入。
就像我说的那样,选择取决于更广泛的要求。
第h