数据库设计
本节定位
很多新人第一次学数据库设计时,容易把注意力全放在:
- 范式名字
- 规范定义
但更稳的理解应该是:
数据库设计本质上是在减少重复、减少冲突、减少以后维护时出事故。
所以这节最重要的不是背术语,而是先理解“设计不好会出什么问题”。
学习目标
- 理解为什么需要好的数据库设计
- 掌握数据库范式的核心思想
- 学会设计表结构和关系
- 理解索引的作用和使用时机
先建立一张地图
数据库设计更适合按“先分表,再连表,再补索引”来理解:
所以这节真正想解决的是:
- 为什么表不能随便堆在一起
- 为什么设计问题最后会直接变成数据质量和查询效率问题
为什么设计很重要?
一个糟糕的数据库设计会导致:
| 问题 | 后果 |
|---|---|
| 数据冗余 | 同一信息存了 N 遍,浪费空间,改一处要改 N 处 |
| 更新异常 | 改了一处忘了另一处,数据自相矛盾 |
| 插入异常 | 想加一条信息,被迫编造不存在的关联数据 |
| 删除异常 | 删一条记录,意外丢了其他有用信息 |