一、讲解

首先说明 键字=码字,所以 主键=主码=主关键字,候选键=候选码=候选关键字…

所谓关系键,指的是一个表中的一个(或一组)属性,用来标识该表的每一行或与另一个表产生联系。

话不多说,上图:


 相信这个图已经画得很清晰了,下面逐一解释:

1、码=超键:能够唯一标识一条记录的属性或属性集。

标识性:一个数据表的所有记录都具有不同的超键
非空性:不能为空
有些时候也把码称作“键”
  2、候选键=候选码:能够唯一标识一条记录的最小属性集

标识性:一个数据表的所有记录都具有不同的候选键
最小性:任一候选键的任何真子集都不能唯一标识一个记录(比如在成绩表中(学号,课程号)是一个候选键,单独的学号,课程号都不能决定一条记录)
非空性:不能为空
候选键是没有多余属性的超键
举例:学生ID是候选码,那么含有候选码的都是码。
少部分地方也有叫超级码的,但是见得不多
  3、主键=主码:某个能够唯一标识一条记录的最小属性集(是从候选码里人为挑选的一条)

唯一性:一个数据表只能有一个主键
标识性:一个数据表的所有记录都具有不同的主键取值
非空性:不能为空
人为的选取某个候选码为主码
4、主属性 包含在任一候选码中的属性称主属性。简单来说,主属性是候选码所有属性的并集

  非主属性  不包含在候选码中的属性称为非主属性。 非主属性是相对于主属性来定义的。

5、外键(foreign key):子数据表中出现的父数据表的主键,称为子数据表的外键。

6、全码:当所有的属性共同构成一个候选码时,这时该候选码为全码。(教师,课程,学生)假如一个教师可以讲授多门课程,某门课程可以有多个教师讲授,学生可以听不同教师讲授的不同课程,那么,要区分关系中的每一个元组,这个关系模式R的候选码应为全部属性构成 (教师、课程、学生),即主码。

7、代理键:当不适合用任何一个候选键作为主键时(如数据太长等),添加一个没有实际意义的键作为主键,这个键就是代理键。(如常用的序号1、2、3)

8、自然键:自然生活中唯一能够标识一条记录的键(如身份证)

二、例子
下面举例说明

课本上的定义过于笼统,下面我用一张学生成绩信息表给大家详细的说一下:

学生成绩信息表中有(学号、姓名、性别、年龄、系别、专业等)

超键/码:

由于学号能确定一个学生,因此学生表中含有学号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(学号,性别)等

若我们假设学生的姓名唯一,没有重名的现象。

  学号唯一,所以是一个超键姓名唯一,所以是一个超键(姓名,性别)唯一,所以是一个超键(姓名,年龄)唯一,所以是一个超键(姓名,性别,年龄)唯一,所以是一个超键

候选键:

学号唯一,而且没有多余属性,所以是一个候选键

姓名唯一,而且没有多余属性,所以是一个候选键

(姓名,性别)唯一,但是单独姓名一个属性就能确定这个人是谁,所以性别这个属性就是多余属性,所以(姓名,性别)不是候选键
(姓名,年龄),(姓名,性别,年龄)同上,也不是候选键

主键:

主键就是候选键里面的一个,是人为规定的,例如学生表中,我们通常会让“学号”做主键,学号能唯一标识这一个元组。

外键:

外键就很简单了,假如我们还有一个教师表,每个教师都有自己的编号,假设老师编号在教师表中是主键,在学生表中它就是外键。

三、练习
做一道练习题巩固一下(假设名字可能有重复):

参考答案:

1.答案:

(1)候选关键字2个:(学号),(身份证号)
(2)主关键字:(学号)
(3)主属性2个:学号,身份证号
(4)非主属性2个:姓名,系别
2. 答案:

(1)候选关键字1个:(学号,课程号)
(2)主关键字:(学号,课程号)
(3)主属性2个:学号,课程号
(4)非主属性1个:成绩
(5)外部关键字:学号(引用学生信息表中的学号),课程号(引用课程信息表中的课程号)
3.答案:

(1)候选关键字1个:(课程号)
(2)主关键字:(课程号)
(3)主属性1个:课程号
(4)非主属性2个:课程名,学分

如有疑问请在评论区留言,如有帮助麻烦右上角点个赞~~蟹蟹()

