作用:数据库设计范式是数据库在设计过程中需要遵守的设计准则,满足范式的数据库结构清晰,不会发生操作异常,可以避免数据冗余;
第一范式(1NF):每个字段都是最小字段,具有原子性,不可再分;
例如:家庭住址字段中包含省市区街道小区门牌号,就不符合第一范式,应当拆分成若干字段分别保存省市区等信息;
拆分家庭住址字段:
用户编号 | 用户名称 | 省份 | 城市 | 区域 | 街道 | 地址 |
1 | 张三 | 陕西省 | 西安市 | 长安区 | 郭杜街道 | 终南嘉园1号楼 |
2 | 李四 | 四川省 | 广元市 | 利州区 | 河滨南路 | 利州小区5号楼 |
第二范式(2NF):每张表必须存在主键,并且其它字段也必须与主键直接依赖,不能仅仅与主键的某一部分依赖(例如:联合主键)
例如:订单表中包含(订单号、商品编号、商品名称、商品价格),订单号+商品编号为联合主键,商品名称和商品价格仅仅与商品编号之间存在依赖关联,与订单编号之间不存在直接依赖关系,因为无论商品名称或商品价格,都不能代表这个订单中的商品信息。(订单中会包含N种商品,M个价格)
订单编号 | 商品编号 | 商品名称 | 商品价格 |
001 | A11 | IPhone13 | 9880 |
002 | B12 | Macbook Pro | 17800 |
修改:拆分为两张表,订单表和商品表
订单编号 | 商品编号 |
001 | A11 |
002 | B12 |
商品编号 | 商品名称 | 商品价格 |
A11 | IPhone13 | 9880 |
A12 | Macbook Pro | 17800 |