【问题标题】:ER-Diagram: Ternary Relationship - How to read properly?ER-图:三元关系 - 如何正确阅读?
【发布时间】:2013-08-24 07:45:45
【问题描述】:

我不太清楚如何阅读 ER-Diagram 中的三元关系。 可以说这是给出的三元关系。 我能从中解释什么?

它说你必须把你的手放在 2 个实体集上,然后像这样阅读它。

实际帐户和用户: 一对 Account 和 User 可以关联 M 个项目。

实际帐户和项目: 一对 Account 和 Project 可以关联 M 个用户。

动手项目和用户: 一对项目和用户可以与一个帐户关联。

这些对总是一对一的关系还是可以有多少对?

【问题讨论】:

    标签: model entity-relationship relationship ternary


    【解决方案1】:

    迟到的答案,但可能会为未来的读者服务。

    假设三元关系包含参与实体 A、B 和 C(对于度数 > 3,它变得非常复杂)。

    解读关系的方法是始终从 3 个参与实体中分离出 2 个,并查看它们与第三个实体的关系。您需要对所有可能的配对都这样做。

    更准确地说:您每次配对的 2 个实体都需要被视为其中每个实体的“一个”,而要回答的问题是第三个实体中的“有多少”可以对应于这一对。

    抽象例子

    "One of A and one of B can {have/associate with/belong to} X? of C"。我们需要利用我们对业务模型的了解来回答X? 应该是1 还是N。这是在连接三元关系与实体C 的边上分配给三元关系的基数。

    必须为所有可能的组合(不是排列,因为配对的顺序无关紧要)重新修改这个短语。因此,要回答How many pairs are there? 的问题,简单的数学表明将 3 个事物组合成 2 个一组的可能方法是:

    3!/(2!*(3-2)!) = 3

    因此,使用我们的业务模型可以回答的所有可能短语是:

    • One of A and one of B can {have/associate with/belong to} ?X? of C
    • One of A and one of C can {have/associate with/belong to} ?Y? of B
    • One of B and one of C can {have/associate with/belong to} ?Z? of A

    具体例子

    我借用我找到的这张图片online

    导致此图像的我们的商业模式的现实是:

    • 1 Physician with 1 specific Patient can log M Treatments
    • 1 Physician logs 1 specific Treatment for N Patients
    • 1 Patient is logged 1 specific Treatment by 1 Physician

    所以三元关系log是参与实体Treatment-Patient-Physician之间的M-N-1关系(按此顺序)。

    【讨论】:

    • 解释得很清楚,谢谢。对于那些对 m 和 n 之间的可互换性感到困惑的人来说,它们是同一个概念的不同变量名称:对象的数量。
    • 在考虑配对时,我们应该考虑实际关联的配对还是任何配对?具体来说,我们应该将“一位医生与一位他们治疗过的患者……”配对还是“一位医师与一位患者(在数据库中)……”?
    【解决方案2】:

    这很可能是一个层次结构,这意味着有很多帐户和很多用户。这也意味着帐户小于或等于用户。这意味着更多的用户要记账。我很可能使用三元数据结构和尝试。

    【讨论】:

      【解决方案3】:

      另一个迟到的答案,但可能会为未来的读者服务。但是,是的,你是正确的@user2276094。

      正如您所提到的,三元关系中的多重性是通过将一个实体(目标实体)与其他 2 个实体隔离开来,并将目标实体(例如员工)与其他 2 个单一事件的固定对关联起来的实体(比如客户和分支机构)。

      因此,您可以将关系中的这些多重性(如分支机构的员工注册客户)表述为,

      对于固定的员工事件和分支事件,可能有也可能没有客户(因为有些员工可能没有注册客户,他们可能参与其他职责)。

      对于固定对的 Branch 事件和 Client 事件,必须只有一个 Staff(因为一个 Client 只能由一个且唯一的 Staff 注册一次)。

      对于固定对的 Staff 事件和 Client 事件,必须只有一个(假设 Client 只能在一个分支上注册)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-29
        • 2017-10-29
        • 1970-01-01
        • 2014-01-09
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多