MySQL-范式

第一范式(1NF)

数据表的每一列都要保持它的原子特性,也就是列不能再被分割。

 

第二范式(2NF)

概率:属性必须完全依赖于主键。
下满这张表不符合第二范式的要求。

 

 

 

依赖

在数据表中,属性(属性组)X确定的情况下,能完全退出来属性Y完全依赖于X。

 
完全依赖
完全依赖是针对于属性组来说,当一组属性X能推出来Y的时候就说Y完全依赖于X。


部分依赖
一组属性X中的其中一个或几个属性能推出Y就说Y部分依赖于X。


结论:当一个第一范式的候选码只有一个属性的时候,那它就是第二范式(2NF)】

 

候选码

当一个属性或者属性组确定的情况下,这张表的其余所有属性就能确定下来,这个属性或者属性组就叫做或候选码。
一张表可以有多个候选码
一般只选一个候选码作为主键
从表中找到两个属性:学号和课程
学号可以推出姓名、系名、系主任。
课程可以推出成绩。
将它们两个设置为联合主键

 

 

 

存在的部分依赖

  姓名对学号存在部分依赖

  系名对学号存在部分依赖

  系主任对学号存在部分依赖

  这显然不符合第二范式的要求,做出修改

 

 表一中分数完全依赖于学号和课程的属性
表二中姓名、系名、系主任完全依赖于学号的属性
第二范式消除了第一范式的部分依赖

第三范式(3NF)

概念:所有的非主属性不依赖于其他的非主属性
传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

在改进后的学生表中:
主属性:学号
非主属性:姓名、系名、系主任

第三范式消除了第二范式的传递函数依赖
BC 范式
主属性不能对候选码存在部分函数依赖或者传递函数依赖

 

范式的目的

  减小数据的冗余性

  提高效率

 

posted @ 2022-04-10 20:32  小酒馆里的清茶  阅读(44)  评论(0)    收藏  举报