Erdmates Logo
Erdmates
返回博客
规范化数据库设计NF

数据库规范化完整指南:从1NF到3NF

通过实际示例,逐步理解数据库规范化的概念及1NF、2NF、3NF。

2026年1月17日9 分钟阅读

什么是数据库规范化?

数据库规范化(Normalization)是通过系统地改进表结构来最小化数据冗余、提高数据完整性的过程。由Edgar F. Codd在1970年代提出,至今仍是关系型数据库设计的基础。

不进行规范化会产生三种**异常(Anomaly)**现象:

  • 插入异常: 插入数据时意外插入其他数据
  • 删除异常: 删除数据时意外删除其他数据
  • 更新异常: 更新数据时部分未更新导致数据不一致

第一范式(1NF):确保原子性

1NF条件: 所有列的值必须是原子值。一个列不能存储多个值。

1NF违反示例:

订单ID客户名商品列表
1张三笔记本, 鼠标

应用1NF后:

订单ID客户名商品
1张三笔记本
1张三鼠标

第二范式(2NF):消除部分函数依赖

2NF条件: 满足1NF,且所有非主键属性完全依赖于主键。

当存在复合主键时需要考虑。将部分依赖的属性分离到独立的表中。

第三范式(3NF):消除传递函数依赖

3NF条件: 满足2NF,且不存在A → B → C形式的传递依赖。

3NF违反示例:

学生ID学生名院系代码院系名
1李四CS计算机科学

"院系名"依赖于"院系代码","院系代码"依赖于"学生ID",因此"院系名"是传递依赖。应将学生表和院系表分开。

规范化的优缺点

优点: 最小化数据冗余、提高数据完整性、消除异常现象

缺点: 增加JOIN操作、查询复杂度提升、可能影响性能

总结

设计数据库时,目标应是达到3NF规范化。Erdmates的AI优化功能可以自动检测当前ERD中的规范化违规并提供改进建议。

立即使用Erdmates开始

使用AI驱动的ERD编辑器开始数据库设计。免费使用。

免费试用演示免费开始

相关文章

bigint、UUID v4 还是 UUID v7?主键选择指南(含 PostgreSQL 18 的 uuidv7())

比较 bigint、UUID v4 和 UUID v7 主键的优缺点,介绍 PostgreSQL 18 内置的 uuidv7() 带来的变化,以及不同场景下的选择方法。

被AI代理读取的数据库:MCP时代的模式设计原则

AI代理通过MCP直接连接数据库的情况越来越多。本文整理如何设计名称、注释和约束,让代理不会误解模式,以及如何安全地划分权限。

PostgreSQL 19预览:影响模式设计与运维的变化(基于Beta 4)

以官方发布说明(Beta 4)为准,整理即将正式发布的PostgreSQL 19的变更中直接影响表设计、迁移和运维的内容。同时介绍在Beta阶段被撤回的功能,以及升级前需要确认的行为变化。

Erdmates Logo
Erdmates

使用自然语言设计数据库,通过AI驱动的ERD编辑器与团队实时协作。

服务

  • 功能介绍
  • 价格方案
  • 演示
  • SQL 转 ERD

资源

  • 博客
  • 帮助
  • 联系我们

法律声明

  • 服务条款
  • 隐私政策
  • 第三方提供
公司名称: Produx|代表人: 최정회
地址: 강원특별자치도 원주시 솔우물2길 4-1 (무실동)
电子邮件: master@erdmates.com
隐私保护负责人: 최정회|托管服务提供商: Amazon Web Services

© 2026 Produx. 版权所有。