超键、候选键、主键区别?
超键(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
超键、候选键、主键区别?相关推荐
- sql超键 候选键 主键
超键:如bai果一个关系(表)du中所有属性(列)都由zhi一个属性集合决定,那么这组属性集合称为超键. 显然,由一个关系的所有属性组成的属性集合必然是这个关系的超键. 通俗地讲,超键用来唯一确定一个 ...
- mysql主键long_MySQL主键设计
[TOC] 在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录. MySQL主键设计原则 MySQL主键应当是对用户没有意义的. MySQL主 ...
- mysql 把主键当外键_mysql主键和外键那点事
1.主键: 若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键.主键不能重复,且只能有一个,也不允许为空.定义主键主要是为了维护关系数据库的完整性. 2.外键: 外键用于与另一张表的关 ...
- mysql外键必须是主键吗_mysql数据库外键、主键详解
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号 ...
- mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
parameterType: 参数类型, 可以省略 mysql支持自增主键,自增主键的获取, mybatis也是利用statement.getGenreatedKeys(); useGenerate ...
- SQL Server中如何给主键添加主键约束
SQL Server中如何给主键添加主键约束? 方法/步骤 1 SQL Server中如何给表添加主键约束,下面为大家分享了两种方法希望大家能够速学速懂. 2 3 在如下图中大家可以看到的是一个Stu ...
- python字典添加主键_Python--MySql(主键的创建方式、存储引擎、存储过程、索引、pymsql)...
主键的创建方式 1. create tablestud( idint not null unique, namevarchar(20) ); mysql> descstud;+-------+- ...
- sql 复合主键 联合主键_学习SQL:主键
sql 复合主键 联合主键 If you've already worked with databases, then you could hardly miss the term – Primary ...
- Oracle 如何删除主键新增主键
Oracle 如何删除主键新增主键 ALTER TABLE 表名 drop CONSTRAINT 主键名; ALTER TABLE 表名 add CONSTRAINT 主键名 primary key ...
- mysql主键_mysql主键是什么?
在mysql中,主键全称"主键约束",是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性:主键的作用是确定该数据的唯一性,主要是用于和其他表的外键关联, ...
最新文章
- 清华大学AMiner发布计算机科学会议(期刊)影响力排名
- Eclipse创建struts.xml
- python获取某文件路径_Python获取当前文件路径
- 模态对话框与非模态对话的几种销毁方法与区别
- LeetCode:892. 三维形体的表面积
- 数据本地存储方法封装(笔记)localStorage、sessionStorage
- Leetcode-MySQL-197. 上升的温度
- day16【前台】项目展示
- hibernate4.0+版本和3.0+版本的区别总结
- UVA 1590 IP Networks
- 【MM模块】Inventory Management(IM)库存管理简介
- linux mud 游戏,一笑天涯MUD游戏
- wegame显示密保服务器,wegame英雄联盟怎么选定大区
- 瀚高数据库debug问题
- 构建面向异构算力的边缘计算云平台
- 企业级项目实战讲解!我凭借这份PDF的复习思路,薪资翻倍
- MGN(多粒度网络)模型训练的详细步骤
- 异步爬虫(高效爬虫)
- Greenplum Python专用库gppylib学习——GpArray
- Linux系统启动U盘制作工具
热门文章
- 从技术问题变成RPWT -----------------猛禽
- [单片机] KeilC51单块数码管演示与原理
- 非结构化数据解决方案:优化、优化、优化
- 设计灵感|App登录注册页面设计方式
- 芯片制造工艺中的衡量指标
- 机器翻译实战(英译汉)Transformer代码学习详解
- 在线供应链系统服务方案:构建企业供应链平台业务、功能、技术管理架构
- U盘故障恢复--“文件或目录损坏且无法读取”
- U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法
- 今天的两个收获--linux的特性和海森堡式错误