如何识别 ERD 上的强弱关系?
Posted
技术标签:
【中文标题】如何识别 ERD 上的强弱关系?【英文标题】:How to identify a strong vs weak relationship on ERD? 【发布时间】:2013-05-16 12:32:36 【问题描述】:虚线表示关系强,实线表示关系弱。在下图中,我们如何确定Room
和Class
实体之间的关系很强。是因为Room
实体有一个常规键(非复合键)吗?
【问题讨论】:
【参考方案1】:弱(非识别)关系
实体独立于其他实体存在
Child 的 PK 不包含 Parent Entity 的 PK 组件
强(识别)关系
子实体依赖于父实体的存在
子实体的 PK 包含父实体的 PK 组件
通常使用复合键作为主键,这意味着该复合键组件之一必须是父实体的主键。
【讨论】:
如果子实体存在依赖于父实体但子实体的 PK 不包含父实体的 PK 组件怎么办。例如:订单和收据 - 收据依赖于订单,但收据不包含父实体的 PK 组件。是强关系还是弱关系?【参考方案2】:我们画一条实线当且仅当我们有一个ID依赖关系;否则它将是一条虚线。
考虑一个弱但不依赖于 ID 的关系;我们画了一条虚线,因为它是一个弱关系。
【讨论】:
【参考方案3】:Room
到 Class
的关系被认为是弱(不可识别),因为实体 Class
的主键组件 CID
和 DATE
不包含主键实体 Room
的键 RID
(在这种情况下,Room 实体的主键是单个组件,但即使是复合键,它的一个组件也满足条件)。
但是,例如,在关系 Class
和 Class_Ins
的情况下,我们看到这是一个强(识别)关系,因为主键组件 EmpID
和 CID
和Class_Ins
的DATE
包含主键Class
的一个组件(在这种情况下,它包含CID
和DATE
两个组件)。
【讨论】:
【参考方案4】:在ER图中,我相信当关系很强时,即父实体的primary_key在子实体中形成复合或非复合primary_key,我们使用实线来描述。同样,对于关系较弱的情况,即父实体的primary_key在子实体中没有作为primary_key,我们用虚线表示。
【讨论】:
【参考方案5】:在实体关系建模中,实线代表强关系,虚线代表弱关系。
【讨论】:
以上是关于如何识别 ERD 上的强弱关系?的主要内容,如果未能解决你的问题,请参考以下文章