弱实体mysql_mysql – 弱实体的数据库建模

弱实体是依赖于其他实体存在的,其标识关系意味着父实体的主键成为子实体主键的一部分。在讨论中,区分了弱实体与不能独立识别但能独立存在的实体。文章探讨了一个例子,指出当orderID与historyLineID结合使用时,可能形成了一个弱实体关系。同时提出了两种设计选择:复合主键或代理主键,并强调了在3NF中正确识别实体的重要性。
摘要由CSDN通过智能技术生成

一个实体并不弱,因为它不能独立存在,而是因为它无法独立识别.因此,“引导”到弱实体的关系称为“识别”关系.在实践中,这意味着父母的主键被迁移到子PK的子集(通常是

proper)中(术语“弱实体”通常与主键相关地定义,但理论上它可以应用于任何键).

拥有一个不能独立存在的实体是完全合法的,但可以独立识别 – 换句话说,就是与非NULL的非识别关系.

您必须要问:historyLineID可以单独使用,还是与orderID结合使用?我怀疑后者就是这种情况,这会使它成为一个弱势实体.

Is this really a correct weak entity relationship?

你告诉我们的不是一个弱实体 – 父母的PK不会迁移到孩子的PK中.

Is there other ways to identify them?

你基本上有两个选择:

> orderHistory有一个复合PK:{orderID,historyLineID},其中orderID是FK.顺便说一句,这个PK可以被认为是“自然的”:

> orderHistory有一个代理PK:{orderHistoryID},而orderID在PK之外.您仍然需要备用密钥{orderID,historyLineID}:

Should I add the PK of table order to table orderHistory and make it a composite primary key?

是的,这是上面描述的第一个选项.除非你在orderHistory本身有子关系,否则这也是最好的解决方案.如果orderHistory确实有孩子,那么这可能是也可能不是最佳解决方案,具体取决于几个因素.

What if I decide to model this as a normal One-To-Many relati

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值