1。第一范式第一范式规定表中的每一列都应该是不可分割的最小单位。例如下表中的address字段不是不可分割的最小单元,如下图:其中address也可以拆分为国家和城市,如下图:经过这样的转换,上表满足第一范式。2.第二范式第二范式是在满足第一范式的基础上,规定表中的非主键列不对主键有部分依赖,也就是说每张表只描述一件事。比如下面的订单表是不满足第二范式的,可以拆分成两个独立的表:订单表和产品表。2.1不满足第二范式的订单表PS:上面的表可以拆分成两个独立的表:订单表和商品表。2.2满足第二范式的表订单表:商品表:3.第三范式第三范式在满足第一范式和第二范式的基础上,规定表中的列不具有传递依赖在非主键列上。比如下面的订单表中的客户名就不符合第三范式,因为它对非主键客户号有依赖,如下图:修改后的表结构(符合thirdnormalform)如下:总结第一范式规定表格中的每一列应该是不可分割的最小单位。第二范式是在满足第一范式的基础上,规定表中的非主键列不对主键有部分依赖。第三范式在满足第一范式和第二范式的基础上,规定表中的列对非主键列不具有传递依赖。使用数据库三种范式的好处是:表的结构更简单优雅,表的逻辑性和组织性更强,使用三种范式可以大大减少表中的冗余数据,这节省了数据库资源的存储。参考与致谢《Offer 来了》判断是非,听取他人意见,以数取胜。公众号:Java面试真题分析面试合集:https://gitee.com/mydb/interview
