如何识别 ERD 上的强弱关系?

Posted

技术标签:

【中文标题】如何识别 ERD 上的强弱关系?【英文标题】:How to identify a strong vs weak relationship on ERD? 【发布时间】:2013-05-16 12:32:36 【问题描述】:

虚线表示关系强,实线表示关系弱。在下图中,我们如何确定RoomClass 实体之间的关系很强。是因为Room 实体有一个常规键(非复合键)吗?

【问题讨论】:

【参考方案1】:

    弱(非识别)关系

    实体独立于其他实体存在

    Child 的 PK 不包含 Parent Entity 的 PK 组件

    强(识别)关系

    子实体依赖于父实体的存在

    子实体的 PK 包含父实体的 PK 组件

    通常使用复合键作为主键,这意味着该复合键组件之一必须是父实体的主键。

【讨论】:

如果子实体存在依赖于父实体但子实体的 PK 不包含父实体的 PK 组件怎么办。例如:订单和收据 - 收据依赖于订单,但收据不包含父实体的 PK 组件。是强关系还是弱关系?【参考方案2】:

我们画一条实线当且仅当我们有一个ID依赖关系;否则它将是一条虚线

考虑一个弱但不依赖于 ID 的关系;我们画了一条虚线,因为它是一个弱关系。

【讨论】:

【参考方案3】:

RoomClass 的关系被认为是(不可识别),因为实体 Class 的主键组件 CIDDATE 不包含主键实体 Room 的键 RID(在这种情况下,Room 实体的主键是单个组件,但即使是复合键,它的一个组件也满足条件)。

但是,例如,在关系 ClassClass_Ins 的情况下,我们看到这是一个(识别)关系,因为主键组件 EmpIDCIDClass_InsDATE 包含主键Class 的一个组件(在这种情况下,它包含CIDDATE 两个组件)。

【讨论】:

【参考方案4】:

在ER图中,我相信当关系很强时,即父实体的primary_key在子实体中形成复合或非复合primary_key,我们使用实线来描述。同样,对于关系较弱的情况,即父实体的primary_key在子实体中没有作为primary_key,我们用虚线表示。

【讨论】:

【参考方案5】:

在实体关系建模中,实线代表强关系,虚线代表弱关系。

【讨论】:

以上是关于如何识别 ERD 上的强弱关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ERD 中表示多对多关系

「数据架构」什么是实体关系图(ERD)?

ERD图中的继承关系

ERD 关系基数 - 反向放置符号会更好吗?

多关系 ERD 和 SQL 建模

如何处理 ERD(表)设计中的“或”关系?