首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >一对多数据库关系中的共享实体

一对多数据库关系中的共享实体
EN

Stack Overflow用户
提问于 2011-08-03 03:41:00
回答 1查看 188关注 0票数 1

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

我是否需要第二个contact表?我在试着让它变得尽可能的干燥。那会是什么样子?提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2011-08-03 15:46:15

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

从参与方到ContactMethod的1:M

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

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

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

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

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

  1. 整个层次结构的表
  2. 每个叶子子类型的表
  3. 每个类型的表

(1)如果您没有任何特定于角色的关系,则适用。(然而,我怀疑这不太可能;可能有与分销商相关的信息不适用于制造商,反之亦然)。

(2)表示来自Party的多个关系(即每个角色子类型对应一个关系)。

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

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

hth。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6917629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档