在关系数据库理论中经常出现超码、候选码、主码等概念,它们间的关系是怎样的,有什么区别?

定义

在数据库系统概念(原书第6版)中对这几个概念都有详细的定义。

超码(SuperKey)

是指一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一的标识一个元组(记录)。一个关系模式中可以有多个超码。
其形式化描述: 设R表示关系r模式中的属性集合。如果说R的一个子集K是r的一个超码,则限制了关系r中任意两个不同元组不会在K的所有属性上取值完全相等。即如果t1和t2在r中,且 t1 不等于 t2,则t1.K 不等于 t2.K。
超码中可能会存在无关紧要的属性。

举例说明

假定关系模式,学生(学号,姓名,身份证号)
从分析可知,学号唯一,所以该属性为超码,姓名不唯一,不是超码
身份证号唯一 所以也是一个超码
(学号,姓名) 组合取值唯一, 所以属性组是一个超码
(身份证号,姓名) 组合取值唯一, 所以属性组是一个超码
(学号,身份证号,姓名) 组合取值唯一, 所以属性组也是一个超码
从以上分析可以看出,只要属性或属性组的组合取值唯一,就为超码,很明显,这种唯一可能不是最小的唯一。

候选码(candidate key)

不含有多余属性的超码称为候选码,一个关系模式中可以有多个候选码。
从超码的定义和分析可知,超码中可能包含无关紧要的属性。如果K是一个超码,那么K的任意超集也是超码。比如在上文中的(学号,姓名)属性组,学号本身是超码,所以在学号上的超集也一定是超码。在数据管理和维护中我们更多的会关系学号这个超码对于元组的区分。因此最小的超码称为候选码。

举例说明

在上述关系模式中,学生(学号,姓名,身份证号),
学号是不包含多余属性的超码,所以该属性为候选码。
身份证号也是不包含多余属性的超码,所以该属性为候选码。
也就是说该关系中有两个候选码:学号、身份证号

主码(primary key)

在关系数据库设计中,被设计者选中,用来在一个关系模式中区分不同元组的候选码。一个关系模式中只有一个主码。
关系中的任意两个不同的元组都不允许同时在主码属性上具有相同的值。主码的指定代表了被建模事物在现实世界中的约束。

举例说明

在关系模式中,学生(学号,姓名,身份证号),通过分析学号和身份证号都是候选码,我们可以选择其中一个作为主码。
那到底是选择学号还是身份证号呢?
这里选择学号作为主码。
在主码的选择一般要慎重。一般来说身份证作为敏感信息不用于作为主属性。这也是这里不选择身份证号的主要原因。另外,主码选择时会选择值从不变化或极少变化的属性。假若关系中有属性手机号,当然我们知道每个人的手机号码也是唯一的,所以从分析可知手机号也是候选码,但一个人可能会因为各种原因更换手机号,所以候选码手机号也不且作为主码。

