前言:

对于刚学习数据库的童鞋来说,定会遇到这么一个问题,那就是数据库所说的各种键之间的关系以及区别,作为曾经在这个难点上有过痛苦经历的人来说,印象是比较深刻的,所以在这里我将我自己心中所了解到的四种键做一个小小的介绍,菜鸟级别的我希望大牛们多多指教指导,不胜感谢!

关系:

超键、候选键、主键和外键的关系:

请留意这句关于超键的定义,首先得是在关系模式中,同时还要是唯一标识元组,而且还是属性集,只有满足这三点才能成为超键。比如下面这个关系模式:

学生(学号,姓名,性别,专业编号,年龄)

分析:

我们知道通过学号可以找到一个学生的姓名、性别、专业号、年龄,但是通过姓名不一定能找到这些,比如有重名的,通过性别也不能找到,通过专业号也不行,一个专业可以有很多学生在学习,通过年龄也不行,所以在上面这个关系模式中只有通过学号才能找到特定学生。

于是(学号,姓名)的组合属性集就称为超键。因为学号和姓名的组合能找到特定的学生。所以,在这个关系模式中

超键是:

(学号)、(学号,姓名、)(学号,性别)、(学号,专业编号)、(学号,年龄)、(学号,姓名,性别)、(学号,姓名,专业编号)、(学号,姓名,年龄)、(学号,姓名,性别,专业编号)、(学号,姓名,性别,年龄)、(学号,姓名,性别,专业编号,年龄)。

作用:

①保证实体的完整性

②加快数据库的操作速度

③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复

④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录

首先得是在关系模式中不必多说了,跟着也是唯一标识元组,值得留意的是它是不含多余属性的属性集(跟超键的区别)。比如按照上面给的例子(专业内学生姓名均不同):

学生(学号,姓名,性别,专业编号,年龄)

分析:

这个例子跟上一个对比的区别就是专业内学生姓名均不同,所以不仅仅通过学号能找到特定的学生,而且还能通过姓名找到特定的学生,性别、专业号、年龄这三个属性却不能找到特定的学生。

于是,学号和姓名就成了这个关系模式中的候选键,所以在这个关系模式中

候选键是:

(学号)、(姓名)

作用:

①保证实体的完整性

②加快数据库的操作速度

③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复

④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录

在候选键中随意选取一个就可以成为主键,还是上面给的例子(专业内学生姓名均不同):

学生(学号,姓名,性别,专业编号,年龄)

分析:

主键是建立在候选键的基础上的,所以在上面候选键(学号)、(姓名)中随意选取其中一个即为主键

主键是:(学号)或者(姓名)也可以是多个属性构成的联合主键

作用:

①保证实体的完整性

②加快数据库的操作速度

③在表中添加新记录时,表会自动检查新纪录的主键值,不允许该值与其他记录主键值重复

④表自动按主键值的顺序显示表中的记录,如果没有定义主键,则按输入记录的顺序显示表中的记录

外键是建立在两个关系模式中的,参考上面的例子,然后再加一个关系模式,如下:

学生(学号,姓名,性别,专业编号,年龄)

专业(专业编号,专业课程,专业老师)

分析:

关系模式学生中的(专业编号)不是关系模式学生中的候选键,而是关系模式专业中的候选键,所以这个时候称关系模式学生中的(专业编号)为外键

外键有:

(专业编号)

作用:

①使得一张表中的数据不要太过冗余

②保持数据的一致性和完整性

③加快数据库的操作速度

举个栗子1:区别候选键和主键

公司原来的经理退休,现在有三个候选人:A,B以及C(候选键),最终任命选择了C当经理(主键)。在C成为经理之前,他(她)一定是经理候选人,可是一旦他(她)被选为经理,那么我们就叫他经理,而习惯上就不再称其为经理候选人了。

举个栗子2:区别超键、候选键、主键、外键

超键(爷爷)候选键(爸爸)主键(自己)外键(舅舅家的我)

我身上有爷爷的遗传基因,但是继承爸爸的遗传基因更多,外公那边的遗传基因只有外公有遗传,而舅舅和表弟的遗传基因和我一点关系都没有

