第一范式

数据表中的每一列(字段),都不可再拆分。比如用户表,用户地址还可以拆分成国家、省份、市区,这样才是符合第一范式的。

第二范式

在第一范式的基础上,非主键列完全依赖主键,而不是依赖主键的一部分。比如说订单表,存储了商品信息(商品价格、商品类型),那么就需要把商品ID和订单ID作为联合主键,才是符合第二范式的。

第三范式

在第二范式的基础上,非主键列只能依赖主键,而不能依赖其他非主键,比如说订单表,就不能存储用户信息(姓名,年龄,地址)。

范式化优缺点

三大范式的设计是为了减少数据库冗余,节省空间,实际上一般公司设计数据库都是反范式化的,桶过冗余一些数据,利用空间换取时间,提高性能。

优点:

  • 减少数据冗余,节省空间
  • 范式化后的表只有很少的数据重复,更新时只需要更新少部分数据,所以更新时范式化比反范式化更快
  • 范式化的表通常比防范式化的表更小

    缺点

  • 范式化的表在查询时通常要关联多张表,会导致性能下降

  • 增加 了索引优化的难度