- 能唯一标识实体的属性,他是整个实体集的性质(所谓的实体集就是student表中多条记录的集合),而不是单个实体的性质,所有键都不能为空
学号 |
身份证号 |
姓名 |
性别 |
年龄 |
1001 |
123456123456123456 |
张三 |
男 |
18 |
1002 |
123456123456123450 |
李四 |
女 |
19 |
1003 |
123456123456123451 |
王五 |
男 |
22 |
1004 |
123456123456123452 |
赵一 |
女 |
21 |
- 以上表格中属性 [学号] 或 [身份证号] 都可以唯一标识每行的实体,故 [学号] 和 [身份证号] 都是键
超级-键 / 码 / 关键字
- 超级键是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。即所有的键都是超级键
- 如果K是一个超级键,那么K的任意超集也是超级键,也就是说如果K是超级键,那么所有包含K的集合也是超级键。即同时包含键的集合都是超级键
学号 |
身份证号 |
姓名 |
性别 |
年龄 |
1001 |
123456123456123456 |
张三 |
男 |
18 |
1002 |
123456123456123450 |
李四 |
女 |
19 |
1003 |
123456123456123451 |
王五 |
男 |
22 |
1004 |
123456123456123452 |
赵一 |
女 |
21 |
- 以上表中的超级键
[学号] +> ( [身份证号]、[姓名]、[性别]、[年龄] )…
[身份证号] +> ( [学号]、[姓名]、[性别]、[年龄] )…
[姓名], [性别], [年龄] +> ( [学号]、[身份证号] )…
候选-键 / 码 / 关键字
- 若关系中的某一属性或属性组能唯一的标识一个元组(每行的实体),而其任何、子集都不能再标识,则称该属性组为候选键
- 候选键是最小的超键,虽然每个超键都可以唯一标识一个实体,但是可能大多数超键中含有多余的属性。所以我们需要候选键。
学号 |
身份证号 |
姓名 |
性别 |
年龄 |
1001 |
123456123456123456 |
张三 |
男 |
18 |
1002 |
123456123456123450 |
李四 |
女 |
19 |
1003 |
123456123456123451 |
王五 |
男 |
22 |
1004 |
123456123456123452 |
赵一 |
女 |
21 |
- 以上表中的候选键有
- [学号]
- [身份证号]
- [姓名], [性别], [年龄]
全-键 / 码 / 关键字
- 最极端的情况,关系模式地所有属性组是这个关系模式的候选键,称为全键
主-键 / 码 / 关键字
- 用来在同一实体集中区分不同实体的候选键就是主键。一个表的候选键可能有多个,从这些个候选键中选择一个做为主键,选取的主键应该从不或着极少发生变化
学号 |
身份证号 |
姓名 |
性别 |
年龄 |
1001 |
123456123456123456 |
张三 |
男 |
18 |
1002 |
123456123456123450 |
李四 |
女 |
19 |
1003 |
123456123456123451 |
王五 |
男 |
22 |
1004 |
123456123456123452 |
赵一 |
女 |
21 |
- 以上表中的主键可选
- [学号]
- [身份证号]
- 主属性
如一个属性是构成某一个候选键中的一个字段,这个属性就是主属性,所有的主属性都不为空
- 非主属性
不包含候选键的任何字段的属性
代理-键 / 码 / 关键字
- 当不适合用任何一个候选键作为主键时(如数据太长等),添加一个没有实际意义的键作为主键,这个键就是代理键(序号)
外-键 / 码 / 关键字
- 如果一个关系中的一个属性是另外一个关系中的主键则这个属性为外键
学生:
学号(key) |
姓名 |
1001 |
张三 |
1002 |
李四 |
1003 |
王五 |
1004 |
赵一 |
学生信息:
姓名(key) |
性别 |
年龄 |
张三 |
男 |
18 |
李四 |
女 |
19 |
王五 |
男 |
22 |
赵一 |
女 |
21 |
- 以上表中,姓名为学生信息表中的主键,且姓名为学生表的一个属性,故姓名是学生表的外键
自然-键 / 码 / 关键字
- 自然生活中唯一能够标识一条记录的键(如身份证)