一、什么是三大范式
在设计数据库时,要遵守一些规则进行设计,让数据库结构更合理、冗余较少,这些规则统称为范式。
数据库设计最重要的需求和性能,设计时参照的优先级:
需求>性能>表结构
二、最常见的三大范式详解
1、第一范式(1NF): 字段属性不可分割
(1)数据库表中每一个字段都是不可分解的原子值
(2)根据系统的实际需求,进行数据库表字段原子性的合理设计
比如收货地址,包含了省份、城市、区县、详细地址。如果需要经常访问收货地址中的“省份”、“城市”这些信息,则将地址字段拆分成省份、城市、区县、详细地址这些字段进行单独存储,操作起来更为方便,这样设计也更为合理。
反之(不常用)就设计地址这个字段就可以了。
2、第二范式(2NF):设计主键,非主键字段都依赖于主键
(1)基于第一范式设计,必须满足第一范式
(2)设计主键作为每一行数据的唯一标识,同一行数据的每个字段都应该和主键相关,同个表中每行数据都互不相关
PS:如果存在行数据会互相干扰或重复,则需要拆表重新设计。
3、第三范式(3NF):非主键字段不相互依赖(即各种信息只在一个地方存储,不出现在多张表中),消除传递依赖、消除冗余
(1)数据不能存在传递关系,即每个属性跟主键都应该是直接关系
比如:用户购买商品,订单表中的每个订单应该关联的是用户id,而不是将用户信息直接存放在订单表里。