0.1.为什么需要范式
一个软件项目基本都会用到数据库,项目开发前期分析客户的业务和数据处理需求,然后设计数据库的E-R模型图,确认需求信息的正确和完整。再就要将E-R图转换为多张表,表设计后,很可能结构不合理,出现数据重复保存,简称数据的冗余,这对数据的增删改查带来很多后患,所以我们需要审核是否合理,就像施工图设计后,还需要其他机构进行审核图纸是否设计合理一样。
如何审核呢?需要一些有关数据库设计的理论指导规则,这些规则业界简称数据库的范式。数据库范式为数据库的设计、开发提供了一个可参考的典范。
那么范式的提出是为了解决什么问题?
比如用户表中的地址信息,拆分为省、市这种明确的字段,可以按独立的字段检索、查询。
- 第一范式,要求将列尽可能最小的分割,希望消除某个列存储多个值的冗余的行为比如订单表中的商品分类、详情信息,只需要由商品信息表存储一份即可。
- 第二范式,要求唯一的主键,且不存在对主键的部分依赖,希望消除表中存在冗余(多余)的列比如用户表中不需要存储额外的 其所在城市的人口、城市特点等信息。
- 第三范式,要求没有间接依赖于主键的列,即仍然是希望消除表中冗余的列
很明显,这些范式大都是为了消除冗余而提出的,即尽可能的减少存储成本。
0.2.什么是范式
一些约束、规范、规则 来优化数据库表的设计和存储,这些规则就称为范式。前面提到了三大范式的要求