识别关系可以是一对一的吗?

问题描述 投票:0回答:1

我们以员工实体集为例。员工购买保险为一名受抚养人提供保险。我们希望存储家属的姓名和年龄。如果员工只能说出一名家属的名字,那么他们之间的关系在我们的数据库中将是一对一的。家属没有钥匙。我很困惑是否可以将依赖项建模为弱实体集,其相应的所有者实体集是员工,因为我读到识别关系应该是从所有者实体集到弱实体集的一对一。

database entity rdbms erd
1个回答
0
投票

是的,识别关系可以是一对一的:

弱实体是指不能仅通过其属性来唯一标识的实体。它依赖于所有者,并且只能通过与其所有者的识别关系来唯一标识。

但是,这并不意味着弱实体没有主键。所有实体都有一个身份,因此也有一个主键。对于弱实体,这仅意味着主键超出您的预期。

在实践中,拥有实体的主键必须包含在弱实体的主键中。可以考虑两种情况:

  • 拥有实体与弱实体具有一对多关系。在这种情况下,弱实体的主键是由所属实体的主键和弱实体的一个或多个属性组成的复合主键,该属性允许唯一区分与同一所有者相关的多个弱实体。示例:

                     1     N
    Purchase order ----<>---- Purchase order line 
    

    此处采购订单将具有主键

    id
    ,并且采购订单可能具有属性
    line_number
    ,用于唯一标识属于同一采购订单的行。该表的主键将由
    id
    line_number
    一起组成。

  • 拥有实体与弱实体具有一对一的关系。这是你的例子。因此,任何拥有实体都只有一个弱实体,因此不需要有属性来区分它们:弱实体将由所有者的主键唯一标识。

© www.soinside.com 2019 - 2024. All rights reserved.