数据库规范化

数据库规范化通过拆分冗余和明确依赖关系,降低更新异常并提升结构清晰度,是关系型建模的基础方法。

#type / concept #status / growing #tech / dev / backend #resource / database

[!info] related notes

数据库规范化

一句话定义

规范化是一组拆分表结构的原则,用来减少冗余、避免更新异常,并让依赖关系更清晰。

核心机制 / 工作原理

规范化关注的是:

  • 同一事实不要在多处重复存储
  • 字段应该依赖“该依赖的键”
  • 修改、插入、删除时不要因为结构混乱产生异常

常见层级:

  • 1NF:列值原子化,不把一列塞成多个值
  • 2NF:在有复合主键时,非主属性不能只依赖主键的一部分
  • 3NF:非主属性不应传递依赖于主键
  • BCNF:比 3NF 更严格,强调决定因素本身也应是候选键

最小例子 / 最小场景

如果把“订单信息”和“商品明细”全放进一张表:

  • 同一个订单号会重复很多次
  • 用户名、地址也会被重复
  • 修改地址时可能出现多处不一致

更合理的拆分通常是:

  • orders
  • order_items
  • products

边界与易混淆点

  • 规范化不是越高越神圣。性能、报表和读优化场景里,适度反规范化是正常工程权衡。
  • 规范化解决的是结构问题,不直接替代索引设计和查询优化。
  • 规范化讨论的是“依赖关系是否清楚”,不是“表越多越高级”。
创建于 2026/5/3 更新于 2026/5/27