SQL 数据库范式 — 1NF/2NF/3NF
数据库规范化:第一范式1NF(原子性)、第二范式2NF(消除部分依赖)、第三范式3NF(消除传递依赖)、反规范化的权衡、BCNF范式 · 难度:入门 · +10XP
SQL 数据库范式 —— 1NF、2NF、3NF
数据库范式是设计表结构的指导原则。遵循范式可以减少数据冗余、避免更新异常。前三范式(1NF、2NF、3NF)是实际开发中最常用的。
第一范式 1NF:原子性
每个字段只存一个值,不能有重复组。
-- 违反1NF:tags存了多个值
CREATE TABLE articles (id INT, tags VARCHAR(200)); -- tags='SQL,MySQL,数据库'
-- 符合1NF:拆分为关联表
CREATE TABLE article_tags (article_id INT, tag VARCHAR(50));
第二范式 2NF:消除部分依赖
非主键字段必须完全依赖于主键(不能只依赖部分主键)。
第三范式 3NF:消除传递依赖
非主键字段不能依赖其他非主键字段。
-- 违反3NF:city_name依赖city_id,而非直接依赖主键
CREATE TABLE users (id INT, city_id INT, city_name VARCHAR(50));
-- 符合3NF:city_name放在cities表中
动手练习
- 基础练习:检查你的表设计是否满足1NF。
- 进阶应用:识别并修复一个违反2NF的表设计。
- 项目实战:审计项目数据库,找出违反3NF的地方并评估是否值得修改。