函数依赖与范式
一、关系模型概念:
数据库中的键(key)也可以称为码,是关系模型中的一个重要概念,它是逻辑结构,不是数据库的物理部分
超键=码:能够唯一标识一条记录的属性或属性集
能唯一标识元组的属性集,其中一个属性可以为作为一个超键,多个属性组合也可以作为一个超键。
候选键=候选码:能够唯一标识一条记录的最小属性集
- 始终能够确保在关系中能唯一标识元组。(超键标准)
- 在属性集中找不出真子集能够满足条件。(不可划分)
主键=主码:某个能够唯一标识一条记录的最小属性集(是从候选码里人为挑选的一条)
候选码的诸属性叫做主属性
例:表1中的(学号)就是主键
外键=外码
在一个关系A中,有一个属性b不是关系A主键或候选键,但他是另一关系B的主键,这中情况属性b则是关系A中的外键
主属性 与 非主属性
- 主属性 包含在任一候选码中的属性称主属性。简单来说,主属性是候选码所有属性的并集
- 非主属性 不包含在候选码中的属性称为非主属性。 非主属性是相对于主属性来定义的。
- 主码包含主属性
二、范式与函数依赖
三、Armstrong公理系统
四、范式
进一步规范消除数据冗余问题
第一范式(1NF)
定义:符合1NF的关系中的每个属性都不可再分,是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
简而言之,第一范式就是无重复的列
下图不是第一范式
第二范式(2NF)
定义:非属性完全依赖于主键
1NF分解为2NF
第三范式(3NF)
定义:基于第二范式,且每一个非主属性都不传递依赖于候选键
2NF分解为3NF
BC范式
关系模式在第三范式仍然存在异常问题
定义:在关系模式中每一个决定因素都包含候选键,也就是说,只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键
可得如下结论:
- 所有非主属性对每一个候选键都是完全函数依赖
- 所有的主属性对每一个不包含它的候选键,也是完全函数依赖
- 没有任何属性完全函数依赖于非候选键的任何一组属性