首页 > 编程知识 正文

数据库候选键和主键,数据库键和超键

时间:2023-05-03 16:49:24 阅读:242358 作者:3488

先了解下对这三种关键码的定义如下:

键名定义超键 (super key)在关系中能唯一标识元组的属性或属性集称为关键模式的超键候选键 (candidate key)不含有多余属性的超键称为候选键。也就是在候选键中在删除属性就不是键了。主键(primary key)用户选作元组标识的候选键称为主键。一般不加说明,键就是指主键。

即候选键是超键中选出来的,主键是从候选键中选出来的一组。

超键 百科百科的解释:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。如:在一个学生的表中,假设有“学号”、“姓名”、“相关信息”、“生日”等字段, 其中学号是唯一的,那么(学号)是一个超键,同时(学号,姓名,生日)的组合也是唯一的,所以也可以为一个超键。但(学号,姓名,生日)也有时候不是唯一的,如果有学号、姓名、生日相同的情况,就会出错,反正记住一点,就是这些属性可以区别每一个学生的就是超键,也就是根据这些属性可以唯一确定一名学生的,就是超键。假设我们有下面这样一个学生信息表: 学号姓名年龄性别专业20161kxdzc23男CS20162xfdxz24女MA20163忧虑的学姐25男CA20164mldjm23男AI20165mldjm24女CS

通过观察,选取能唯一确定一行的属性组合有:

(学号)(学号,*其他任何列属性)(姓名,年龄)(姓名,性别)(等等)
通过选取的过程,我们可以理解这里的超键在于可以区别每一个学生,超键的组合是唯一的,但可能不是最小唯一的。 候选键

候选键实在超键的基础上定义的,在要求可以区分每一行的基础上,同时是最小唯一的,即候选键中删除任何一个属性后就不能再区分每一行。
同样是之前那个表

学号姓名年龄性别专业20161kxdzc23男CS20162xfdxz24女MA20163忧虑的学姐25男CA20164mldjm23男AI20165mldjm24女CS

(学号)是超键,而且没有其他多余属性所以是候选键。
(学号,姓名)是超键,但是去除姓名后也能区分每一行,所以姓名是多余的,(学号,姓名)不是一个候选键。
(姓名,年龄)是超键,而且没有多余的 属性,所以是一个候选键。
还有一些也可以做候选键,这里不在赘述。所以,这里可以看出,候选键是没有多余属性的超键。

主键

为了查询的方便性和便于表之间的连接,往往设置一组主键。主键是从候选键中选出来的一组,比如之前的表,我们可以以学号作为主键,也可以选择(姓名,年龄)作为主键,或者旋转其他的一个候选键。我们将我们最终选择的一组幸运候选键称为主键。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。