1.为什么会出现范式:
设计关系模式时可能会存在不好的数据依赖,导致出现过多的数据冗余、更新,删除,插入异常。
2.函数依赖:
已知R(U)是属性集U上的关系模式。X,Y为U的子集。对于R(U)的任一一个子集r,r中不存在X一样,而Y不一样的情况。则称Y函数依赖于X或X函数决定Y,记作X->Y。
3.完全函数依赖以及部分函数依赖:
在R(U)中,如果X->Y,对于X的真子集X1,不存在X1->Y。则是完全函数依赖。否则为部分函数依赖。
4.1NF:
属性原子化不可再分。
5.2NF(消除非主属性对于码的部分函数依赖。):
如果R∈ 1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈ 2NF。一个关系模式R不属于2NF,就会导致插入异常、删除异常、修改复杂。
6.3NF(消除非主属性对于码的传递依赖)
设关系模式R<U,F>∈ 1NF,若R中不存在这样的码X,属性组Y及非主属性Z使得X→ Y,Y→ Z成立,Y不→ X,则称R < U,F > ∈ 3NF。如果R∈ 3NF,则每一个非主属性既不传递依赖码,也不部分依赖于码,也就是说R属于3NF,必有R属于2NF。
7.BCNF(消除主属性对码的部分函数依赖以及传递函数依赖)
R < U,F > 中,若每一个决定因素都包含码,则R < U ,F > ∈ BCNF。一个满足BCNF的关系模式有:所有非主属性对每一个码都是完全函数依赖;所有主属性对每一个不包含它的码也是完全函数依赖;没有任何属性完全函数依赖于非码的任何一组属性。
8.多值依赖的性质:
- 对称性
- 传递性
- 函数依赖可以看作是多值依赖的特殊情况
- 多值依赖于函数依赖的区别:多值依赖的有效性与属性集的范围有关。 4NF就是限制关系模式的属性之间不允许有非平凡非函数依赖的多值依赖,它所允许的非平凡的多值依赖实际上是函数依赖。如果一个关系模式是4NF,则必为BCNF。
9.Armstrong公理系统(有效性、完备性)
- 设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R< U ,F >,对R < U ,F >来说有以下的推理规则:
- A1 自反律:若Y⊆ X⊆ U,则X->Y为F所蕴涵。
- A2 增广律:若X -> Y为所蕴涵,且Z⊆ U,则XZ -> YZ为F所蕴涵。
- A3 传递律:若X -> Y及Y -> Z为F所蕴涵,则X -> Z为F所蕴涵。
推论:
- 由A1、A2、A3可得到:
- 合并规则:由X -> Y,X -> Z,有X->YZ。
- 伪传递规则:由X -> Y,WY -> Z,有XW -> Z。
- 分解规则:由X -> Y及Z⊆Y,有X -> Z。