范式,数据设计的规范。优化数据存储方式。
第一范式:
保证数据字段的原子性。即每一个字段不可再分割。
比如:一张用户表,字段:姓名,性别,年龄,地址。 其中的地址就不满足原子性。地址一般会分割为省,市,区。便于业务上对地址条件的筛选和功能扩展。
第二范式:
数据记录的惟一性,非关键字段完全依赖,不部分依赖。(满足第一范式前提下)
比如:一张房间订单表,字段:订单号,姓名,身份证,房间号,手机号。 当一个人订多个房间时,数据记录信息,得身份证号,手机号就是重复的。
可以改为 订单号(主键),姓名,房间号 和 姓名(主键),身份证,手机号 两种表。
第三范式:
表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)。(满足第一,第二范式前提下)
比如 订单号(主键),userid,姓名,房间号 和 userid(主键),姓名,身份证,手机号 两种表
虽然已经拆表了,但是第一张表的姓名关联userid,userid在关联订单号。关联表只存主键字段。
范式的优缺点
- 优点
- 结构合理
- 冗余较小
- 尽量避免插入删除修改异常
- 缺点
- 性能降低
- 多表查询比单表查询速度慢