1. 超码:某一个能够唯一标识一条记录的属性或属性集
  2. 候选码:某一个属性组的值能够唯一的标识一个元组,而其子集不能,则称该属性组为候选码,候选码是一类特殊的超码,包含候选码的属性组一定是超码
  3. 主码:若一个关系中有多个候选码,则选定其中的一个为主码
  4. 主属性:候选码属性组中的各个属性称为主属性
  5. 非主属性:不包含在候选码中的属性称为非主属性
  6. 全码:关系模式的所有属性是这个关系的候选码,则称该属性组为全码
  • 例子:学生表(学号、姓名、性别、年龄、班级、系)

    • 学号可以唯一的标识出一个同学的身份,我们可以设置学号为主码。是最简单的候选码。
    • 当姓名不重复的时候姓名也可以作为唯一标识,也可以用来作为候选码,所以姓名也可以作为候选码
    • 以此类推,最极端的情况是全表都用来做主码,这时的主码也叫全码。
    • 所以这里候选码可以是学号,或者姓名(前提是姓名不重复),但是学号+姓名不是候选码,由于它的子集例如学号,姓名能唯一标识一个元组,故不符合定义,它是超码,也就是说候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了,候选码是可以唯一标识一个元组的最少的属性集合。而超码是没有最少属性这个要求的。
    • 由主码的定义可知,主码可以从这两者者之间选择一个即可
    • 主属性为候选码属性组之间的各个属性,例如,候选码:学号,主属性为学号,非主属性为姓名,性别,年龄,班级,系
    • 注意:主属性不能唯一的标识一个元组,而主码必定能够标识(因为主码必定是候选码),两者是不同的.
  • 参考文章:
    • https://www.zhihu.com/question/24696366
    • https://blog.csdn.net/sumaliqinghua/article/details/85872446
    • https://blog.csdn.net/hanghangde/article/details/50098353

彻底搞懂数据库中的超码,候选码,主码,主属性,非主属性,全码的区别相关推荐

  1. mysql 多个主码_数据库中几个基本概念 主码 外码

    [一 逻辑模型中的信息可以用三个概念来描述:(1) 实体(如果一个对象拥有许多特性和值,那么它可能是个实体)(2) 属性(如果一个对象拥有一个特性的值,那么它可能是属性) 主码 ,外码也可以称为主键, ...

  2. 数据库中几个基本概念 主码 外码

    主码 ,外码也可以称为主键,外键. 什么是主码,主码是一个能唯一标识一个元组的属性.在一个关系(表)中,主码不一定只有一个,但是一定要有的.因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都 ...

  3. 一文搞懂产品中的搜索设计

    搜索功能是我们日常生活中接触最多的功能之一,它更够很好的提高用户使用产品的效率,用户对搜索功能的依赖性也比较大,所以设计好搜索功能将会很大程度上提高用户体验.本文作者通过分享这篇文章,帮我们搞懂产品中 ...

  4. 彻底搞懂 JS 中 this 机制

    彻底搞懂 JS 中 this 机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 目录 this 是什么 this 的四种绑定规 ...

  5. 15个示例让你搞懂Linux中的cd命令

    15个示例让你搞懂Linux中的cd命令 在Linux中,cd(更改目录)命令是新手和系统管理员最重要且使用最广泛的命令之一.对于没有头绪的管理员来说,cd是导航到其他目录以检查日志,执行程序/应用程 ...

  6. java 自旋锁_搞懂Java中的自旋锁

    轻松搞懂Java中的自旋锁 前言 在之前的文章<一文彻底搞懂面试中常问的各种"锁">中介绍了Java中的各种"锁",可能对于不是很了解这些概念的同学 ...

  7. 分分搞懂c#中的委托

    分分搞懂c#中的委托: 不说废话,不来虚的概念,不管代码是否有意义,看我的优化之路,你会理解委托了: 源代码1 public class test{//我们不管代码是否有意义,我们直接看代码重构和一步 ...

  8. 一文搞懂Qt中的颜色渐变(QGradient Class)

    一文搞懂Qt中的颜色渐变(QGradient Class) 1, 快速开始! Qt中与颜色渐变有关的类是QGradient 其中它又有三个子类:QLinearGradient.QRadialGradi ...

  9. 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

    帮你彻底搞懂JS中的prototype.__proto__与constructor(图解) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文 ...

最新文章

  1. android中存放程序资源,Android 工程中存放各种程序资源的目录是()
  2. 已调信号波形是怎样的_【鼎阳硬件智库原创 | 测试测量】初识任意波形发生器...
  3. 每日一皮:小公司搞中台的真实写照..
  4. pyspark import 可以通过 --py-files
  5. 【Python基础】如何用Pandas处理文本数据?
  6. 利用Virtual Audio Cable实现系统声音录制
  7. CF思维联系– Codeforces-987C - Three displays ( 动态规划)
  8. mysql insert 字符集_有关 MySQL 字符集的注意事项-爱可生
  9. c语言如何把void换成汉字,有没有大佬帮我把这个代码改成void函数形式的代码。拜托了!...
  10. Windows GDI和GDI+编程实例剖析(1)
  11. filesaver.js 导出文件路径_CourseMaker微课制作教程20:做好的微课,如何保存和导出为.mp4等视频格式?...
  12. VS 2005 VS2008 VS2010 设置断点,在调试时产生断点错位如何解决
  13. [转]IE首页被http://www.9798.net/篡改解决办法
  14. 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
  15. PHP商城源码分销奖励/绑定关系设计
  16. python可视化窗口制作一个摇骰子游戏_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程...
  17. android椭圆形形框_什么是计算机硬件上的椭圆形Kong?
  18. Java基础-Lambda表达式基础练习
  19. 服务器网站扩容一年1g价格,服务器网站扩容 一年1G价格
  20. amd linux raid,组建RAID0磁盘阵列之AMD篇

热门文章

  1. 静态成员-静态成员变量
  2. LeetCode——面试题 10.11. 峰与谷(JAVA)
  3. 三月已逝,接下来是忙碌的四月
  4. 日记侠:微信最简单最轻松的赚钱模式
  5. Linux下缓冲区溢出攻击的原理及对策
  6. 怎样合成gif海报?手把手教你一键制作动态海报
  7. Java基础学习总结(35)——Java正则表达式详解
  8. C++ 一元二次方程求根,直输方程可含分数(附源码、注释)
  9. TensorFlow 字符串 与数字 互相转换
  10. 欠债1469亿北大光环消失,方正集团破产重整