【发布时间】:2011-10-18 13:25:16
【问题描述】:
我有一个正在为其设计的数据库。我有制造商,我在不同的表格上有分销商,其中包含几乎相同的信息,几乎没有例外。两个组都有需要连接到他们的一对多联系人。我创建了一个联系人表来保存联系信息,一个!
我需要第二张联系表吗?我正试图让它尽可能干燥。那看起来怎么样?提前谢谢你
【问题讨论】:
标签: database uml relational-database dry
我有一个正在为其设计的数据库。我有制造商,我在不同的表格上有分销商,其中包含几乎相同的信息,几乎没有例外。两个组都有需要连接到他们的一对多联系人。我创建了一个联系人表来保存联系信息,一个!
我需要第二张联系表吗?我正试图让它尽可能干燥。那看起来怎么样?提前谢谢你
【问题讨论】:
标签: database uml relational-database dry
也许是party-role pattern 的案例? Manufacturer 和 Distributor 是缔约方扮演的角色。联系人适用于缔约方,而不是他们所扮演的角色。所以你有:
Party 的表
ContactMethod(或类似名称)的表这将解决对两个Contact 表的需求。如何对角色进行建模将取决于更广泛的需求。规范模型将具有:
Role 的单个超类型
(注意:顺便说一句,这也允许一方同时扮演制造商和分销商的角色——这可能相关也可能不相关)。
有 3 种“标准”模式可用于在关系表中实现子类型层次结构:
(1) 将适用。 (但我怀疑这不太可能;可能有与分销商相关的信息不适用于制造商,反之亦然)。
(2) 表示来自 Party 的多个关系(即每个角色子类型一个关系)。
(3) 避免了上述两种情况,但意味着从 Party 导航到其角色的额外加入。
就像我说的,选择取决于更广泛的需求。
第一次。
【讨论】: