第一范式:
确保每列的原子性(不可再分)
例如:某张表,有地址的字段,如果地址字段中的某个城市是经常被访问的,就因该将地址这个属性重新拆分为省,市,县等部分来进行存储,这样对地址中的某一部分进行操作是就非常方便;
第二范式:
在第一范式的基础上,确保表中的每一列都和主键相关(一个表中只能保存一种数据)
例如:一个学生表,有学生id,学生姓名,学生性别,但是如果这时要是出现课程的其他信息将违反第二范式;
第三范式:
在第二范式的基础上,确保表中的每一列都和主键直接相关(不能间接相关)
例如:一个员工表,每个员工所在的部门又不同,所以必须将员工编号(主键)和部门编号(外键)建立相应关系,这样在该员工表中就不能出现与部门表的其他信息;(第三范式就是第二范式的升级版,增加了一些限制)
第二范式和第三范式的概念很容易混淆,区分它们的关键点在于
第二范式:非主键列是否完全依赖于主键,还是依赖于主键的一部分;
第三范式:非主键列是直接依赖于主键,还是直接依赖于非主键列。
原文:https://www.cnblogs.com/book-mountain/p/10844638.html