键和相关属性的概念
在范式的定义中会使用到主键和候选键,数据库中的键(key由一个或者多个属性组成,数据库中最常用的几种键和属性的定义:
键:
-
超键: 能唯一标识一条记录的属性集叫做超键
- 属性集: 就是多个属性的一个集合,如果有一个属性可以唯一的标识一条记录,这个属性和任何的属性组合到一起构成的属性集都能作为超键
-
候选键: 如果超键中不包括多余的属性,那么这个超键就是一个候选键
- 这里的多余的属性就是指的不能唯一的表示一条记录的属性
- 候选键其实就是最小的超键
- 候选键也可以是一个属性集,这个属性集中的所有属性都可以唯一的区分开每条记录
-
主键: 用户可以从候选键中选择一个作为主键
-
外键: 如果数据表R1的某个属性不是R1的主键,而是另一个数据表R2的主键,那么这个属性就是数据表R1的外键
属性:
-
主属性: 包含在任意候选键中的属性都称之为主属性
- 也就是可以出现在候选键的属性集中的属性都是主属性
-
非主属性: 与主属性相对,指的是不包含在任何一个候选键中的属性
通常我们也将候选键称之为"码",把主键也称为"主码",因为键可能是由多个属性组成的,针对单个属性,我们还可以用主属性和非主属性来区分
下面我们通过一个例子来理解键和相关属性
首先我们先给出两个表:
- 球员表(player): 球员编号 , 姓名 , 身份证号 , 年龄 , 球队编号
- 球队表(team) : 球队编号 , 主教练 , 球队所在地
超键: 对于球员表来说,超键就是包括球员编号或者身份证号的任意组合,因为球员编号和和身份证号都是可以唯一区分开一条记录的字段
候选键: 就是不包含多余属性的超键 ,对于球员表来说就是(球员编号)或者(身份证号)或者(球员编号,身份证号)
主键: 主键是由我们自己选定,也就是在候选键中选择一个作为主键,比如: (球员编号)
外键: 球员表中的球队编号
主属性: 在球员表中,主属性是(球员编号)和(身份证号)
非主属性: 在球员表中,非主属性有(姓名),(年龄),(球队编号)都是非主属性
补充:
主属性就是可以唯一区分一条记录的属性
非主属性就是不可以唯一区分一条记录的属性