【问题标题】:How do I model this ERD?我如何为这个 ERD 建模?
【发布时间】:2014-10-31 22:57:15
【问题描述】:

作业:

我的教科书中有一个作业,但直到我的课程的下一课我才能找到答案。他们给了我一个关于业务规则的故事,我必须创建一个完整的 ERD。我已经弄清楚了以下关系。

如您所见,一个病人住在一个​​或多个房间里,而一个房间里有 0 个或多个病人。

业务规则:

The nurses have to track in what room the patient resides and in what rooms the patient has been before. It's possible for a patient to move rooms.

问题:

由于存在n:m 关系,所以当中间表(或子表/派生表)发挥作用时,我将不得不使用什么基数有点困惑。有人可以解释我将在下图中使用哪些符号(乌鸦脚符号)吗? 为什么

注意我添加了中间表,并根据业务规则添加了到达和离开日期。

编辑: 上图是错误的,房间代码不是主键,因为病人只能同时住在一个房间里。

【问题讨论】:

    标签: database-design


    【解决方案1】:

    您的图表应该看起来像这样(马丁符号)

    用于解析多对多关系的交集表总是有乌鸦脚,因为交集表包含逻辑 M:N 关系中的表的外键。

    您可以这样想:从每个表中,“向下”/“沿”看相交表的关系,并以 M:N 关系的逻辑基数查看它。例如,ROOM “看到”了许多患者(随着时间的推移,如果它不是私人房间,则一次),因此 ROOM/PLACE 关系远端的基数是很多。您可以以相同的方式查看此关系以确定可选性。房间可以是空的,因此 PLACE/ROOM 关系的基数是一比零或更多

    对于患者来说,情况要复杂一些。您是否有未入院患者的病历?一旦他们被录取,他们就可以在不同的时间进入不同的房间,这样对于患者来说也可以一对零或更多。另一方面,如果患者仅存在于被允许进入房间的情况下,那么它将是一对一个或更多,但这听起来不像是实际/现实世界的业务统治我。

    【讨论】:

    • 嗨乔尔,非常感谢您的帮助。如果我们假装病人不用呆在房间里就可以入院,我的第一个图和你的图实际上是同一回事,只是你的图稍微详细一些。你会说他们都是ERD吗?或者您可以单独引用它们吗?如果是这样,你会给他们起什么名字?此外,我注意到当您引入中间子表时,关系保持不变,除了父表(患者和房间)在它们附近有一个 | (1) 符号。 n:n 关系总是这样吗?
    • @user1534664 - 两个图都是 ERD。它们使用的图形约定略有不同,但最重要的区别是您的可能被称为 conceptual,因为它侧重于实体类型并在非常高的层次上表示关系。我的 ERD 可能被称为 logical,因为它深入到概念级别以显示如何表示概念。当您将交集表显示为 M:N 的实现时,它将始终*有两个 1:M 关系指向 M:N 关系中的实体。 (*=总是这个词太强了。)
    • 当你有一个 | 时,我认为这意味着你有一个基数和一个可选性 1?
    • 在 Martin 图形约定中,| 表示一,|O 表示零或一。有时恰好一个由两行表示:||,但我只在教科书中看到过,而不是在实践中看到过。请参阅此处了解不同的图形约定:en.wikipedia.org/wiki/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多