超键,候选键,主键,外键
前言:
对于刚学习数据库的童鞋来说,定会遇到这么一个问题,那就是数据库所说的各种键之间的关系以及区别,作为曾经在这个难点上有过痛苦经历的人来说,印象是比较深刻的,所以在这里我将我自己心中所了解到的四种键做一个小小的介绍,菜鸟级别的我希望大牛们多多指教指导,不胜感谢!
关系:
超键、候选键、主键和外键的关系:
请留意这句关于超键的定义,首先得是在关系模式中,同时还要是唯一标识元组,而且还是属性集,只有满足这三点才能成为超键。比如下面这个关系模式:
学生(学号,姓名,性别,专业编号,年龄)
分析:
我们知道通过学号可以找到一个学生的姓名、性别、专业号、年龄,但是通过姓名不一定能找到这些,比如有重名的,通过性别也不能找到,通过专业号也不行,一个专业可以有很多学生在学习,通过年龄也不行,所以在上面这个关系模式中只有通过学号才能找到特定学生。
于是(学号,姓名)的组合属性集就称为超键。因为学号和姓名的组合能找到特定的学生。所以,在这个关系模式中
超键是:
(学号)、(学号,姓名、)(学号,性别)、(学号,专业编号)、(学号,年龄)、(学号,姓名,性别)、(学号,姓名,专业编号)、(学号,姓名,年龄)、(学号,姓名,性别,专业编号)、(学号,姓名,性别,年龄)、(学号,姓名,性别,专业编号,年龄)。
作用:
①保证实体的完整性
②加快数据库的操作速度
③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复
④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录
首先得是在关系模式中不必多说了,跟着也是唯一标识元组,值得留意的是它是不含多余属性的属性集(跟超键的区别)。比如按照上面给的例子(专业内学生姓名均不同):
学生(学号,姓名,性别,专业编号,年龄)
分析:
这个例子跟上一个对比的区别就是专业内学生姓名均不同,所以不仅仅通过学号能找到特定的学生,而且还能通过姓名找到特定的学生,性别、专业号、年龄这三个属性却不能找到特定的学生。
于是,学号和姓名就成了这个关系模式中的候选键,所以在这个关系模式中
候选键是:
(学号)、(姓名)
作用:
①保证实体的完整性
②加快数据库的操作速度
③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复
④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录
在候选键中随意选取一个就可以成为主键,还是上面给的例子(专业内学生姓名均不同):
学生(学号,姓名,性别,专业编号,年龄)
分析:
主键是建立在候选键的基础上的,所以在上面候选键(学号)、(姓名)中随意选取其中一个即为主键
主键是:(学号)或者(姓名)也可以是多个属性构成的联合主键
作用:
①保证实体的完整性
②加快数据库的操作速度
③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复
④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录
外键是建立在两个关系模式中的,参考上面的例子,然后再加一个关系模式,如下:
学生(学号,姓名,性别,专业编号,年龄)
专业(专业编号,专业课程,专业老师)
分析:
关系模式学生中的(专业编号)不是关系模式学生中的候选键,而是关系模式专业中的候选键,所以这个时候称关系模式学生中的(专业编号)为外键
外键有:
(专业编号)
作用:
①使得一张表中的数据不要太过冗余
②保持数据的一致性和完整性
③加快数据库的操作速度
举个栗子1:区别候选键和主键
公司原来的经理退休,现在有三个候选人:A,B以及C(候选键),最终任命选择了C当经理(主键)。在C成为经理之前,他(她)一定是经理候选人,可是一旦他(她)被选为经理,那么我们就叫他经理,而习惯上就不再称其为经理候选人了。
举个栗子2:区别超键、候选键、主键、外键
超键(爷爷)候选键(爸爸)主键(自己)外键(舅舅家的我)
我身上有爷爷的遗传基因,但是继承爸爸的遗传基因更多,外公那边的遗传基因只有外公有遗传,而舅舅和表弟的遗传基因和我一点关系都没有
超键,候选键,主键,外键相关推荐
- 数据库中什么是主键,什么是外键?
数据库中什么是主键,什么是外键? 作者:不染丹心 来源:博客园 发布时间:2009-12-17 22:57 阅读:128 次 原文链接 [收藏] 这需要理清几个概念: 1)候选键: 关 ...
- SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束
文章目录 约束 约束介绍和分类 非空约束 唯一约束 主键约束 默认约束 案例练习 外键约束 约束 约束介绍和分类 约束的概念: 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库 ...
- mysql主外键添加_mysql 增加外键:(+创建主键)
MySQL是开源免费的数据库软件,是一款很优秀的软件,作为我们的学生或者科研人员在开发软件的时候,最好用也是最省钱的.所以MySQL学好是至关重要的! SQL语言包含4个部分: ※ 数据定义语言(DD ...
- mysql设置外键_mysql怎么增加外键
mysql增加外键的方法:1.在CREATE TABLE语句中,通过FOREIGN KEY关键字来添加外键:2.在ALTER TABLE语句中,通过ADD和FOREIGN KEY关键字来添加外键. M ...
- 是否有必要使用外键?为什么不用外键?
什么是外键: 如果一个实体的某个字段指向另一个实体的主键,就称为外键.被指向的实体,称之为主实体(主表),也叫父实体(父表).负责指向的实体,称之为从实体(从表),也叫子实体(子表) 外键的作用: ① ...
- mysql 所有外键_mysql中的外键
mysql中的外键 1.默认的外键存在之后,会对数据进行约束. 1)约束1:如果子表中添加的数据,外键字段对应的数据如果在父表中不存在,那么添加失败. 有数据之后: 修改:可以修改跟外键不相关的任何字 ...
- mysql 外键详解_mysql外键详解
1.1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确 ...
- 修改表结构添加外键约束,默认外键名
2019独角兽企业重金招聘Python工程师标准>>> 修改表结构添加外键约束,默认外键名 alter table SUPPLIER_INFO add foreign key (CR ...
- mysql表定义外键语法_mysql设置外键的语法怎么写?
2012-08-31 回答 mysql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加er图的可读性 有些人认为外键 ...
- 外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本
概述 数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的 ...
最新文章
- 分享沙龙丨如何打磨一款好产品?
- 在C#中使用RESTful API的几种好方法
- LeetCode Golang 9.回文数
- 前端学习(2630):git安装包下载
- 第四节:跨域请求的解决方案和WebApi特有的处理方式
- WEB消息提醒实现之二 实现方式-Jquery Ajax长轮询
- 多维数组做参数,内存可以看做是线性的
- properties 配置回车_PTB220/330 | 长春气象仪器所自动站配置
- 干货分享 | 自然语言处理及词向量模型介绍(附PPT)
- opencv之解决Module opencv_ovis disabled because OGRE3D was not found
- 查询数据库里所有表名,字段名的语句
- SpringBoot整合jsp的使用
- visio软件接口流程图_用Visio制作最专业的技术流程图教程
- qt在window实现二维码识别
- 用户画像,原来是这么用的!看一个生活中的案例
- Mybatis+spring知识点
- TOEFL战地手记听力FAQ
- Python初探(四,五)
- Golang jwt跨域鉴权
- 门禁服务器业务导航不显示,门禁一卡通管理软件重大问题解决办法