弱实体集

一张图讲解 弱实体集:
弱实体集_第1张图片

图的含义:

cook:实体集,厨师(假设每个厨师都有编号,可以认为是某个饭店内部的厨师集)
food :实体集,食物。有 名称name 和 第一次被制作的时间time 两个属性
cook_food : 联系集,哪个厨师做了哪个食物

弱实体集weak entity set

定义:

没有足够的属性以形成主码的实体集
解释:图中的food就是弱实体集,名称和第一次被制作的时间都不足以唯一确定一个元组,即没有主码。因为食物名称可能重合,制作时间也可能相同。

相对地,有主码的实体集称为强实体集strong entity set,如cook,主码为cook_id。

弱实体集与强实体集关联才有意义
这个强实体集被称为标识identifying属主实体集owner entity set
将弱实体集与标识实体集相联的联系称为标识性联系identifying relationship,在E-R图中用 双菱形 表示
我们称弱实体集存在依赖于标识实体集,标识实体集拥有弱实体集。

例如:图中cook_food为标识性联系
cook是标识实体集
food存在依赖于cook,cook拥有food。

分辨符discriminator(部分码)

弱实体集没有可以充当主码的属性,它用分辨符来区分属性集合。
在实体集中用 虚下划线 标识(图中蓝色虚线)

food的分辨符是由 name、time 组成。

为什么可以区别:对于一个厨师来说,时间和名称唯一标识了一个食物
(请不要钻牛角尖说同时做两个名字一样的菜,没意思)

弱实体集的主码

标识实体集的主码 + 分辨符
food的主码为{ cook_id, name , time }

你可能感兴趣的:(数据库)