1、数据库三范式,轻松理解网上搜罗了一大堆关于数据库范式理解的文章,都是千律一篇的复制粘贴,连例子都是一模一样,拜托有点创意好不,实在看不下去,自己写一篇个人理解三范式的文章。如果有理解上的不正确之处,请联系我: (#=)官方定义:第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。我的理解:第一范式这个不用說了,只要是关系数据库都满足第一范式官方定义:第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖我的理解:在第二范式中组合主键(AB)【注明:也叫做复合主键 】里面的 A 或者 B 与其他字段不能存在组合重复,为解决这个问题,通常的做法是咱们不用组合主键,
2、添加一个 ID,做为单一主键即可满足第二范式。如果不想添加 ID,请满足组合主键(AB)里面的 A 或者 B 与其他字段不能存在组合重复。如:不满足第二范式,复合主键中的 A 与字段 C 组合重复+-+-+-+pk pk row+-+-+-+A B C+-+-+-+A D C+-+-+-+A E C+-+-+-+改为这样满足第二范式(但是不满足第三范式 ,字段 A 与字段 C 是组合重复):+-+-+-+-+pk row row row+-+-+-+-+1 A B C+-+-+-+-+2 A D C+-+-+-+-+3 A E C+-+-+-+-+官方定义:第三范式(3NF):在第二范式的基础
3、上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三 范式。我的理解:在第三范式中字段与字段之间不能存在组合重复如:不满足第三范式,字段 A 与字段 C 组合重复+-+-+-+-+-+pk row row row row+-+-+-+-+-+1 A B C F+-+-+-+-+-+2 A D C G+-+-+-+-+-+3 A E C K+-+-+-+-+-+改为这样满足第三范式:表 1+-+-+-+pk row row +-+-+-+1 A B +-+-+-+2 A D +-+-+-+3 A E +-+-+-+和表 2+-+-+-+pk row row+-+-+-+1 C F +-+-+-+2 C G+-+-+-+3 C K+-+-+-+原则:当出现字段与字段的组合重复 ,如上的 A 和 C 的组合重复 ,首先要考虑的就是把他们拆分为 2 个表,具体是 C 拆到表 1, 还是 A 拆到表 1,看情况而定.关键要理解定义这种范式标准的主要目的是为了减少数据冗余,数据冗余产生的本质就是在一个表中存在字段与字段之间的一对多,或者多对多关系。解决这个几对几的关系问题,就能轻易实现满足第三范式的数据库设计。