码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。  超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。  候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以候选码是最小超码,它们的任意真子集都不能成为超码。例如,如果K是超码,那么所有包含K的集合都不能是候选码;如果K,J都不是超码,那么K和J组成的集合(K,J)有可能是候选码。  是从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。虽然说主码的选择是比较随意的,但在实际开发中还是要靠一定的经验,不然开发出来的系统会出现很多问题。一般来说主码都应该选择那此从不或者极少变化的的属性。
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一的标识一个实体。

  例如:学生是一个实体,则学生的集合是一个实体集,而超码是用来在学生的集合中区分不同的学生。假设学生(实体)具有多个属性:学号,身份证号,姓名,性别。因为通过学号可以找到唯一一个学生,所以{学号}是一个超码,同理{学号,身份证号}、{学号,身份证号,姓名}、{学号,身份证号,姓名,性别}、{身份证号}、{身份证号,姓名}、{身份证号,姓名、性别}也是超码.在这里,因为不同的学生可能拥有相同的姓名,所以姓名不可以区别一个学生,既{姓名}不是一个超码,{性别}、{姓名、性别}也不是。

  虽然超码可以唯一标识一个实体,但是可能大多数超码中含有多余的属性。所以我们需要候选码。

候选码:如果任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码;

  在上例中,只有{学号}、{身份证号}都是候选码;另外,如果性别和姓名可以唯一标识一个学生,则{姓名,性别}也为超码。

主码:被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码;此外,应该选择哪些从不或极少变化的属性;

总结:  所有码都是一个集合。  所有可以用来在实体集中标识唯一实体的集合,都是超码。  如果任意超码的真子集不能包括超码,则称其为候选码。  被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。  超码包括候选码,候选码包括主码。

转载于:https://www.cnblogs.com/linqiang/archive/2013/01/06/3391330.html

数据库中的超码、候选码、主码相关推荐

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

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

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

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

  3. 彻底搞懂数据库中的超码,候选码,主码,主属性,非主属性,全码的区别

    超码:某一个能够唯一标识一条记录的属性或属性集 候选码:某一个属性组的值能够唯一的标识一个元组,而其子集不能,则称该属性组为候选码,候选码是一类特殊的超码,包含候选码的属性组一定是超码 主码:若一个关 ...

  4. 数据库—属性 码 候选码 主码 外码 主属性 非主属性

    问题产生:在学习第6章关系数据理论时,由于之前关于码的各种概念不熟悉,导致不理解. 资料来源:数据库系统概论–王珊 概念及举例 (1):基础定义 实体:客观存在的物体 属性:一个实体的某个特征 码:能 ...

  5. 函数依赖 候选码 主码 第三范式 BCNF 多值依赖

    关系数据库理论 课本第六章 关系数据库理论 一.函数依赖: 1.完全函数依赖 通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB. 2.部分函数依赖 通过AB能得出C,通过A也能得出C,通 ...

  6. 超码 候选码 主码

    例如:学生是一个实体,则学生的集合是一个实体集,而超码是用来在学生的集合中区分不同的学生.假设学生(实体)具有多个属性:学号,身份证号,姓名,性别.因为通过学号可以找到唯一一个学生,所以{学号}是一个 ...

  7. 数据库SQL语句UPDATE能否修改主码

    首先需要说明的是,本文是在RDBMS为 SQL Server 的前提下进行探讨的,其他RDBMS具体情况不清楚,大家根据自身情况选择性阅读~ 问题来源: 在学习UPDATE关键字修改数据的时候,有一条 ...

  8. java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键

    文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hib ...

  9. 数据库中如何计算候选键/候选码(candidate key)

    在这里不提及过多的概念.原理,直接讲如何计算candidate key

最新文章

  1. Apache Httpd 2.2 配置CA证书,实现Https加密通讯
  2. 第三轮316工程知识竞赛简讯_【资讯】第五届日本文化知识竞赛决赛
  3. java 调整数组顺序使奇数位于偶数前面
  4. 截取指定字符前_VBA学习笔记35-1:字符串拆分与组合
  5. python正弦波和等腰三角波_正弦波脉宽调制(SPWM)原理
  6. 【FFMPE系列】之FFMPEG常用命令
  7. “Hello World!“”团队第七周召开的第二次会议
  8. 麦咭萌app送智伴机器人_国内儿童陪伴机器人品牌盘点
  9. 服务器端移动端车牌识别sdk
  10. Scratch3.0(一)初识Scratch3.0
  11. 统计|如何理解两个总体均值之差的区间估计的计算
  12. ASP.NET Development Server的Directory Browsing模式HTML垃圾代码
  13. Linux学习笔记_2021-01-21
  14. VMWare下载安装以及创建虚拟机教程
  15. 网络分层的真实含义是什么?
  16. 三维点云语义分割模型介绍
  17. Java实现 蓝桥杯 算法训练 Cowboys
  18. 如何用 LaTeX 排版高中数学试卷(转)_Simplelife_新浪博客
  19. 关于VSCODE的插件 一
  20. math.pow 和 Math.sqrt函数

热门文章

  1. Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存
  2. StickyListHeaders的使用
  3. 【原创】基于NIOS II的ADS1256 SPI驱动
  4. SQL-92标准 中文翻译——定义、记号和约定 (记号)
  5. ASP.NET 页面对象模型
  6. 数据结构与算法笔记(三) 线性表(链式描述) 链表
  7. c语言位运算符怎么用,傻傻分不清
  8. pythoncsv格式清洗与转换_数据预处理-清洗转换
  9. Spring Boot开发基础
  10. python groupby用法_Python 标准库实践之合并字典组成的列表