主键和候选键之间的区别

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 10 可能 2024
Anonim
关系模型Relational Model,主键Primary Key,外键Foreign Key【关系数据库SQL教程2】
视频: 关系模型Relational Model,主键Primary Key,外键Foreign Key【关系数据库SQL教程2】

内容


键是属性或一组属性,用于从表中访问元组,或者它们也用于构造两个表之间的关系。在本文中,我们将讨论主键和候选键以及它们之间的区别。主键和候选键都唯一标识关系或表中的元组。但是,区别它们的最重要一点是只能有一个 首要的关键 关系中。但是,可以有多个 候选键 关系中。

主键和候选键之间还有更多区别,我将在下面的比较表的帮助下进行讨论。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础首要的关键候选键
基本的任何关系中只能有一个主键。一个关系中可以有多个候选键。
空值主键的任何属性都不能包含NULL值。候选键的属性可以具有NULL值。
指定为任何关系指定主键是可选的。如果未指定候选键,则无法建立关系。
特征主键描述了关系的最重要属性。候选密钥表示可以符合主密钥资格的候选密钥。
反之亦然主键是候选键。但是每个候选键都可以是主键不是强制性的。

主键的定义

首要的关键 是将唯一标识关系中每个元组的一个或一组属性。只能有 每个关系的主键。必须注意主键应 决不 包含一个 空值 价值,并且必须具有 独特 关系中每个元组的值。主键属性的值必须为 静态的,即属性值永远不会或很少更改。


其中一个 候选键 有资格成为主键。的 规则 候选密钥必须符合成为主密钥的条件,即密钥值永远不应为 空值 而且一定是 独特 对于所有元组。

如果一个关系包含一个属性,该属性是某个其他关系的主键,则该属性被称为 外键.

建议在引入关系的其他属性之前先弄清关系的主键,因为主键唯一地标识每个元组。最好选择单个属性或少量属性作为主键,这样可以简化关系处理。

现在让我们看一个主键的例子。

学生{ID,名字,姓氏,年龄,地址}

在这里,我们将首先找出候选密钥。我想通了 候选键 {ID}{名字,姓氏} 因为他们将在学生关系中唯一地标识每个学生。现在,我将在这里选择 ID 作为我的主键,因为有时可能会发生两个学生的名字和姓氏相同的情况,因此很容易用他的名字来追踪一个学生 ID.

候选键的定义

一种 候选键 是在关系中唯一定义一个元组的一个属性或一组属性。会有 超过一个 关系中的候选键。这些候选密钥是有资格成为主密钥的候选密钥。

尽管每个候选键都有资格成为主键,但是只能选择一个作为主键。候选键成为主键所需的规则是该键的属性值永远不能为 空值 在密钥的任何域中,必须是 独特静态的.

如果所有候选键都符合主键的资格,那么经验丰富的 数据库管理员 必须做出决定以找出主键。没有候选键,就不可能有关系。

让我们通过示例来了解候选键。如果我们在“学生关系”中添加更多属性,我上面已经讨论过。

学生{ID,名字,姓氏,年龄,地址,DOB,部门名称}

在这里我可以弄清楚 候选键是 {ID}, {名字,姓氏,DOB}。因此,您可以理解候选键是唯一标识关系中元组的键。


  1. 区分主键和候选键的基本点是,架构中的任何关系只能有一个主键。但是,单个关系可以有多个候选键。
  2. 主键下的属性永远不能包含NULL值,因为主键的主要功能是唯一地标识相关记录。甚至主键也可以用作其他关系中的外键,因此它一定不能为NULL,以便引用关系可以在引用关系中找到元组。除非属性约束指定为非null,否则候选键可以为NULL。
  3. 指定主键是可选的,但是没有候选键就不能存在关系。
  4. 主键描述了关系的唯一且最重要的属性,而候选键提供了可以从中选择一个作为主键的候选。
  5. 每个主键都是候选键,反之亦然。

结论:

关系指定主键是可选的。另一方面,如果要声明一个关系,则在该关系中必须存在候选关键字才能构建良好的关系。