键是DBMS的关键部分,它们用于标识和建立模式中表之间的关系。下面本篇文章就来带大家认识一下DBMS的两个非常重要的键,即主键和外键;介绍主键和外键之间的区别,希望对大家有所帮助。
DBMS中的主键
主键可以唯一地定义关系中的元组。它可以是关系中的单个属性,也可以是关系中的一组属性。主键属性的值不应更改或很少更改。因为它是主体,所以意味着标识数据库中的任何记录;主键的任何属性值的更改都会造成混乱。【视频教程推荐:MySQL教程】
任何关系只能有一个主键。主键默认为cluster-indexed,这意味着表中的所有元组都根据主键属性值进行排序。可以在临时表上定义主键约束。在执行查询期间创建的中间表称为临时表。
DBMS中的外键
外键是引用另一个关系的主键的键;当其属性中的关系R1具有其他关系R2的主键时,则该属性被称为关系R1的外键。包含外键的关系R1称为引用关系,因为它引用关系R2的主键,而关系R2称为引用关系。
与主键不同,外键可以接受NULL值,因为它没有在关系中明确标识记录的任务;同样,外键也接受重复值。
关系可以有多个外键,因为它可以具有不同的属性,这些属性是不同关系中的主键。无法在临时表上定义外键约束,外键也不是集群索引属性。
主键和外键之间的主要区别
1、本质上不同
主键是选择的候选键,它唯一地定义关系中的元组; 表中的外键是指其他表的主键。
2、NULL值
主键值永远不能为NULL;外键接受NULL值。
3、重复值
主键关系中没有两个元组携带主键属性的重复值。外键中元组可以为外键属性携带重复值。
4、范围
关系只能有一个主键。关系中可以有多个外键。
5、临时表
主键可以在临时表上定义主键约束。外键无法在临时表上定义外键约束。
6、聚集索引
默认情况下,主键是聚簇索引的。外键不能自动聚集索引,它必须手动完成。
7、插入
在主键中,我们可以向主键属性插入一个值,即使引用外键在其列中没有该值也是如此。
在外键中,如果引用的主键列中不存在该值,则无法将值插入外键。
8、删除
在删除主键值之前,请确保该引用表的引用外键列中仍不存在该值。我们可以从外键列中删除值而不必担心,该值是否存在于引用关系的引用主键列中。
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!
以上是DBMS中主键和外键之间的区别的详细内容。更多信息请关注PHP中文网其他相关文章!