参考文章:
https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html
第一范式:列拆分原则
- 分级拆分:如家庭住址、户籍等,常见的省市县三级联动,要把省、市、县三部分拆分到三列。
- 前后拆分:如文档基本信息存储时,可能会遇到按照文档格式统计的需求,可以将文档名和文档格式拆分为两列存储。同样如姓名,也可以按照姓和名拆分。
不常用的情况下可以不拆分,视业务情况而定。通俗讲就是减少模糊查询次数。
第二范式:多表原则
- 复杂关系拆表存储:多对多关系时,如电商中常见的订单和商品间的关系,一个订单可以有多个商品,一个商品也可以属于多个订单,此种情况请使用第二范式,将订单和商品独立分表,再通过关系表维护关系。还有系统常见的用户和角色的也一般这样处理。
第三范式:直接关系原则
- 主外键关联:一个表中只存储与主键有直接关系的数据,即建立主外键关系时,只存储主外键关联的列,避免两个表中出现相同列(间接关系列),减少数据冗余。需要其他信息时,通过主外键关联查询获取。
我认为范式和设计模式含义相似,只是一些经验和规范总结,在有实际工作经验时才更好理解。