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中超键、主键、候选键的区别是什么?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

- 上一篇
- 如何修复未在 Virtualbox 上安装的 Windows 11

- 下一篇
- 如何在没有 Microsoft 帐户的情况下设置 Windows 11
-
- 数据库 · MySQL | 1分钟前 |
- MySQL中英文混合乱码解决方案
- 127浏览 收藏
-
- 数据库 · MySQL | 45分钟前 | mysql 数据类型 表结构 DESC SHOWCREATETABLE
- MySQL中desc用法及表结构查询技巧
- 274浏览 收藏
-
- 数据库 · MySQL | 13小时前 | 权限管理 字符集 排序规则 CREATEDATABASE IFNOTEXISTS
- MySQL建库详解:createdatabase语法
- 220浏览 收藏
-
- 数据库 · MySQL | 13小时前 | 索引 数据类型 外键 主键 CREATETABLE
- MySQL建表详细步骤与实战攻略
- 304浏览 收藏
-
- 数据库 · MySQL | 19小时前 | mysql 数据库管理 数据插入 INSERTINTO CREATETABLE
- MySQL建表插数全流程详解
- 124浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- 毕业宝AIGC检测
- 毕业宝AIGC检测是“毕业宝”平台的AI生成内容检测工具,专为学术场景设计,帮助用户初步判断文本的原创性和AI参与度。通过与知网、维普数据库联动,提供全面检测结果,适用于学生、研究者、教育工作者及内容创作者。
- 3次使用
-
- AI Make Song
- AI Make Song是一款革命性的AI音乐生成平台,提供文本和歌词转音乐的双模式输入,支持多语言及商业友好版权体系。无论你是音乐爱好者、内容创作者还是广告从业者,都能在这里实现“用文字创造音乐”的梦想。平台已生成超百万首原创音乐,覆盖全球20个国家,用户满意度高达95%。
- 26次使用
-
- SongGenerator
- 探索SongGenerator.io,零门槛、全免费的AI音乐生成器。无需注册,通过简单文本输入即可生成多风格音乐,适用于内容创作者、音乐爱好者和教育工作者。日均生成量超10万次,全球50国家用户信赖。
- 21次使用
-
- BeArt AI换脸
- 探索BeArt AI换脸工具,免费在线使用,无需下载软件,即可对照片、视频和GIF进行高质量换脸。体验快速、流畅、无水印的换脸效果,适用于娱乐创作、影视制作、广告营销等多种场景。
- 24次使用
-
- 协启动
- SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
- 23次使用
-
- MySQL主从切换的超详细步骤
- 2023-01-01 501浏览
-
- Mysql-普通索引的 change buffer
- 2023-01-25 501浏览
-
- MySQL高级进阶sql语句总结大全
- 2022-12-31 501浏览
-
- Mysql报错:message from server: * is blocked because of many
- 2023-02-24 501浏览
-
- 腾讯云大佬亲码“redis深度笔记”,不讲一句废话,全是精华
- 2023-02-22 501浏览