1、第一范式(1NF)
字段具有原子性,即数据库表的每一个字段都是不可分割的原子数据项,不能是集合、数组、记录等非原子数据项。
当实体中的某个属性有多个值时,必须拆分为不同的属性。
如地址address字段,可以拆分成省市区
2、第二范式(2NF)
满足1NF的基础上,要求每一行数据具有唯一性,并且非主键字段完全依赖主键字段。
3、第三方范式(3NF)
满足2NF的基础上,不能存在传递依赖
4、反模式设计
适当增加冗余,从而提升查询效率。
5、表设计原则
1) 原则1
字段少而精,建议20个以内(经验之谈,仅参考), 超过可以拆分。
可以把常用的字段放到一起。
把不常用的字段独立出去
大字段(TEXT/BLOB/CLOB等待) 独立出去。
2) 原则2
尽量用小型字段
用数组代替字符串。(节省空间,并提升性能)
避免使用允许NULL的字段 (因为允许NULL字段很难查询优化, 允许为NULL字段的索引需要额外的空间)
3) 原则3
合理平衡范式和冗余
如果数据量非常大,考虑分库分表。