如何简单明了的解释一下关系数据库的候选键和超键?

如何简单明了的解释一下关系数据库的候选键和超键?,第1张

超键就是指一组字段可以唯一确定一条数据,而候选键是最简洁的超键,也就是只有必要字段,

举例来说明,假如有一个班级,班级中没有同名的学生,有如下一张表。

std_id last_name first_name gender score

10001 张 三 男 85

10002 李 四 男 86

10005 妹 子 女 95

10006 李 三 男 88

这张表里,因为我们前面说到这个班级里没有同名的学生。

因此last_name+first_name就是一个超键,因为可以唯一确定一行数据,同时也是一个候选键,因为这两个字段去掉任何一个都不再能唯一确定一行数据。

更明显的区别在于,last_name+first_name+gender还是一个超键,但是已经不再是候选键了,因为在确定唯一一条数据的时候,gender不是必要的字段。

也就是说候选键是可以唯一确定一条数据的必要字段的最小集合,而候选键加上任何的额外字段都是超键。

在上面的例子中,std_id自己就是一个候选键,std_id+任何额外的字段都是候选键。

同时从习惯而言,一般会把这种std_id字段定义为主键,主键并不一定只是一个字段,如果我们上面的表增加一列班级id(class_id),同时加入每个班级中的std_id都是从10001开始的话,我们就可以用class_id+std_id来作为主键。

自己的理解,希望可以帮到题主。

关系模型中,候选键又称候选码(英语:candidate key),是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件:

1.这个属性集合始终能够确保在关系中能唯一标识元组。

2.在这个属性集合中找不出合适的子集能够满足条件。

如果关系模式R(u)的属性集合K ∈u 的候选键。R(u)的任何一个关系实例的任意两个元素在属性集合K上的值部不相同————唯一性,K的任何真子集都不满足条件 ————最小性通俗点,候选键在每一行数据里的值都不相同,可以说成是候选的主键。

候选键是唯一标识表中每一行的键。候选键可以是单列键,也可以是复合键。例如下列学生表中“学号”或“图书证号”都能唯一标识一个元组,则“学号”和“图书证号”都能唯一地标识一个元组,则“学号”和“图书证号”都可作为学生关系的候选键。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6931421.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-30
下一篇2023-03-30

发表评论

登录后才能评论

评论列表(0条)

    保存