超键,候选键,主键,外键相关推荐

  1. 数据库中什么是主键,什么是外键?

    数据库中什么是主键,什么是外键? 作者:不染丹心  来源:博客园  发布时间:2009-12-17 22:57  阅读:128 次  原文链接   [收藏]   这需要理清几个概念: 1)候选键: 关 ...

  2. SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束

    文章目录 约束 约束介绍和分类 非空约束 唯一约束 主键约束 默认约束 案例练习 外键约束 约束 约束介绍和分类 约束的概念: 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库 ...

  3. mysql主外键添加_mysql 增加外键:(+创建主键)

    MySQL是开源免费的数据库软件,是一款很优秀的软件,作为我们的学生或者科研人员在开发软件的时候,最好用也是最省钱的.所以MySQL学好是至关重要的! SQL语言包含4个部分: ※ 数据定义语言(DD ...

  4. mysql设置外键_mysql怎么增加外键

    mysql增加外键的方法:1.在CREATE TABLE语句中,通过FOREIGN KEY关键字来添加外键:2.在ALTER TABLE语句中,通过ADD和FOREIGN KEY关键字来添加外键. M ...

  5. 是否有必要使用外键?为什么不用外键?

    什么是外键: 如果一个实体的某个字段指向另一个实体的主键,就称为外键.被指向的实体,称之为主实体(主表),也叫父实体(父表).负责指向的实体,称之为从实体(从表),也叫子实体(子表) 外键的作用: ① ...

  6. mysql 所有外键_mysql中的外键

    mysql中的外键 1.默认的外键存在之后,会对数据进行约束. 1)约束1:如果子表中添加的数据,外键字段对应的数据如果在父表中不存在,那么添加失败. 有数据之后: 修改:可以修改跟外键不相关的任何字 ...

  7. mysql 外键详解_mysql外键详解

    1.1.MySQL中"键"和"索引"的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确 ...

  8. 修改表结构添加外键约束,默认外键名

    2019独角兽企业重金招聘Python工程师标准>>> 修改表结构添加外键约束,默认外键名 alter table SUPPLIER_INFO add foreign key (CR ...

  9. mysql表定义外键语法_mysql设置外键的语法怎么写?

    2012-08-31 回答 mysql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加er图的可读性 有些人认为外键 ...

  10. 外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本

    概述 数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的 ...

最新文章

  1. 分享沙龙丨如何打磨一款好产品?
  2. 在C#中使用RESTful API的几种好方法
  3. LeetCode Golang 9.回文数
  4. 前端学习(2630):git安装包下载
  5. 第四节:跨域请求的解决方案和WebApi特有的处理方式
  6. WEB消息提醒实现之二 实现方式-Jquery Ajax长轮询
  7. 多维数组做参数,内存可以看做是线性的
  8. properties 配置回车_PTB220/330 | 长春气象仪器所自动站配置
  9. 干货分享 | 自然语言处理及词向量模型介绍(附PPT)
  10. opencv之解决Module opencv_ovis disabled because OGRE3D was not found
  11. 查询数据库里所有表名,字段名的语句
  12. SpringBoot整合jsp的使用
  13. visio软件接口流程图_用Visio制作最专业的技术流程图教程
  14. qt在window实现二维码识别
  15. 用户画像,原来是这么用的!看一个生活中的案例
  16. Mybatis+spring知识点
  17. TOEFL战地手记听力FAQ
  18. Python初探(四,五)
  19. Golang jwt跨域鉴权
  20. 门禁服务器业务导航不显示,门禁一卡通管理软件重大问题解决办法

热门文章

  1. 学校 计算机 教室 设计标准,数字美术创新教室建设解决方案(含配套设备)
  2. 自签名证书和私有CA签名的证书的区别
  3. 一文读懂物联网的关键技术有什么?
  4. 突发,拼多多发生重大变更!
  5. (实测)天猫商城抢购茅台脚本
  6. Android开发----MaterialDesign设计下material-dialogs用法
  7. OSChina 周四乱弹 ——小小编辑去死远点了
  8. python调用crt自动登录_secureCRT自动登录脚本(python)
  9. Arcgis 地理配准步骤(底图校正)
  10. 【ElasticSearch系列连载】1. ES版本与开源简介