软件设计师考试 | 第九章 数据库技术基础 | 关系数据库的规范
(一)函数依赖
数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、最基本的数据依赖。
- 函数依赖
- 非平凡的函数依赖
- 平凡的函数依赖
- 完全函数依赖
- 部分函数依赖
- 传递依赖
- 码
- 主属性和非主属性
- 外码
- 函数依赖的公理系统
(二)规范化
关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范的程度。
范式有1NF
、2NF
、3NF
、4NF
和5NF
,其中1NF
的级别最低。
这几种范式之间,5NF⊂4NF⊂3NF⊂2NF⊂1NF
成立。通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式,这个过程称为规范化。
1. 1NF(第一范式)
定义: 若关系模式R
的每一个分量是不可再分的数据项,则关系模式R
属于第一范式。
存在的问题:
- 冗余度大
- 引起修改操作的不一致性
- 插入异常
- 删除异常
因为上述四个问题,所以要对模式进行分解,并引入了2NF
。
2. 2NF(第二范式)
定义: 若关系模式R∈1NF
,且每一个非主属性完全依赖于码,则关系模式R∈2NF
。
换句话说,当1NF
消除了非主属性对码的部分函数依赖,则称为2NF
。
3. 3NF(第三范式)
定义: 若关系模式R(U,F)
中若不存在这样的码X
,属性组Y
及非主属性Z(Z⫋Y)
使得X→Y(Y/⇢ X)
,Y→Z
成立,则关系模式R∈3NF
。
即当2NF
消除了非主属性对码的传递函数依赖,则称为3NF
。
(三)模式分解及分解应具有的特性
1. 分解
定义: 关系模式R(U,F)
的一个分解是指ρ={R₁(U₁,F₁),R₂(U₂,F₂),...,Rn(Un,Fn)}
,其中,U=U₁∪U₂∪...∪Un
,Fi
是F
在Ui
上的投影。
对一个给定的模式进行分解,使得分解后的模式是否与原来的模式等价有三种情况:
- 分解具有无损连接性
- 分解要保持函数依赖
- 分解既要无损连接,又要保持函数依赖
2. 无损连接
定义: ρ={R₁(U₁,F₁),R₂(U₂,F₂),...,Rn(Un,Fn)}
是关系模式R(U,F)
的一个分解,若对R(U,F)
的任何一个关系r
均有r=mρ(r)
成立,则分解ρ
具有无损连接性。
3. 保持函数依赖
定义: 设关系模式R(U,F)
的一个分解ρ={R₁(U₁,F₁),R₂(U₂,F₂),...,Rn(Un,Fn)}
,如果F=πRi(F)
,则称分解ρ
保持函数依赖。