关系数据库设计基础知识
函数依赖
函数依赖
对于属性集X的每一个确定的值,都有属性Y的一个唯一确定的值与之对应
记Y函数依赖X,X→Y
- 非平凡函数依赖:X→Y,Y∉X
- 平凡函数依赖:X→Y,Y⊆X
完全函数依赖与部分函数依赖
- 完全函数依赖:必须用码的全部属性才能确定另一个属性
- 部分函数依赖:仅需码的部分属性就能确定另一个属性
传递函数依赖
在R(U,F)中 X→Y,Y→Z,Y∉X,Y⇸X,则称Z对X传递依赖
多值依赖
一个属性决定了另一组属性的多个可能组合,且这些组合独立于其他属性存在
- 平凡多值依赖:z = Ø
- 非平凡多值依赖:z ≠ Ø
- 多值依赖具有对称性。即若X→→Y,则X→→Z,其中Z=U-X-Y。
- 多值依赖的传递性。即若X→→Y,Y→→Z,则X→→Z-Y。
- 函数依赖可以看成是多值依赖的特殊情况。
- 若X→→Y,X→→Z,则X→→YZ。
- 若X→→Y,X→→Z,则X→→Y ⋂ Z
- 若X→→Y,X→→Z,则X→→Z-Y
规范化
1NF
若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式。记为R∈1NF。
存在的问题:
- 数据冗余
- 更新异常(修改操作后数据不一致)
- 插入异常
- 删除异常
2NF
若关系模式R∈1NF,且每一个非主属性完全依赖于码,则关系模式R∈2NF。
2NF消除了非主属性对码的部分函数依赖
存在的问题:
- 数据冗余
- 更新异常(修改操作后数据不一致)
- 插入异常
- 删除异常
3NF
若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性Z(Z⊈Y)使得X→Y,(Y⇸X)Y→Z成立,则关系模式R∈3NF。
消除了非主属性对码的函数传递依赖
存在的问题:
- 数据冗余
- 更新异常(修改操作后数据不一致)
- 插入异常
- 删除异常
BCNF巴克斯范式
关系模式R∈1NF,若X→Y且Y⊈X时,X必含有码,则关系模式R∈BCNF
- 当3NF消除了主属性对码的部分函数依赖和传递函数依赖,则称为BCNF。
- 即,只有候选码才能决定其他属性
4NF
关系模式R∈1NF,若对于R的每个非平凡多值依赖X→→Y且Y⊈X时,X必含有码,则关系模式R(U,F)∈4NF。
没有非平凡的非函数依赖的多值依赖