首页 > 解决方案 > 识别 is-a 关系中的强实体和弱实体

问题描述

在下面的 ER 图中,我应该找出强实体和弱实体。 在此处输入图像描述

据我所知,只有 PERSON 和 INSURANCE_COMPANY 是强大的实体。

PATIENT 没有医生就不能存在(由于最小基数为 1),因此它是一个弱实体。同样,没有 DEPARTMENT,STAFF 就无法存在,反之亦然。因此,它们都是弱实体。由于 STAFF 很弱,它的所有子类型(SUPPORT_STAFF、NURSE、DOCTOR)也必须是弱实体,对吧?

我的理解是正确的还是我遗漏了什么?

标签: databasedatabase-designentity-relationshiperd

解决方案


弱实体集不是由存在依赖决定的。常规实体集可以完全参与关系,因此也存在对另一个实体集的依赖。

你需要看的是身份。常规实体集由它们自己的属性标识。弱实体集通常部分地由另一个实体集标识。

在您的图中,DEPARTMENT、PERSON、INSURANCE_POLICY 和 INSURANCE_COMPANY 是描述常规实体集的实体关系。这些表中的每一个都有简单的主键(Dept#、PersonID、Policy# 和 Co#,如果我解释正确的话,虽然没有指明 PK)。

其他表(STAFF、PATIENT、SUPPORT_STAFF、NURSE、DOCTOR)描述了 Person 的子类型。这些子类型是否是弱实体集是有争议的。Chen 的原始论文描述了常规实体集和弱实体集,但没有包含子类型的概念。子类型是子集,而不是单独的实体集。然而,弱实体集在扩展 ER 符号可用之前提供了一种表示子类型的方法(即没有弱键的弱实体集)。在支持子类型化的 EER 模型中,最好使用“弱实体集”来仅引用其主键由弱键和另一个实体集的键组成的实体集。这里的典型示例是行项目,通常由发票/收据编号和行号标识。

在原始 ER 模型中,我会说您有 4 个常规实体集,对应于 4 个实体关系 DEPARTMENT、PERSON、INSURANCE_POLICY 和 INSURANCE_COMPANY,以及 5 个弱实体集,对应于图中的 5 个子类型关系。但是,在具有不同子类型概念的 EER 模型中,我认为您有 4 个常规实体集而没有弱实体集。


推荐阅读