Bakkac's Blog

数据建模steps

2026/5/22

本文目录

上级:后端学习 from zero

1. 业务驱动

技术上的「高效」必须服从业务需求。

实践上要先和利益相关者沟通,确保模型和业务目标一致;再通过用例分析识别最常见的查询和报告需求,以此反推数据结构。

2. 概念建模与 ERD

在深入物理实现前,先构建抽象的、人机可读的逻辑框架。

ERD 用来可视化数据实体、属性和它们之间的关系。如果某个业务逻辑过于复杂,应该考虑拆成独立子模型。

3. 规范化

目标是减少冗余,保证数据完整性。

  • 1NF:确保列的原子性,消除重复组。
  • 2NF:消除对部分主键的依赖。
  • 3NF:消除传递依赖,非主键字段之间不能互相依赖。

工程上通常掌握到 3NF,并学会适度反范式就足够。

4. 反规范化

反规范化是空间换时间,为查询性能引入冗余。

典型场景是过多 JOIN 导致性能瓶颈。但它会增加维护难度和数据不一致风险,所以必须有选择地使用。

5. 索引优化

索引提升检索速度,但会增加写入成本。

重点不是死记 B+ Tree,而是知道:

  • 什么样的 SQL 能命中索引。
  • 为什么范围查询会影响后续索引列。
  • 哪些列经常出现在 WHERE、JOIN、ORDER BY 中。
  • 什么时候需要复合索引。

6. 面向扩展的设计

当数据量增长时,需要考虑:

  • 水平切分:按行把数据分布到不同服务器或服务中。
  • 垂直切分:按列拆分大表,分离高频和低频访问字段。

7. 数据完整性与质量

数据库是数据质量的最后一道防线。

实践包括:

  • 使用主键、外键、唯一约束、Check 约束。
  • 使用事务保证一组操作全成功或全失败。
  • 设计时预判插入、删除、更新异常。

8. 文档化与版本控制

好的模型需要能被他人理解和维护。

  • 维护 ERD。
  • 建立数据字典。
  • 把 schema 变更纳入版本管理。
  • 使用 Flyway、Liquibase 等 migration 工具。

9. 持续迭代

建模不是一劳永逸。需要定期监控性能,收集开发人员和用户反馈,随着业务进化重构模型。

一句话总结:

先做对:规范化、业务对齐;再做快:索引、反规范化、切分;最后做好:文档、监控、持续重构。

后端还需要关注什么

比深钻数据库更有价值的后端主题:

  • 异步处理与消息队列:RabbitMQ、Kafka、可靠消息、幂等、最终一致性。
  • 缓存策略与并发控制:Redis、缓存穿透、击穿、雪崩、分布式锁。
  • DDD 与架构模式:根据业务逻辑拆分表和类,而不是根据表机械写类。
  • 并发编程模型:线程池、虚拟线程、Goroutine、Channel、Event Loop。
  • 安全性:OWASP Top 10、SQL 注入、越权、JWT、OAuth2。
  • 可观测性:日志、链路追踪、指标监控。