DBMS中主键和外键之间的区别
内容
键是DBMS的关键部分,它们用于标识和建立模式中的表之间的关系。现在,今天我们将讨论DBMS的两个非常重要的密钥,即主键和外键,并且还将讨论主键和外键之间的区别。顺便说一句,我要告诉您主键和外键之间的基本区别,即主键是数据库设计人员选择的候选键之一,而外键是指另一个关系的主键的键。
两者之间还有许多其他差异,让我们借助下面显示的比较表来识别这些差异。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 首要的关键 | 外键 |
---|---|---|
基本的 | 主键是一个选定的候选键,它唯一地定义了关系中的元组。 | 表中的外键是指其他表的主键。 |
空值 | 主键值永远不能为NULL。 | 外键接受NULL值。 |
重复 | 关系中没有两个元组携带主键属性的重复值。 | 元组可以携带外键属性的重复值。 |
范围 | 关系只能有一个主键。 | 一个关系中可以有多个外键。 |
临时表 | 可以在临时表上定义主键约束。 | 不能在临时表上定义外键约束。 |
聚集索引 | 默认情况下,主键是聚集索引的。 | 外键不会自动聚簇索引;它必须手动完成。 |
插入 | 即使引用的外键的列中没有该值,也可以将其插入主键属性。 | 如果所引用的主键列中没有该值,则无法将其插入到外键中。 |
删除中 | 在删除主键值之前,请确保该值在引用表的引用外键列中仍然不存在。 | 您可以从外键列中删除一个值,而不必理会该值是否存在于引用关系的被引用主键列中。 |
主键的定义
主键 独特地 在关系中定义元组。它可以是关系中的单个属性,也可以是关系中的一组属性。主键属性的值应 从未或很少改变。因为它是主体,所以意味着要标识数据库中的任何记录。主键的任何属性值更改都会造成混乱。
数据库设计者选择以下一种 候选键 作为主键,需要考虑一些要点。首先要考虑的是主键属性值不能包含 空值 值。因为,如果主键属性值包含NULL,则意味着我们无法在表中标识该记录。它还违反了实体完整性约束。第二个考虑是 没有两个元组 在一个表中可以包含 相同 主键属性的值,因为它会违反元组之间的唯一性。
只能有 一个主键 对于任何 关系。默认情况下,主键是 聚簇索引,这意味着将根据主键属性值对表中的所有元组进行排序。主键约束可以在 临时表。在查询执行期间创建的中间表称为临时表。
而 删除中 关系中的一个元组,必须注意删除的元组的主键值仍不存在于引用关系的外键列中。而 插入 对主键没有任何限制。
一个表的主键在其他表中使用时,它将成为该表的外键。外键约束在下面讨论。
外键的定义
当一个关系 R1在其属性中有一个 主 键 其他关系 R2,则该属性称为 外键 为了关系 R1。关系 R1 包含外键的称为 引用关系 因为它指关系R2和关系的主键 R2 叫做 引用关系.
与主键不同,外键可以接受 空值 值,因为它没有在关系中清楚地标识记录的任务,因为我们对此具有主键。同样,外键也接受 重复值.
关系可以有 多 外键,因为它可以具有不同的属性,它们是不同关系中的主键。外键约束可以 不 在上定义 临时表, 也不 外键是 聚簇索引 属性。
而 插入 引用关系的外键列中的值,请确保插入值必须存在于引用关系的主键列中。鉴于 删除中 外键列中的值。
- 主键是一组属性/候选键,用于明确标识关系中的记录。但是,表中的外键是指另一个表的主键。
- 主键属性不能包含NULL值,而外键属性可以接受NULL值。
- 主键应具有唯一的属性值,而外键可能具有重复的属性值。
- 一个关系中可能有多个外键,但是一个关系只有一个主键。
- 可以将主键约束应用于临时表。但是,外键约束不能应用于临时表。
- 默认情况下,主键是聚簇索引的,而外键不是自动聚簇索引的,而是可以手动完成的。
- 在将值插入外键列时,请确保所引用的主键列中存在插入属性值。但是,对插入主键列没有限制。
- 从主键列删除值时,请确保引用的外键列中没有删除的属性值。但是,从外键列删除值没有任何限制。
结论:
主键和外键对于架构都是必不可少的。主键唯一地定义关系中的每个元组,而外键用于在两个关系之间创建链接。