我有一个数据库,我正在为它设计。我有制造商,我有分销商,在不同的表中包含几乎相同的信息,几乎没有例外。两个组都有一对多的联系人需要连接到它们。我创建了一个contact表来保存联系信息,一!
我是否需要第二个contact表?我在试着让它变得尽可能的干燥。那会是什么样子?提前谢谢你
发布于 2011-08-03 07:46:15
也许是party-role pattern的案例?Manufacturer
和Distributor
是由各方扮演的角色。联系人适用于各方,而不是他们所扮演的角色。所以你会有:
从参与方到ContactMethod的1:M
Party
的表ContactMethod
(或类似)的表这将解决对两个Contact
表的需求。如何对角色端进行建模将取决于更广泛的需求。规范模型将具有:
Role
的超类型(注意:顺便说一句,这也允许一方同时扮演制造商和分销商的角色-这可能是相关的,也可能是不相关的)。
在关系表中实现子类型层次结构有 3 种“标准”模式:
(1)如果您没有任何特定于角色的关系,则适用。(然而,我怀疑这不太可能;可能有与分销商相关的信息不适用于制造商,反之亦然)。
(2)表示来自Party的多个关系(即每个角色子类型对应一个关系)。
(3)避免了以上两种情况,但意味着在从Party导航到其角色时需要额外加入。
就像我说的,选择取决于更广泛的要求。
hth。
https://stackoverflow.com/questions/6917629
复制