为什么要有范式
消除数据冗余、防止数据库操作异常(新增异常,删除异常,修改异常)
第一范式 1NF
所有的属性都不可再分,数据表的原子性
第二范式 2NF
某数据库关系模式R在属于第一范式的基础上,非主属性完全依赖于任何一个候选码。
规范化:消除非主属性对候选码的部分依赖。
分解为三个模式
第三范式 3NF
某关系模式R在属于第二范式的基础上,每个非主属性不传递依赖于R的每个关系键则属于第三范式,即不存在传递依赖
上述员工关系中,工资对员工编号传递依赖所以不属于3NF
关系R的候选键为S#,是单属性,不存在部分依赖,属于第二范式,但有传递依赖,所以R不属于第三范式
员工关系中,将关系模式E_S分解为两个关系模式
BC范式 BCNF
关系模式R属于第一范式,且所有的函数依赖 X—>Y (X∉Y),决定因素X都包含了R的一个候选键,则R属于BC范式
R∈3NF,且R只有一个候选码,那么R是BCNF
R∈3NF,R不一定是BCNF