DATABASE DESIGN · 数据库设计

数据库设计:决定系统十年寿命

表结构设计得好,系统十年好维护;设计得差,改一次动一次刀。本讲从需求分析、ER 建模、范式与反范式到索引设计,讲透一套可落地的数据库设计方法论,帮你少走弯路、少返工。

数据库设计
📐 ER 建模
🧩 范式与反范式
PAIN POINTS

表设计没想清楚,后面全是债

📦

一张大表装下所有字段

什么字段都往一张表里塞,数据冗余、更新异常、查询缓慢,后期拆表代价极大。

🔗

关系混乱,JOIN 满天飞

外键关系没理清,多对多、层级关系乱建,查询又慢又难懂。

🛠️

上线前才想起加索引

数据量小没事,数据一多查询全表扫描,性能崩了才开始补索引。

FEATURES

数据库设计的核心能力

📐

需求建模

从业务梳理实体、属性与关系,先建模再建表。

🧩

范式设计

1NF/2NF/3NF 消除冗余与更新异常,保证数据一致性。

⚖️

反范式取舍

读多写少场景适当冗余与预聚合,用空间换查询性能。

🔗

关系建模

一对多、多对多、自关联、继承等关系正确表达。

🔍

索引设计

按查询模式设计主键、联合索引与覆盖索引,读写平衡。

🛡️

约束与安全

主外键、唯一约束、检查约束与权限,保证数据完整性。

PROCESS

数据库设计五步流程

01

业务需求分析

梳理业务流程、数据对象与规则,明确读多还是写多、量级多大。

02

概念模型 ER

用 ER 图表达实体、属性与关系,先于建表完成设计评审。

03

逻辑与范式

规范化表结构消除冗余,按业务需要做反范式取舍。

04

物理与索引

定字段类型、字符集、主键策略,按查询模式设计索引。

05

评审与演进

设计评审 + 压测验证,配合版本化迁移持续演进。

USE CASES

好的设计用在哪

🛒

电商订单域

订单、商品、库存、优惠券的关系建模,直接影响交易正确性。

👥

用户与权限

用户、角色、权限的多对多建模,是企业系统的地基。

🧾

财务账务

流水、科目、对账的强一致设计,账务数据不能有半分差错。

📰

内容与评论

文章、分类、标签、评论的层级关系,设计与查询效率相关。

存量系统表结构一团乱

我们提供数据库重构与设计评审服务,帮你理清数据模型、为系统减负。

FAQ

数据库设计高频问答

不是。范式消除冗余但 JOIN 多、查询慢。一般到 3NF 即可,读多写少的报表场景可适当反范式(冗余字段、预聚合)换性能。
自增:简单、索引友好、适合单机;UUID:全局唯一、适合分布式,但无序会导致索引碎片。可选雪花 ID 兼顾两者。
数据量千万级以上、单库成为瓶颈时考虑。先做缓存与读写分离,最后才分库分表;设计时预留 sharding key,避免日后迁移阵痛。
整数用 INT/BIGINT、金额用 DECIMAL 避免浮点误差、时间统一 DATETIME/TIMESTAMP、文本用 VARCHAR 并评估长度、字符集统一 utf8mb4。
遵循范式拆分实体,冗余字段需有明确"只读副本"定位并保证同步更新(应用层 + 定时对账),别让冗余成为不一致源头。
看:表职责是否单一、关系是否正确、字段类型与命名规范、是否有合适索引、约束是否完整、是否考虑扩展(时间、版本字段)。

数据是资产,设计要专业

编程新知提供数据库设计、评审与优化服务,为你的业务打好数据地基。