对第一,二,三,BC范式的理解

第一范式:

只要满足所有字段不可再分,即不存在 “一个字段中有不同的数据类型” 这种情况,例如手机号这个字段不能既有手机号又有姓名年龄这些。

第二范式:

在第一范式的前提下,每个非主属性都完全函数依赖于主键。

首先什么是主属性和非主属性?

主属性就是候选键中的每一个属性,候选键可能是多个属性。不包含在候选键的属性叫非主属性。
候选键可以有多组,例如候选键为AB或者AC或者AD,属性ABCD都包含在候选键中,那么ABCD都是主属性。

什么是完全函数依赖和部分函数依赖?

举个例子,X–>Y , X’ 是X的真子集,若满足X’–>Y,那么Y 部分函数依赖于X,这就是部分函数依赖
X–>Y , X’ 是X的真子集,若对所有的X’!–>Y , 那么Y完全函数依赖于X,这就是完全函数依赖。
例如:\color{red}{(学号和身份证)}–>\color{red}{姓名},身份证–>姓名,姓名部分函数依赖于(学号和身份证)
\color{red}{(身高和体重)}–>\color{red}{肥胖指数},身高不能决定肥胖指数,体重也不能决定肥胖指数,只有\color{red}{(身高和体重)}才能决定\color{red}{肥胖指数},所以,肥胖指数完全函数依赖于(身高和体重)
\color{red}{当主键只有一个属性的时候},是要有主键就是第二范式!\color{red}{当主键包含多个属性的时候},必须满足每个非主属性都完全函数依赖于主键,也就说主键的真子集都不能决定非主属性!只有主键才能决定所有非主属性。

第三范式:

在第二范式的基础上,如果每个非主属性都不传递函数依赖于主键,就是第三范式。
举个例子,非主属性C依赖于非主属性B,非主属性B有依赖于主键A,在第二范式的情况下,如果不存在这种情况,就是第三范式!如果一个属性集所有属性都是主属性,那么一定是第三范式了。

BC范式:

满足BC范式的关系将消除任何属性(主属性和非主属性)对关系键的部分函数依赖和传递函数依赖。
在第三范式下,举个例子
如果不存在\color{red}{(AB)} –>C , B–>C 类似这样的情况,也就是说部分函数依赖。\color{red}{也不存在} A–>B , B–>C 这种情况,也就是传递函数依赖,不管这些ABC属性是主属性还是非主属性,反正就是不存在 “部分函数依赖和传递函数依赖” ,这就是\color{red}{BC范式}

推荐阅读更多精彩内容