1.第一范式
定义:数据表中每个字段的值必须具有原子性(不可以再次拆分)
错误示例:
用户ID、用户名、用户密码、用户信息这几个字段中,用户信息就不符合第一范式的设计原则。
2.第二范式
定义:在第一范式的基础中,确保数据表中除主键之外的每个字段都依赖主键
错误示例:
商品类别主键id(字段名)
商品类别名称(字段名)
商品名称(字段名)
商品价格(字段名)
上述蓝色字段不符合第二范式定义,商品名称和商品价格并不依赖于商品类别主键id。可以拆分成如下设计
正确示例:
表1:
商品类别主键id
商品类别名称
表2:
商品主键id
商品类别id
商品名称
商品价格
3.第三范式
定义:第三范式是在第二范式的基础上,确保数据表中的每一列都和主键字段直接相关,也就是说,要求数据表中的所有非主键字段不能依赖于其他非主键字段
4.反范式化
定义:数据库中数据量巨大,访问频次高,如果按照三大范式设计数据库表,会产生大量关联查询。会影响数据库的读性能。采用反范式化给数据库表增加冗余字段来解决这个问题。