主键和候选键之间的区别
内容
键是属性或一组属性,用于从表中访问元组,或者它们也用于构造两个表之间的关系。在本文中,我们将讨论主键和候选键以及它们之间的区别。主键和候选键都唯一标识关系或表中的元组。但是,区别它们的最重要一点是只能有一个 首要的关键 关系中。但是,可以有多个 候选键 关系中。
主键和候选键之间还有更多区别,我将在下面的比较表的帮助下进行讨论。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 首要的关键 | 候选键 |
---|---|---|
基本的 | 任何关系中只能有一个主键。 | 一个关系中可以有多个候选键。 |
空值 | 主键的任何属性都不能包含NULL值。 | 候选键的属性可以具有NULL值。 |
指定 | 为任何关系指定主键是可选的。 | 如果未指定候选键,则无法建立关系。 |
特征 | 主键描述了关系的最重要属性。 | 候选密钥表示可以符合主密钥资格的候选密钥。 |
反之亦然 | 主键是候选键。 | 但是每个候选键都可以是主键不是强制性的。 |
主键的定义
首要的关键 是将唯一标识关系中每个元组的一个或一组属性。只能有 一 每个关系的主键。必须注意主键应 决不 包含一个 空值 价值,并且必须具有 独特 关系中每个元组的值。主键属性的值必须为 静态的,即属性值永远不会或很少更改。
其中一个 候选键 有资格成为主键。的 规则 候选密钥必须符合成为主密钥的条件,即密钥值永远不应为 空值 而且一定是 独特 对于所有元组。
如果一个关系包含一个属性,该属性是某个其他关系的主键,则该属性被称为 外键.
建议在引入关系的其他属性之前先弄清关系的主键,因为主键唯一地标识每个元组。最好选择单个属性或少量属性作为主键,这样可以简化关系处理。
现在让我们看一个主键的例子。
学生{ID,名字,姓氏,年龄,地址}
在这里,我们将首先找出候选密钥。我想通了 二 候选键 {ID} 和 {名字,姓氏} 因为他们将在学生关系中唯一地标识每个学生。现在,我将在这里选择 ID 作为我的主键,因为有时可能会发生两个学生的名字和姓氏相同的情况,因此很容易用他的名字来追踪一个学生 ID.
候选键的定义
一种 候选键 是在关系中唯一定义一个元组的一个属性或一组属性。会有 超过一个 关系中的候选键。这些候选密钥是有资格成为主密钥的候选密钥。
尽管每个候选键都有资格成为主键,但是只能选择一个作为主键。候选键成为主键所需的规则是该键的属性值永远不能为 空值 在密钥的任何域中,必须是 独特 和 静态的.
如果所有候选键都符合主键的资格,那么经验丰富的 数据库管理员 必须做出决定以找出主键。没有候选键,就不可能有关系。
让我们通过示例来了解候选键。如果我们在“学生关系”中添加更多属性,我上面已经讨论过。
学生{ID,名字,姓氏,年龄,地址,DOB,部门名称}
在这里我可以弄清楚 二 候选键是 {ID}, {名字,姓氏,DOB}。因此,您可以理解候选键是唯一标识关系中元组的键。
- 区分主键和候选键的基本点是,架构中的任何关系只能有一个主键。但是,单个关系可以有多个候选键。
- 主键下的属性永远不能包含NULL值,因为主键的主要功能是唯一地标识相关记录。甚至主键也可以用作其他关系中的外键,因此它一定不能为NULL,以便引用关系可以在引用关系中找到元组。除非属性约束指定为非null,否则候选键可以为NULL。
- 指定主键是可选的,但是没有候选键就不能存在关系。
- 主键描述了关系的唯一且最重要的属性,而候选键提供了可以从中选择一个作为主键的候选。
- 每个主键都是候选键,反之亦然。
结论:
关系指定主键是可选的。另一方面,如果要声明一个关系,则在该关系中必须存在候选关键字才能构建良好的关系。