发布时间:2024-08-27 15:58:11 | 新闻来源:JRS直播
超键、主键和候选键之间的区别
最近在看一本MySQL的书时,遇到了一个问题:
既然我们已经有了主键的概念,而且主键已经可以满足需求,那为什么还需要候选键呢?候选键有什么作用呢?文中给出了候选键的定义,但是其实并不能乱用。。
我抱着一探究竟的心态在网上查了一下,也看了大师们的解释,还是没看懂,所以想在这里整理一下,帮助自己更清楚的理解,也希望大家如果理解的可以指出我哪里错了,下面是我的一些理解:
其实还是主键和超键比较好,比如有一张这样的表:
桌子有点粗糙中超数据库,就看一下吧。
超级键
能够识别关系中元??组的属性集称为关系模式的超键。请注意“属性集”的定义。超键可以是一个大集合,只要它可以识别它是哪一行。因此中超数据库,'id'、'user'、'pwd'、''、'name' 都可以是超键的集合。
候选键
不包含冗余属性的超键。例如,在上面的超键中,'id' 可以自行确定它属于哪一行中超数据库,因此它可以是候选键。其他四个也可以是候选键。但这五个加在一起不是候选键,因为有额外的列。(其他四个可以成为候选键,因为每列都可能有重复的内容)
主键
从所有的候选键中找出一个作为主键,即可以是id,也可以是其他四个的组合,或者是其他的选项,只要能够在较小的数内确定所选的集合即可。
总之,候选键是超键的子集,主键是候选键的子集。
其实梳理了这么多,我还是没明白候选键的作用是什么。其实可能就好比一个候车室,火车上只剩下一个座位,几个主键就坐在候车室里。我来告诉你:“我们几个人都买了票,有资格上车,你选谁就跟谁上车。”应该就是这样。
理解超键、候选键、主键的概念以及关系的基本概念
候选键是超键的子集,主键是候选键之一。
例如
考虑属性集(身份证号码,姓名,性别,年龄),假设没有重复的姓名
a.其中超级键为:
b. 超密钥中的候选密钥
c. 选择主键
还是不明白?
例子:
在SQL数据库中,有一张学生信息表如下图所示,该表中不能作为候选键的属性集是( )(单选)
学生证号 姓名 性别 年龄 院系 专业
李惠南 20 计算机软件开发
张明南 18 计算机软件开发
王小宇 19 物理与力学
李淑华女17 生物动物学
赵静楠 21 化学 食品化学
赵静 女 20岁 生物植物学
a) {学生证号码}
b) {学生编号,姓名}
c) {年龄,部门}
d) {姓名,性别}
e) {姓名,专业}
至此,相信大家对“MySQL中超键、主键、候选键有什么区别”已经有了比较深刻的理解,不妨在实践中尝试一下吧!这里是易速云网站,更多相关内容请进入相关频道查看,关注我们,不断学习!