【问题标题】:Can one primary key be null when one entity has composite primary keys?当一个实体具有复合主键时,一个主键可以为空吗?
【发布时间】:2022-01-27 14:41:33
【问题描述】:
例如;
“图书馆必须跟踪每本书的状态、位置、书名、第一作者以及损失和延迟归还的价格(成本)。图书将由其 ISBN 标识。为了允许多份同一本书,每本书都有一个唯一的 ID 号"
因此,在上述情况下,我得到 ISBN 和唯一 ID 是“Book”实体的复合主键。如果一本书有多个副本,则考虑唯一 ID。每当一本书没有多个副本时,就不会考虑唯一 ID。那么,唯一ID可以为空吗?
【问题讨论】:
标签:
mysql
mysql-workbench
entity-relationship
【解决方案1】:
- 主键不能为空;这只是定义的一部分。
- 一张表可以有多个“候选键”,但只能指定一个作为主键;这就是本文中“主要”的含义。
- null 和重复值是完全不同的事情; null 表示“我不知道值”,或“此列不适用于此行”,或类似的想法。
- 说一列有时是唯一的,有时是没有意义的。唯一意味着每个可能的行都有不同的值。
您可能试图描述的是这样一种情况:ISBN AND 和标识符的组合对于每一行都是唯一的,但每行都不是唯一的。在这种情况下,您有一个“复合键”——由多个列组成 的单个键。为了用作主键,该复合键不能包含空值;但这没关系,只需为每本书的第一个副本分配 0 或 1 值即可。
该要求的另一种解释是标识符列独立是唯一的,并且独立于 ISBN。在这种情况下,它永远不会有空值,并且适合作为自己的主键。