彻底搞懂数据库中的超码,候选码,主码,主属性,非主属性,全码的区别
- 超码:某一个能够唯一标识一条记录的属性或属性集
- 候选码:某一个属性组的值能够唯一的标识一个元组,而其子集不能,则称该属性组为候选码,候选码是一类特殊的超码,包含候选码的属性组一定是超码
- 主码:若一个关系中有多个候选码,则选定其中的一个为主码
- 主属性:候选码属性组中的各个属性称为主属性
- 非主属性:不包含在候选码中的属性称为非主属性
- 全码:关系模式的所有属性是这个关系的候选码,则称该属性组为全码
- 例子:学生表(学号、姓名、性别、年龄、班级、系)
- 学号可以唯一的标识出一个同学的身份,我们可以设置学号为主码。是最简单的候选码。
- 当姓名不重复的时候姓名也可以作为唯一标识,也可以用来作为候选码,所以姓名也可以作为候选码
- 以此类推,最极端的情况是全表都用来做主码,这时的主码也叫全码。
- 所以这里候选码可以是学号,或者姓名(前提是姓名不重复),但是学号+姓名不是候选码,由于它的子集例如学号,姓名能唯一标识一个元组,故不符合定义,它是超码,也就是说候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了,候选码是可以唯一标识一个元组的最少的属性集合。而超码是没有最少属性这个要求的。
- 由主码的定义可知,主码可以从这两者者之间选择一个即可
- 主属性为候选码属性组之间的各个属性,例如,候选码:学号,主属性为学号,非主属性为姓名,性别,年龄,班级,系
- 注意:主属性不能唯一的标识一个元组,而主码必定能够标识(因为主码必定是候选码),两者是不同的.
- 参考文章:
- https://www.zhihu.com/question/24696366
- https://blog.csdn.net/sumaliqinghua/article/details/85872446
- https://blog.csdn.net/hanghangde/article/details/50098353
彻底搞懂数据库中的超码,候选码,主码,主属性,非主属性,全码的区别相关推荐
- mysql 多个主码_数据库中几个基本概念 主码 外码
[一 逻辑模型中的信息可以用三个概念来描述:(1) 实体(如果一个对象拥有许多特性和值,那么它可能是个实体)(2) 属性(如果一个对象拥有一个特性的值,那么它可能是属性) 主码 ,外码也可以称为主键, ...
- 数据库中几个基本概念 主码 外码
主码 ,外码也可以称为主键,外键. 什么是主码,主码是一个能唯一标识一个元组的属性.在一个关系(表)中,主码不一定只有一个,但是一定要有的.因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都 ...
- 一文搞懂产品中的搜索设计
搜索功能是我们日常生活中接触最多的功能之一,它更够很好的提高用户使用产品的效率,用户对搜索功能的依赖性也比较大,所以设计好搜索功能将会很大程度上提高用户体验.本文作者通过分享这篇文章,帮我们搞懂产品中 ...
- 彻底搞懂 JS 中 this 机制
彻底搞懂 JS 中 this 机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 目录 this 是什么 this 的四种绑定规 ...
- 15个示例让你搞懂Linux中的cd命令
15个示例让你搞懂Linux中的cd命令 在Linux中,cd(更改目录)命令是新手和系统管理员最重要且使用最广泛的命令之一.对于没有头绪的管理员来说,cd是导航到其他目录以检查日志,执行程序/应用程 ...
- java 自旋锁_搞懂Java中的自旋锁
轻松搞懂Java中的自旋锁 前言 在之前的文章<一文彻底搞懂面试中常问的各种"锁">中介绍了Java中的各种"锁",可能对于不是很了解这些概念的同学 ...
- 分分搞懂c#中的委托
分分搞懂c#中的委托: 不说废话,不来虚的概念,不管代码是否有意义,看我的优化之路,你会理解委托了: 源代码1 public class test{//我们不管代码是否有意义,我们直接看代码重构和一步 ...
- 一文搞懂Qt中的颜色渐变(QGradient Class)
一文搞懂Qt中的颜色渐变(QGradient Class) 1, 快速开始! Qt中与颜色渐变有关的类是QGradient 其中它又有三个子类:QLinearGradient.QRadialGradi ...
- 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
帮你彻底搞懂JS中的prototype.__proto__与constructor(图解) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文 ...
最新文章
- android中存放程序资源,Android 工程中存放各种程序资源的目录是()
- 已调信号波形是怎样的_【鼎阳硬件智库原创 | 测试测量】初识任意波形发生器...
- 每日一皮:小公司搞中台的真实写照..
- pyspark import 可以通过 --py-files
- 【Python基础】如何用Pandas处理文本数据?
- 利用Virtual Audio Cable实现系统声音录制
- CF思维联系– Codeforces-987C - Three displays ( 动态规划)
- mysql insert 字符集_有关 MySQL 字符集的注意事项-爱可生
- c语言如何把void换成汉字,有没有大佬帮我把这个代码改成void函数形式的代码。拜托了!...
- Windows GDI和GDI+编程实例剖析(1)
- filesaver.js 导出文件路径_CourseMaker微课制作教程20:做好的微课,如何保存和导出为.mp4等视频格式?...
- VS 2005 VS2008 VS2010 设置断点,在调试时产生断点错位如何解决
- [转]IE首页被http://www.9798.net/篡改解决办法
- 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
- PHP商城源码分销奖励/绑定关系设计
- python可视化窗口制作一个摇骰子游戏_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程...
- android椭圆形形框_什么是计算机硬件上的椭圆形Kong?
- Java基础-Lambda表达式基础练习
- 服务器网站扩容一年1g价格,服务器网站扩容 一年1G价格
- amd linux raid,组建RAID0磁盘阵列之AMD篇