候选码、主码、全码、外码、主属性、主键、主关键字、非主属性相关推荐

  1. 码、候选码、主码、全码和外码的区分

    关系数据库中的几个容易混淆的几个概念 码 也称码键.表中的某个属性组,它可以唯一确定一个元组.比如学号 候选码 若关系中某一属性组的值能唯一的标识一个元组,而其子集不能,则称该属性组为候选码 候选码的 ...

  2. mysql 中外码和主码_数据库原理与应用(6)——关系的候选码、主码和外码、关系完整性、关系代数、元组关系的演算、域关系演算...

    一.关系的候选码 候选码(Candidate Key):能唯一标识关系中元组的一个属性或属性集 性质:唯一性,最小性 二.关系的主码和外码 主码(Primary Key):从多个候选码中选择一个作为查 ...

  3. 数据库(笔记)——候选码、主码、外码以及关系的完整性

    关系的码与关系的完整性 关系的码 1. 候选码 2. 主码 3. 外码 关系的完整性 总结 关系的码 1. 候选码 候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键 如: 学生关系中 ...

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

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

  5. 三、外码、关系的完整性约束、关系代数

    一.外码(外键,FOREIGN KEY) 学生关系:学号是主码 选课关系:(学号,课程号)是主码,学号是外码,取值参照了学生关系的主码"学号"的值:课程号也是外码,取值参照了课程关 ...

  6. 输入码(外码),国标码,区位码,机内码,字型码的概念与关系

    输入码: 又称汉字外码,无论是区位码或国标码都不利于输入汉字,为方便汉字的输入而制定的汉字编码,称为汉字输入码.汉字输入码属于外码.不同的输入方法,形成了不同的汉字外码.常见的输入法有以下几类: 按汉 ...

  7. 数据库中的候选码、主码、全码、外码、主属性

    1.候选码:能够唯一标识一条记录的最小属性集.若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码. 2.主码:主码指主关键字.主关键 ...

  8. 主码,候选码,外码,全码,主属性,非主属性的区别

    主码:唯一标识,相当于身份证号外码也可以当主码,即在财务表里引用信息表的身份证号,这个身份证号也可以在财务表里做唯一标识 候选码:在学校里,院系,专业,班级,班里第多少号学生(非学号)可以唯一标识一个 ...

  9. 数据库系统--码,超码,候选码,主属性,非主属性,主码,全码,外码基本概念

    当然,上述只针对学生这一个关系.若涉及参照关系还要引入外码(Foreign Key) ,A关系的其中一个属性同时是B关系的主码,那么该属性则是A关系的一个外码,参照B关系.

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

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

最新文章

  1. eclipse team 没有svn
  2. 为UC做准备:部署Exchange 2010及SP1
  3. 微软10亿美元砸入OpenAI:明为AGI,暗争谷歌,被指云计算换投资
  4. ug11许可证文件路径安装在哪_Matlab2012a安装教程
  5. tomcat中添加直接访问的文件
  6. Effective C# 原则48:了解更多的工具和资源(译)
  7. docker mysql开机自启动_Docker 学会让容器开机自启服务
  8. Myslq 之创建数据表
  9. 让你的网站首页自动选择语言转跳
  10. matlab cy11,matlab解线性回归方程,y=a0+a1*A+a2*B+a3*C+a4*D+a5*E+a6*F; 数据足够,求a0,a
  11. java方法_Java方法
  12. python卸载_微软再出神器,这次终于对Python下手了!
  13. esxi update patch
  14. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛.J强迫症的序列
  15. 2018最新手机号码正则表达式
  16. 高项 人力资源管理论文
  17. ORA-3136错误分析——WARNING Inbound Connection Timed Out
  18. 一文读懂java内部类
  19. 利用curl进行ftp的下载和上传
  20. 【Kotlin】Android-使用WebDAV协议云存储文件(详细)—附demo源码

热门文章

  1. OPPO A37m解账户锁刷机包
  2. 华为“ICT生态纪”应对“推背感”的市场变化
  3. PHP使用imap读取邮件内容,2018可用
  4. React官方中文文档【安装】
  5. maven下载(国内镜像)
  6. 十年了!曾经火爆的Lindows操作系统死灰复燃,还有人记得吗?
  7. 三相永磁同步电机无感滑模观测控制TI源代码解析
  8. Java开源项目(备查)
  9. 时间序列模型是什么?
  10. 利用python语言进行相机标定