超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key):不含有多余属性的超键称为候选键
主键(primary key):用户选作元组标识的一个候选键程序主键

比如一个小范围的所有人,没有重名的,考虑以下属性

身份证 姓名 性别 年龄

身份证唯一,所以是一个超键
姓名唯一,所以是一个超键
(姓名,性别)唯一,所以是一个超键
(姓名,性别,年龄)唯一,所以是一个超键
--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的

身份证唯一,而且没有多余属性,所以是一个候选键
姓名唯一,而且没有多余属性,所以是一个候选键
--这里可以看出,候选键是没有多余属性的超键

考虑输入查询方便性,可以选择 身份证 为主键
也可以 考虑习惯 选择 姓名 为主键
--主键是选中的一个候选键

一题搞懂什么是候选键 
看下题目先 
在SQL Server数据库中,有一个学生信息表如下所示,在该表中不能作为候选键的属性集合为( ) (选择一项) 
学号 姓名 性别 年龄 系别 专业 
20020612 李辉 男 20 计算机 软件开发 
20060613 张明 男 18 计算机 软件开发 
20060614 王小玉 女 19 物理 力学 
20060615 李淑华 女 17 生物 动物学 
20060616 赵静 男 21 化学 食品化学 
20060617 赵静 女 20 生物 植物学 
a){学号} 
b){学号、姓名} 
c){年龄、系别} 
d){姓名、性别} 
e){姓名、专业} 
可能大家不知道如何来选择。如果这个题目我们可以正确的解答,那么对于超键以及候选键和主键的概念已经有很深刻的认识了。 
看下概念: 
超键:在关系中能惟一标识元组的属性集称为关系模式的超键。 
候选键:不含有多余属性的超键称为候选键。也就是在候选键中,若要再删除属性就不是键了。 
主键:用户选作元组标识的一个候选键称为主键。 
u<6{mzh=|M 
透过概念,我们可以了解到,超键包含着候选键,候选键中包含着主键。主键一定是惟一的。为什么呢?因为他的爷爷超键就是惟一的。 
我们分析一下上面的题目,abcde5个答案都可以作为超键,他们组合在一起的集合可以用来惟一的标识一条数据记录(实体)。 
请注意我们的要求:候选键。候选键要求是不能包含多余属性的超键,我们看一下答案b。在答案b中,如果我们不使用姓名也可以惟一的 
标识一条数据实体,可以说姓名字段在这里是多余的。那么很明显,b选项包含了多余字段属性。那么这题答案应该选择b

那么其他的4个选项都可以作为候选键,假设很幸运,a)学号 被选择作为用户正在使用的候选键来惟一标识元组了,那么他很幸运的 
获得了主键的称号

原文博客地址:https://www.cnblogs.com/zhoading/p/10933725.html

超键、候选键、主键区别?相关推荐

  1. sql超键 候选键 主键

    超键:如bai果一个关系(表)du中所有属性(列)都由zhi一个属性集合决定,那么这组属性集合称为超键. 显然,由一个关系的所有属性组成的属性集合必然是这个关系的超键. 通俗地讲,超键用来唯一确定一个 ...

  2. mysql主键long_MySQL主键设计

    [TOC] 在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录. MySQL主键设计原则 MySQL主键应当是对用户没有意义的. MySQL主 ...

  3. mysql 把主键当外键_mysql主键和外键那点事

    1.主键: 若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键.主键不能重复,且只能有一个,也不允许为空.定义主键主要是为了维护关系数据库的完整性. 2.外键: 外键用于与另一张表的关 ...

  4. mysql外键必须是主键吗_mysql数据库外键、主键详解

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号 ...

  5. mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列

    parameterType: 参数类型, 可以省略 mysql支持自增主键,自增主键的获取, mybatis也是利用statement.getGenreatedKeys();  useGenerate ...

  6. SQL Server中如何给主键添加主键约束

    SQL Server中如何给主键添加主键约束? 方法/步骤 1 SQL Server中如何给表添加主键约束,下面为大家分享了两种方法希望大家能够速学速懂. 2 3 在如下图中大家可以看到的是一个Stu ...

  7. python字典添加主键_Python--MySql(主键的创建方式、存储引擎、存储过程、索引、pymsql)...

    主键的创建方式 1. create tablestud( idint not null unique, namevarchar(20) ); mysql> descstud;+-------+- ...

  8. sql 复合主键 联合主键_学习SQL:主键

    sql 复合主键 联合主键 If you've already worked with databases, then you could hardly miss the term – Primary ...

  9. Oracle 如何删除主键新增主键

    Oracle 如何删除主键新增主键 ALTER TABLE 表名 drop CONSTRAINT 主键名; ALTER TABLE 表名 add CONSTRAINT 主键名 primary key ...

  10. mysql主键_mysql主键是什么?

    在mysql中,主键全称"主键约束",是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性:主键的作用是确定该数据的唯一性,主要是用于和其他表的外键关联, ...

最新文章

  1. 清华大学AMiner发布计算机科学会议(期刊)影响力排名
  2. Eclipse创建struts.xml
  3. python获取某文件路径_Python获取当前文件路径
  4. 模态对话框与非模态对话的几种销毁方法与区别
  5. LeetCode:892. 三维形体的表面积
  6. 数据本地存储方法封装(笔记)localStorage、sessionStorage
  7. Leetcode-MySQL-197. 上升的温度
  8. day16【前台】项目展示
  9. hibernate4.0+版本和3.0+版本的区别总结
  10. UVA 1590 IP Networks
  11. 【MM模块】Inventory Management(IM)库存管理简介
  12. linux mud 游戏,一笑天涯MUD游戏
  13. wegame显示密保服务器,wegame英雄联盟怎么选定大区
  14. 瀚高数据库debug问题
  15. 构建面向异构算力的边缘计算云平台
  16. 企业级项目实战讲解!我凭借这份PDF的复习思路,薪资翻倍
  17. MGN(多粒度网络)模型训练的详细步骤
  18. 异步爬虫(高效爬虫)
  19. Greenplum Python专用库gppylib学习——GpArray
  20. Linux系统启动U盘制作工具

热门文章

  1. 从技术问题变成RPWT -----------------猛禽
  2. [单片机] KeilC51单块数码管演示与原理
  3. 非结构化数据解决方案:优化、优化、优化
  4. 设计灵感|App登录注册页面设计方式
  5. 芯片制造工艺中的衡量指标
  6. 机器翻译实战(英译汉)Transformer代码学习详解
  7. 在线供应链系统服务方案:构建企业供应链平台业务、功能、技术管理架构
  8. U盘故障恢复--“文件或目录损坏且无法读取”
  9. U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法
  10. 今天的两个收获--linux的特性和海森堡式错误