news 2026/5/11 18:20:01

数据库设计三范式:简洁易懂解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库设计三范式:简洁易懂解析

“一二三范式”通常是指数据库设计中的第一范式(1NF)、第二范式(2NF)、第三范式(3NF),它们是关系型数据库规范化(Normalization)理论的核心内容,目的是减少数据冗余、避免更新异常、提高数据一致性

下面用通俗易懂的方式解释这三个范式:


🧱 0. 前提:什么是“范式”?

  • 范式 = 数据表设计的“规范标准”。
  • 满足更高范式,意味着数据结构更合理、更健壮。
  • 一般实际开发中,满足第三范式就足够了

✅ 第一范式(1NF):字段不可再分

要求:表的每一列都是原子性的(不可再拆分的最小单位)

❌ 反例:

学号姓名电话号码
001张三13800138000, 13900139000

→ “电话号码”一列包含两个值,违反 1NF。

✅ 正确做法(拆成多行或多列):

学号姓名电话号码
001张三13800138000
001张三13900139000

或者(如果最多两个号码): | 学号 | 姓名 | 电话1 | 电话2 |

核心:每个单元格只能存一个值!


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

前提:已满足 1NF
要求:非主键字段必须完全依赖于整个主键(不能只依赖主键的一部分)

⚠️ 适用场景:主键是复合主键(由多个字段组成)时

❌ 反例(订单明细表):

订单ID商品ID商品名称商品价格数量
O1P1苹果5元2
  • 主键 = (订单ID, 商品ID)
  • 但 “商品名称”、“商品价格”只依赖于“商品ID”,和“订单ID”无关 →部分依赖

→ 如果商品价格变了,所有历史订单都要改,容易出错!

✅ 正确做法:拆表

  • 商品表:商品ID(主键)、商品名称、商品价格
  • 订单明细表:订单ID、商品ID、数量

核心:非主键字段不能“只靠主键的一部分活着”


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

前提:已满足 2NF
要求:非主键字段之间不能有依赖关系(所有非主键字段都直接依赖主键,而不是依赖其他非主键字段)

❌ 反例:

学号姓名系名系主任
001张三计算机李教授
  • 主键:学号
  • 依赖关系:学号 → 系名 → 系主任
    → “系主任”依赖于“系名”,而不是直接依赖“学号” →传递依赖

→ 如果“计算机系”换了系主任,所有该系学生记录都要更新!

✅ 正确做法:拆表

  • 学生表:学号(主键)、姓名、系名
  • 院系表:系名(主键)、系主任

核心:非主键字段之间不能“互相依赖”,都必须直连主键!


🧠 一句话总结三大范式:

范式核心思想
1NF字段不可再分(原子性)
2NF非主键字段必须完全依赖整个主键(消除部分依赖)
3NF非主键字段之间不能互相依赖(消除传递依赖)

💡 实际应用建议:

  • 大多数业务系统设计到3NF 就够了
  • 有时为了查询性能(如报表、大数据分析),会故意反范式化(增加冗余),这是合理的权衡。
  • 范式不是教条,而是指导原则——目标是让数据更可靠、更易维护。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 20:38:39

gnuefkbb

fghuhyikhhhjjgf

作者头像 李华
网站建设 2026/5/2 15:07:00

SMUDebugTool完全指南:5步掌握AMD Ryzen系统深度调试

SMUDebugTool完全指南:5步掌握AMD Ryzen系统深度调试 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…

作者头像 李华
网站建设 2026/4/26 13:33:08

Python ezdxf完整指南:5步掌握DXF文件处理终极技巧

Python ezdxf完整指南:5步掌握DXF文件处理终极技巧 【免费下载链接】ezdxf Python interface to DXF 项目地址: https://gitcode.com/gh_mirrors/ez/ezdxf ezdxf是Python处理DXF文件的终极解决方案,让你无需安装AutoCAD就能轻松创建、读取和修改C…

作者头像 李华
网站建设 2026/5/1 10:14:35

空洞骑士Scarab模组管理器:新手玩家的终极解决方案

空洞骑士Scarab模组管理器:新手玩家的终极解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经为安装《空洞骑士》模组而头疼不已?面对复…

作者头像 李华
网站建设 2026/5/5 14:21:45

联邦学习客户端更新冲突,后来才知道用加权平均聚合策略

💓 博客主页:借口的CSDN主页 ⏩ 文章专栏:《热点资讯》 目录我和AI的相爱相杀日常:当科技狂想曲撞上人类反骨 一、AI生活搭子:从智能家居到具身机器人 二、AI创作:当想象力遇上算法 三、AI医疗:…

作者头像 李华