DBMS中主键和外键之间的区别

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

内容


键是DBMS的关键部分,它们用于标识和建立模式中的表之间的关系。现在,今天我们将讨论DBMS的两个非常重要的密钥,即主键和外键,并且还将讨论主键和外键之间的区别。顺便说一句,我要告诉您主键和外键之间的基本区别,即主键是数据库设计人员选择的候选键之一,而外键是指另一个关系的主键的键。

两者之间还有许多其他差异,让我们借助下面显示的比较表来识别这些差异。

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

比较表

比较基础首要的关键外键
基本的主键是一个选定的候选键,它唯一地定义了关系中的元组。表中的外键是指其他表的主键。
空值主键值永远不能为NULL。外键接受NULL值。
重复关系中没有两个元组携带主键属性的重复值。元组可以携带外键属性的重复值。
范围关系只能有一个主键。一个关系中可以有多个外键。
临时表可以在临时表上定义主键约束。不能在临时表上定义外键约束。
聚集索引默认情况下,主键是聚集索引的。外键不会自动聚簇索引;它必须手动完成。
插入即使引用的外键的列中没有该值,也可以将其插入主键属性。如果所引用的主键列中没有该值,则无法将其插入到外键中。
删除中在删除主键值之前,请确保该值在引用表的引用外键列中仍然不存在。您可以从外键列中删除一个值,而不必理会该值是否存在于引用关系的被引用主键列中。


主键的定义

主键 独特地 在关系中定义元组。它可以是关系中的单个属性,也可以是关系中的一组属性。主键属性的值应 从未或很少改变。因为它是主体,所以意味着要标识数据库中的任何记录。主键的任何属性值更改都会造成混乱。

数据库设计者选择以下一种 候选键 作为主键,需要考虑一些要点。首先要考虑的是主键属性值不能包含 空值 值。因为,如果主键属性值包含NULL,则意味着我们无法在表中标识该记录。它还违反了实体完整性约束。第二个考虑是 没有两个元组 在一个表中可以包含 相同 主键属性的值,因为它会违反元组之间的唯一性。

只能有 一个主键 对于任何 关系。默认情况下,主键是 聚簇索引,这意味着将根据主键属性值对表中的所有元组进行排序。主键约束可以在 临时表。在查询执行期间创建的中间表称为临时表。

删除中 关系中的一个元组,必须注意删除的元组的主键值仍不存在于引用关系的外键列中。而 插入 对主键没有任何限制。

一个表的主键在其他表中使用时,它将成为该表的外键。外键约束在下面讨论。

外键的定义

当一个关系 R1在其属性中有一个 其他关系 R2,则该属性称为 外键 为了关系 R1。关系 R1 包含外键的称为 引用关系 因为它指关系R2和关系的主键 R2 叫做 引用关系.
与主键不同,外键可以接受 空值 值,因为它没有在关系中清楚地标识记录的任务,因为我们对此具有主键。同样,外键也接受 重复值.


关系可以有 外键,因为它可以具有不同的属性,它们是不同关系中的主键。外键约束可以 在上定义 临时表, 也不 外键是 聚簇索引 属性。

插入 引用关系的外键列中的值,请确保插入值必须存在于引用关系的主键列中。鉴于 删除中 外键列中的值。

  1. 主键是一组属性/候选键,用于明确标识关系中的记录。但是,表中的外键是指另一个表的主键。
  2. 主键属性不能包含NULL值,而外键属性可以接受NULL值。
  3. 主键应具有唯一的属性值,而外键可能具有重复的属性值。
  4. 一个关系中可能有多个外键,但是一个关系只有一个主键。
  5. 可以将主键约束应用于临时表。但是,外键约束不能应用于临时表。
  6. 默认情况下,主键是聚簇索引的,而外键不是自动聚簇索引的,而是可以手动完成的。
  7. 在将值插入外键列时,请确保所引用的主键列中存在插入属性值。但是,对插入主键列没有限制。
  8. 从主键列删除值时,请确保引用的外键列中没有删除的属性值。但是,从外键列删除值没有任何限制。

结论:

主键和外键对于架构都是必不可少的。主键唯一地定义关系中的每个元组,而外键用于在两个关系之间创建链接。