当前位置:网站首页>MySQL中超键、主键及候选键的区别是什么
MySQL中超键、主键及候选键的区别是什么
2022-08-01 18:35:00 【亿速云】
MySQL中超键、主键及候选键的区别是什么
本篇内容主要讲解“MySQL中超键、主键及候选键的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中超键、主键及候选键的区别是什么”吧!
关于超键和主键及候选键的区别
最近在看MySQL的书时遇到了一个问题:
既然已经有了主键这个概念,主键已经能够满足需求了,那为什么还要有候选键这种东西?候选键的作用是什么呢?给了它一个候选键的定义但是它真的并没有什么乱用。
抱着刨根问底拦不住的心态我去网上搜了搜,看了看大神们的解释,看得我还是有些懵懂,于是想在这里梳理一下,帮助自己理解的更通透,也希望如果有理解错的地方能有人指点一下 下面就是我的一些理解:
其实主键和超键还好一些,比如有这么一个表:
表写的有些糙,凑合看吧。
超键
在关系中能唯一标识元组的属性集称为关系模式的超键。 注定义中的“属性集”,超键可以是一个很大的集合,只要他能确定是哪一行就行,因此’id’,‘user’,‘pwd’,‘section’,'name’都可以是超键的集。
候选键
不含有多余属性的超键,比如在上面的超键中,'id’自己就可以独自确定是哪一行,所以他自己可以是一个候选键,除去它以外的另外四个也可以是候选键,但是这五个放在一起因为有了多余的列,他们就不是候选键。(另外四个可以是候选键的原因是每一列都有可能有重复的内容)
主键
在所有的候选键里面找一个作为主键供使用,也就是说可以是id,也可以是另外四个的合体,也有可能是其他的选择,只要能保证选择的集合能唯一确定即可。
总结来说,候选键是超键的子集,主键是候选键的子集。
其实整理了这么多以后我还是不明白候选键的作用到底是什么,其实他可能就是作为一个候车厅一样,车上只剩下一个座位,有几个主键在候车厅里坐着,告诉你:“我们几个人都买票了,都有资格上车,你选谁上,我们谁就跟你去上车”,应该就是这样。
理解超键、候选键、主键概念及关系
基本概念
超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键/码。
候选键(candidate key):不含有多余属性的超键称为候选键,即其真子集不再是超键。
主键(primary key):用户选作元组标识的一个候选键称为主键,是候选键之一。
关系
候选键是超键的子集,主键是候选键中的一个。
举个栗子
考虑属性集(身份证号,姓名 ,性别 ,年龄),假设无重名
a.其中超键有:
身份证号、姓名、(姓名,性别)、(姓名,性别,年龄)等
--这里可以看出,超键是能唯一确定一个人的属性组
b.超键中的候选键
身份证号、姓名唯一,而且没有多余属性,所以是一个候选键
--这里可以看出,候选键是没有多余属性的超键
c.选择主键
用户可根据自己喜好考虑选择姓名或者身份证号作为主键
--主键是选中的一个候选键
还不明白?
实例:
在SQL Server数据库中,有一个学生信息表如下所示,在该表中不能作为候选键的属性集合为( ) (选择一项)
学号 姓名 性别 年龄 系别 专业
20020612 李辉 男 20 计算机 软件开发
20060613 张明 男 18 计算机 软件开发
20060614 王小玉 女 19 物理 力学
20060615 李淑华 女 17 生物 动物学
20060616 赵静 男 21 化学 食品化学
20060617 赵静 女 20 生物 植物学
a){学号}
b){学号、姓名}
c){年龄、系别}
d){姓名、性别}
e){姓名、专业}
到此,相信大家对“MySQL中超键、主键及候选键的区别是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
边栏推荐
- Zabbix6.0 DingTalk robot alarm
- Friends who want to use the database anytime, anywhere and as you like, all attention!
- 123123123123
- Map传值
- No need to crack, install Visual Studio 2013 Community Edition on the official website
- 打开微信客服
- AIOps智能运维的领跑者擎创科技正式入驻InfoQ 写作社区!
- 【Day_11 0506】 最近公共祖先
- AntDB database appeared in the 24th high-speed exhibition, helping smart high-speed innovative applications
- 2022年 PHP面试问题记录
猜你喜欢
Topology Parts Disassembly 3D Visualization Solution
Leetcode75. 颜色分类
【报错】Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘concat‘)
在Map传值与对象传值中模糊查询
Leetcode74. 搜索二维矩阵
Prometheus's Recording rules practice
Solve the problem that MySQL cannot insert Chinese data
暑假第二周总结博客
MySQL database - stored procedures and functions
将ENS域名转化为音乐需要几步?
随机推荐
Use of message template placeholders
How to use the Golang coroutine scheduler scheduler
钳形万用表使用方法,如何测量电压、电流、电阻?
Clip-on multimeter use method, how to measure the voltage, current, resistance?
粒子滤波 particle filter —从贝叶斯滤波到粒子滤波——Part-I(贝叶斯滤波)
Leetcode72. 编辑距离
Map传值
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
Leetcode73. Matrix Zeroing
483-82(23、239、450、113)
关于单应性矩阵的若干思考
基于flowable的upp(统一流程平台)运行性能优化
SQL函数 TO_DATE(二)
【Day_08 0426】求最小公倍数
将ENS域名转化为音乐需要几步?
7月30号|来一场手把手助您打造智能视觉新爆款的技术动手实验
B011 - 51-based multifunctional fingerprint smart lock
【Day_09 0427】走方格的方案数
log factory (detail)
塔防海岸线用户协议