三大范式
为什么需要数据规范化?
- 信息重复
- 更新异常
插入异常
- 无法显示正常信息
删除异常
- 丢失有效的信息
三大范式
第一范式(1NF)
原子性:保证每一列不可再分
| 学号 | 姓名 | 学历信息 |
|---|---|---|
| 1 | 孙笑川 | 本科,大一 |
| 2 | 刘波 | 硕士,硕二 |
| 3 | Giao哥 | 博士,博三 |
根据第一范式规范后为
| 学号 | 姓名 | 学籍信息 |
|---|---|---|
| 1 | 孙笑川 | 本科 |
| 2 | 刘波 | 硕士 |
| 3 | Giao哥 | 博士 |
| 姓名 | 年级信息 |
|---|---|
| 孙笑川 | 大一 |
| 刘波 | 硕二 |
| Giao哥 | 博三 |
第二范式(2NF)
前提:满足第一范式
每张表只做一件事
| 订单编号 | 商品名 | 单价 | 数量 | 订单金额 | 时间 |
|---|---|---|---|---|---|
| 001 | 铅笔 | 1.00 | 10 | 10.00 | 20201101 |
| 002 | 橡皮擦 | 2.00 | 20 | 40.00 | 20201102 |
| 003 | 胶带 | 3.00 | 30 | 90.00 | 20201103 |
根据第二范式规范后为
| 订单编号 | 商品名 | 单价 | 数量 |
|---|---|---|---|
| 001 | 铅笔 | 1.00 | 10 |
| 002 | 橡皮擦 | 2.00 | 20 |
| 003 | 胶带 | 3.00 | 30 |
| 订单编号 | 订单金额 | 时间 |
|---|---|---|
| 001 | 10.00 | 20201101 |
| 002 | 40.00 | 20201102 |
| 003 | 90.00 | 20201103 |
第三范式(3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据表中的每一列数据都和主键直接关联,而不能间接相关
| 学号 | 学生姓名 | 性别 | 班主任 | 班主任年龄 |
|---|---|---|---|---|
| 001 | 孙笑川 | 男 | 李明 | 30 |
| 002 | 刘波 | 男 | 陈华 | 31 |
| 003 | Giao哥 | 男 | 刘丽 | 32 |
根据第三范式规范后为
| 学号 | 学生姓名 | 性别 | 班主任 |
|---|---|---|---|
| 001 | 孙笑川 | 男 | 李明 |
| 002 | 刘波 | 男 | 陈华 |
| 003 | Giao哥 | 男 | 刘丽 |
| 班主任 | 班主任年龄 |
|---|---|
| 李明 | 30 |
| 陈华 | 31 |
| 刘丽 | 32 |
规范性 与 性能的问题简要分析
关联查询的表不得超过三张
- 考虑商业化的需求和目标(成本,用户体验等),数据库的性能更加重要
- 在规范性能问题的时候,需要适当的考虑一下规范性
- 故意给某些表增加一些冗余字段(从多表查询变为单表查询)
- 故意增加一些计算列(从大数据量降低为小数据量的查询:索引)
评论 (0)