【问题标题】:Shared Entity in one to many database relationship一对多数据库关系中的共享实体
【发布时间】:2011-10-18 13:25:16
【问题描述】:

我有一个正在为其设计的数据库。我有制造商,我在不同的表格上有分销商,其中包含几乎相同的信息,几乎没有例外。两个组都有需要连接到他们的一对多联系人。我创建了一个联系人表来保存联系信息,一个!

我需要第二张联系表吗?我正试图让它尽可能干燥。那看起来怎么样?提前谢谢你

【问题讨论】:

    标签: database uml relational-database dry


    【解决方案1】:

    也许是party-role pattern 的案例? ManufacturerDistributor 是缔约方扮演的角色。联系人适用于缔约方,而不是他们所扮演的角色。所以你有:

    • 名为Party 的表
    • 名为ContactMethod(或类似名称)的表
    • Party 到 ContactMethod 的 1:M 关系

    这将解决对两个Contact 表的需求。如何对角色进行建模将取决于更广泛的需求。规范模型将具有:

    • 名为Role 的单个超类型
    • 从方到角色的 M:M 关系
    • 每个特定角色(在您的情况下为分销商和制造商)的角色子类型。

    (注意:顺便说一句,这也允许一方同时扮演制造商和分销商的角色——这可能相关也可能不相关)。

    有 3 种“标准”模式可用于在关系表中实现子类型层次结构:

    1. 整个层次结构的表
    2. 每个叶子类型的表
    3. 每种类型的表
    如果您没有任何特定于角色的关系,

    (1) 将适用。 (但我怀疑这不太可能;可能有与分销商相关的信息不适用于制造商,反之亦然)。
    (2) 表示来自 Party 的多个关系(即每个角色子类型一个关系)。

    (3) 避免了上述两种情况,但意味着从 Party 导航到其角色的额外加入。

    就像我说的,选择取决于更广泛的需求。

    第一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多