范式是作用
消除重复数据,减少数据冗余。让数据库内的数据更加合理,提升磁盘空间利用率;
消除潜在异常【插入异常,更新异常,删除异常】。
第一范式 1NF
强调列的原子性,每一列都是不可再分的最小数据单元。每一个属性都不可再分了;
第二范式 2NF
- 首先是要满足第一范式,然后表中必须有一个主键;
- 对于没有包含主键中的列【非主键列】,必须完全依赖于主键,而不能只依赖主键的一部分。
表中的属性必须完全依赖于全部主键,而不是部分主键。这是为了进一步减少插入异常和更新异常;
第三范式 3NF
满足2NF;
- 非主键列必须完全依赖于主键,不能存在传递依赖;不能存在这种情况:非主键列A依赖于非主键列B,非主键列B依赖于主键;非主键外的所有字段必须互补依赖。
- 第三范式是为了消除数据库中关键字之间的依赖关系。
范式的选择
范式不是越高越好,要看实际情况而定。第三范式已经很大程度上减少数据冗余,并且减少造成插入异常,更新异常和删除异常。有时候,为了提高运行效率,可以让数据冗余【反三范式,一般某个数据经常被访问时,比如数据表中放量语文数学英语成绩,但是如果某个时间经常要查询总分,那么为了减少计算,可以加上总分这个冗余字段】
