程序员如何做「数据库设计」:不是建表,是业务建模
很多程序员觉得数据库设计就是把表建起来。
但真正的数据库设计,是对业务的建模。
一、好的数据库设计的目标
1. 数据不丢失
该存的数据都能存,不会因为设计问题丢数据。
2. 查询高效
查询要快,不能一个列表页要等 3 秒。
3. 易于扩展
业务变了,表结构能方便调整。
4. 数据一致
相关联的数据保持一致,不会出现"订单有,用户没了"的情况。
二、数据库设计的步骤
1. 理解业务
这个系统要做什么?核心实体是什么?
2. 确定实体
用户、订单、商品——核心实体有哪些?
3. 确定关系
- 用户和订单:一对多
- 订单和商品:多对多
4. 确定属性
每个实体有哪些属性?
5. 画 ER 图
把实体、关系、属性画出来。
三、设计原则
1. 第一范式(1NF)
每个字段都是原子的,不可再分。
2. 第二范式(2NF)
非主键字段完全依赖于主键。
3. 第三范式(3NF)
非主键字段不依赖于其他非主键字段。
4. 反范式
为了性能,可以适当冗余。
四、常见的错误
❌ 字段设计不合理
把多个值存在一个字段里(如"北京,上海,深圳")。
❌ 关系设计混乱
该拆的没拆,该合的没合。
❌ 忽视索引
查询慢,不知道加索引。
❌ 不考虑扩展性
"这个字段最多存 100 个字符"——谁知道呢?
五、一句话总结
数据库设计 = 理解业务 + 确定实体和关系 + 遵循范式 + 考虑性能。