这些年的一些经历告诉我,很多初学者搞不清超键、候选键等,被数据库中的各种键搞的一头雾水。下面就跟大家一起聊聊数据库中的那些键。

首先看看各种键的定义:

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

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

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

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

结合实例的具体解释:

假设有如下两个表:

学生(学号,姓名,性别,身份证号,教师编号)

教师(教师编号,姓名,工资)

超键:

由超键的定义可知,学生表中含有学号或者身份证号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(身份证号,性别)等。

候选键:

候选键属于超键,它是最小的超键,就是说如果再去掉候选键中的任何一个属性它就不再是超键了。学生表中的候选键为:(学号)、(身份证号)。

主键:

主键就是候选键里面的一个,是人为规定的,例如学生表中,我们通常会让“学号”做主键,教师表中让“教师编号”做主键。

外键:

外键比较简单,学生表中的外键就是“教师编号”。外键主要是用来描述两个表的关系。

其实这些键还是比较容易区分的,只是初学者一下子看到好几个名字相似的概念,容易自己把自己搞晕,自己给自己制造困难。多读两遍定义,然后结合实例很容易就能把它们区分开。希望这篇文章可以给一些初学者一点点的帮助。

菜鸟学数据库(四)——超键、候选键、主键、外键相关推荐

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

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

  2. mysql建表时建外键约束_数据库建表时一定要设置外键约束关系吗?

    如果被引用的表需要做分库分表,那么无法建立外键约束. 使用外键会降低数据库性能,这个说法并不细致.需要详细分析. 建立外键,那么一般引用字段上需要建立索引.如果不建立索引,被引用的表上删除数据,会全表 ...

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

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

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

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

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

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

  6. 数据库建表时一定要设置外键约束关系吗?

    数据库建表时一定要设置外键约束关系吗? 我们都知道每张数据表都有一个能够确定每行数据唯一性的字段,也就是主键.而在关系数据库中,常常有两表存在一定关系的情况.即一张表的主键跟另一张的外键存在对应关系, ...

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

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

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

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

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

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

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

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

最新文章

  1. C++ transform for_each
  2. 上海名校CS专业第一本科生:我5天里打工3天,丝毫不影响GPA,可见「教学」有多荒谬...
  3. html 弹出遮罩 iframe,iframe正在加载时显示遮罩层 加载完毕后显示iframe
  4. 我们的2008。。。。。。
  5. 堆空间大小怎么配置,各区域怎么划分
  6. CSS引入CSS文件不生效 搞得很恼火
  7. [BZOJ3545][ONTAK2010]Peaks
  8. dubbo控制台安装
  9. python安装cv2模块_python - OpenCV已成功安装但未导入错误:没有名为“ cv2”的模块 - 堆栈内存溢出...
  10. 动态规划之0-1背包问题
  11. python界面开发工具手机版_Python界面编程工具包WxPython
  12. iOS手势识别的工作原理
  13. ORACLE SQL优化大全
  14. 国内外各大搜索引擎登录入口
  15. 软件测试结果分析和质量报告
  16. OnlyOffice 二次开发定制化部署
  17. MarkdownPad2 的基本使用
  18. JAVA如何开发订单通知短信
  19. 【服务器数据恢复】EMC存储Zfs文件系统下raid5数据恢复案例
  20. jquery传输文件到后端,后端处理数据。

热门文章

  1. Python(20)-高级数据类型的公共方法
  2. double operator[](int i)_java中double类型精度丢失问题及解决方法
  3. 基于属性加密的ABE算法的应用场景思考展望
  4. 对于以太坊虚拟机 (EVM)及其相关知识的讲解
  5. 我们真的需要统一的编程规范?
  6. 大数据应用时代来袭 SaaS走向没落?
  7. 让猎头雨天送伞--大话猎头
  8. cygwin/gcc与MinGW
  9. CentOS上安装Docker (图解)
  10. tkinter拦截关闭事件