- 范式可以减少数据冗余,方便修改
-
部分依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
- 通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
-
完全依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
- 通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB.
-
传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
- 通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A。
范式的种类
- 1NF范式,即第一范式:关系模式R的数据为不可再分项
- 2NF范式,第二范式:每一个非主属性都完全依赖于R的候选码,称R为第二范式
- 3NF范式,在二范式的基础上,满足不含非主属性对候选码的传递依赖、
范式的优缺点
- 优点:更新快,数据冗余小,检索数据时需要更少的group by或者distinct操作
- 缺点:大多需要联表查询,增加查询代价
反范式的优缺点
- 优点:避免关联,查询速度会更快
- 缺点:数据冗余,修改更新不便
如何选用反范式或者范式
- 在设计中反范式和范式可以结合使用,根据实际需求进行设计,例如多表联合排序,如果使用了反范式,就会更加高效