本文为借阅书籍资料,观看他人博客总结得出,欢迎提问:

一. 前期说明

作为一个初学者,很容易搞不清楚主键,候选键等等,数据库中的各种键被搞得云里雾里,本次重点来介绍数据库中的各种键。

二.定义概要

首先来看看对键的各种定义:

超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键。

候选键(candidate key): 不含多余属性的超键被称为候选键。

主键(primary key):用户选作元组标识的一个候选键 称为主键

外键(foreign key): 关系模式R1中的某属性集不是R1的主键,而是另一个关系R2的主键则该属性集是关系模式R1的外键。

说到这里可能读者还是比较懵。下面我来举例说明。

三.举例论证

假设有两个关系模式:

学生(学号,姓名 ,班级,课程号 , 身份证号)课程(课程号 , 课程名)

超键:能够唯一表示元组的属性集都可构成超键,所以,由上表知只要是含有 学号,身份证号 的集合都可以作为此表的超键,如 :(学号) , (学号,姓名 ,班级)(身份证号,课程号)都可以构成。

候选键:候选键是属于超键的,被称为是最小的超键,也就是去掉候选键中的任何一个属性,他都不是超键了。上例中候选键有(学号)(身份证号)

主键:主键是候选键中的一个,是人为规定选出符合业务的一个候选键,如上,虽然学生表中有两个候选键,但是,由于业务需要,通常你可以选择学号作为主键。课程表也是。

外键:外键的概念比较容易区分,学生表中的外键就是课课程号。外键主要是用来描述表之间关系的属性。

其实,这些键的概念非常容易区分,只是缺少一些必要的训练,所以会被键的一些名称搞混。

博文总结

主键 一定是 候选键, 候选键不一定是主键。
候选键一定是超键,但超键不一定是候选键。
外键用来连接两张表,是另一张表的主键。

【数据库】主键,超键,候选键,外键区别与联系?相关推荐

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

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

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

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

  3. mysql是否需要设置外键_数据库到底需不需要设置外键?

    在大型系统中(性能要求不高,安全要求高),最好使用外键(外键可以增强数据库数据的完整性和一致性) 在大型系统中(性能要求高,安全自己控制),不用外键(有外键约束的话,插入字段会进行检查,影响效率) 小 ...

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

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

  5. 数据库表设置外键VS不设置外键,哪个更好?

    转发自极光轻学,原文链接:https://jiguangqingxue.com/info/24 必须设置外键VS不要设置外键的争论 数据库表到底要不要设置外键约束,一直具有非常大的争议.我认为完全没有 ...

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

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

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

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

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

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

  9. mysql删除表外键_MySQL删除所有表的外键约束、禁用外键约束

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

  10. mysql 外键详解_mysql外键详解

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

最新文章

  1. 描述一下 Intent 和 IntentFilter?
  2. java memcachedclient_Java memcached client怎样建立长连接
  3. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
  4. java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括
  5. 西门子rwd60参数设置调试手册_西门子控制器RWD60
  6. 解决ant design vue中的modal弹框样式修改无效问题 修改modal样式无效
  7. caffe lmdb
  8. Chrome谷歌浏览器Flash Player被屏蔽如何解决
  9. 【贪玩巴斯】数字图像处理基础课堂笔记(六)——「一维、二维离散傅里叶变化及其方变换,卷积定理,频域滤波的步骤」 2021-11-08
  10. 31个全网最常用python实现(体系学习,学完显著提高代码复用能力)
  11. html个人空间制作,html+css+js制作简单网站首页
  12. Room使用遇到的问题
  13. 你鼓舞了我是世界杯主题曲吗_20位鼓舞人心的科技女性
  14. Java基础 IP地址
  15. html5 相册翻转效果,HTML5 css3:3D旋转木马效果相册
  16. 6个开源项目提高GIS编程技能
  17. 离散数学概论---(8)图论:图的基本概念
  18. GitHub Flavored Markdown 规范
  19. Shift_JIS、CP932、MS932、Windows-31J区别
  20. pigpio 利用普通GPIO为树莓派增加软串口实现ttl通讯

热门文章

  1. 被final修饰的变量到底能不能被修改
  2. 初学编程,到底选Java还是C++?
  3. MATLAB中内置的BP神经网络函数 help newff翻译【学习笔记】
  4. Linux入门篇-文件管理
  5. 链路聚合的作用与实例
  6. 搭建即可运营的秒收录导航网源码带广告管理完美运营版
  7. Mac苹果电脑上有哪些好用的txt小说阅读器?
  8. linux关机了硬盘灯仍然亮着,win10关机硬盘灯还一直亮的原因和解决方法
  9. Linux系统网速测速,Linux系统下的网络带宽测速
  10. js如何把时间戳转化为日期