超码、候选码和主码有什么区别?相关推荐

  1. 数据库中的超码、候选码、主码

    码是数据系统中的基本概念.所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质.它包括超码,候选码,主码. 超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识 ...

  2. 【数据库】码,超码,候选码与主码,外码

    码的作用 用于区分不同元组.也就是不同行,此表中则为区分不同学生. 超码 超码 是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组: e.g. 在上表中,{学号} 可唯一标 ...

  3. 数据库中超码、候选码、主码的理解

    有的书中,把码写成健,一个意思. 1.超码 一个或多个属性的集合,这些属性可以让我们在一个实体集(所谓的实体集就是student表中多条记录的集合)中唯一地标识一个实体.如果K是超码,那么所有包含K的 ...

  4. 数据库之关系数据库之超码,候选码,主码,主属性,非主属性(非码属性)之间的关系

    数据库之关系数据库之超码,候选码,主码,主属性,非主属性(非码属性)之间的关系 超码(Super Key): 在关系模型中能唯一标识一个元组的属性集称为关系模式的超码. 候选码(Candidate K ...

  5. 超码、候选码、主码、主属性、非主属性

    数据库相关基础概念 超码 候选码 主码 主属性 非主属性 超码 定义:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一的标识一个实体. 例如:学生是一个实体,则学生的集合是一个实体集, ...

  6. 数据库-超码、候选码、主码

    超码(superkey)绝对算得上计算机术语中翻译以后看起来更复杂的一个典型. 超码和码其实没有任何关系,它本质上是一组属性的集合.这一组集合可以唯一的标识出一个元组,就是说不同元组的超码中的属性是不 ...

  7. 区分候选码、主码、超码

    关系:笛卡尔积的子集 定义 超码:由一个或多个属性组成的一个属性集这个属性集可以唯一确定关系中的每一个元素.(子集也可以唯一确定) 候选码:关系中的某一属性组的值能唯一地标识一个元祖,而其子集不能,则 ...

  8. 关系的候选码、主码、外码以及关系的完整性

    关系的候选码.主码.外码 候选码 定义:能惟一标识关系中元组的一个属性或属性集,称为候选码(Candidate Key) "学生关系"中的学号能惟一标识每一个学生 "选课 ...

  9. 数据库原理和应用(6)—— 候选码、主码和外码,关系的完整性、关系代数、关系的演算

    一.候选码.主码和外码 1. 候选码(Candidate Key) 定义:能唯一标识关系中元组的一个属性或属性集,称为候选码. 性质:具有唯一性和最小性. 2. 关系的主码和外码 主码 定义:从多个候 ...

  10. 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码

    目录 什么是数据模型 什么是关系模型 什么是关系 候选码 Candidate Key 主码 Primary Key 外码 Foreign Key 什么是数据模型 模式是对数据的结构的抽象,模型是对模式 ...

最新文章

  1. pyssdeep模块
  2. linux文字全选_linux编写脚本全选注释素材
  3. [云炬创业管理笔记]第十章商业计划书答辩测试1
  4. 【面试招聘】程序员面试完全指南
  5. MySQL部署2002_MySQL入门02-MySQL二进制版本快速部署
  6. centos7查看当前cpu运行模式_杂集:centos7中设置服务开机自启的两种方法,欢迎补充...
  7. LeetCode 26. 删除排序数组中的重复项
  8. 主窗体相关的知识点 winform
  9. 贝叶斯方法(Bayesian approach) —— 一种概率解释(probabilistic interpretation)
  10. C++编译原理 (转载)
  11. 我去过细节印象最深的酒店
  12. 努力≠上进!那些持续精进的人有多可怕?
  13. 在ListView中使用DropDownList绑定数据……好麻烦
  14. 2018年省赛热身赛第4场
  15. win10平板模式_电脑也能当平板用?并可以轻松实现分屏
  16. 一步解决Bat脚本中包含中文时运行乱码问题
  17. 如何将小程序内置非promise API转换为promise对象(风袖小程序的学习)
  18. 原生纯js完美缓冲运动轮播图
  19. iOS开发脚踏实地学习day15-画板
  20. 新手小白适合做哪个跨境电商平台?测评自养号能带来哪些收益及优势?

热门文章

  1. Dual UOM in Oracle EBS
  2. 个人修改机智云apk之出现couldn‘t find “libSDKLog.so“错误导致机智云apk在真机上调试出现keeps stopping错误解决方法
  3. 基于element-ui实现待支付订单显示定时器
  4. WindowsServer修改用户密码
  5. matlab的syms无法在函数中使用_matlab syms什么意思_常见问题解析
  6. 五步帮你实现用户画像的数据加工
  7. b哩b哩视频弹幕爬虫程序(python)
  8. NVivo 2018 Essential Training NVivo 2018基础教程 Lynda课程中文字幕
  9. python plot画图函数_详解pandas.DataFrame.plot() 画图函数
  10. 非QQ会员如何克隆好友