数据库设计的三座金矿:三范式原则白话指南
创作时间:
作者:
@小白创作中心
数据库设计的三座金矿:三范式原则白话指南
引用
CSDN
1.
https://blog.csdn.net/zhu719224032/article/details/146143029
一、开篇:为什么你的数据库总在闹脾气?
最近在技术社群里看到个段子:程序员小张设计的用户表里同时存着用户地址和邮政编码,结果每次用户搬家他都要哭着改200多个字段。这其实就是典型的"数据库设计翻车现场"。今天我们就用最接地气的方式,聊聊数据库设计的三大黄金准则——三范式原则。
二、知识图谱:三范式全景路线图
三、庖丁解牛:三范式逐层拆解
3.1 第一范式(1NF):你的数据"掰"开了吗?
核心口诀:字段要像俄罗斯套娃,但只能拆到最小那个
常见翻车现场:
CREATE TABLE 用户信息 (
用户ID INT PRIMARY KEY,
联系方式 VARCHAR(200) -- 存着"电话:13800138000,邮箱:test@csdn.com"
);
改造方案:
CREATE TABLE 用户信息 (
用户ID INT PRIMARY KEY,
手机 VARCHAR(20),
邮箱 VARCHAR(50)
);
避坑指南:
- 字段值要像玻璃珠子,不能再拆分
- 禁止用逗号分隔的魔法字符串
- 每列保持单一数据类型
3.2 第二范式(2NF):主键的"完全占有欲"
核心口诀:不是主键亲生的字段,都要被逐出家门
典型问题表结构:
CREATE TABLE 订单明细 (
订单ID INT,
产品ID INT,
产品名称 VARCHAR(50),
单价 DECIMAL,
数量 INT,
PRIMARY KEY (订单ID, 产品ID)
);
这里产品名称只依赖产品ID,是典型的"部分依赖"
解决方案:
-- 订单主表
CREATE TABLE 订单 (
订单ID INT PRIMARY KEY,
下单时间 DATETIME
);
-- 产品表
CREATE TABLE 产品 (
产品ID INT PRIMARY KEY,
产品名称 VARCHAR(50),
单价 DECIMAL
);
-- 订单明细表
CREATE TABLE 订单明细 (
订单ID INT,
产品ID INT,
数量 INT,
PRIMARY KEY (订单ID, 产品ID),
FOREIGN KEY (订单ID) REFERENCES 订单(订单ID),
FOREIGN KEY (产品ID) REFERENCES 产品(产品ID)
);
3.3 第三范式(3NF):斩断依赖的"食物链"
核心口诀:不允许存在"主键->A->B"的依赖链条
问题案例:
CREATE TABLE 员工 (
员工ID INT PRIMARY KEY,
姓名 VARCHAR(20),
部门ID INT,
部门名称 VARCHAR(30),
部门经理 VARCHAR(20)
);
这里部门名称和部门经理都依赖部门ID,而部门ID又依赖员工ID
优化方案:
CREATE TABLE 员工 (
员工ID INT PRIMARY KEY,
姓名 VARCHAR(20),
部门ID INT,
FOREIGN KEY (部门ID) REFERENCES 部门(部门ID)
);
CREATE TABLE 部门 (
部门ID INT PRIMARY KEY,
部门名称 VARCHAR(30),
部门经理 VARCHAR(20)
);
四、实战进阶:什么时候该打破范式?
反范式化常见场景:
- 高频查询报表:用户行为统计表
- 读多写少场景:商品详情页缓存表
- 数据仓库建设:星型模型设计
平衡技巧:
- 80/20法则:满足前两个范式,第三范式酌情处理
- 读写分离:主库范式化,从库反范式
- 版本控制:记录schema变更历史
五、检验学习成果:三范式闯关挑战
- 判断以下表结构是否符合三范式:
CREATE TABLE 图书借阅 (
借阅ID INT PRIMARY KEY,
图书ISBN VARCHAR(20),
图书名称 VARCHAR(100),
读者ID INT,
读者院系 VARCHAR(50),
借阅日期 DATE
);
- 设计一个符合三范式的电商订单系统ER图
(答案可在评论区讨论)
六、避坑指南:新手的十二时辰
- 警惕过度设计:不是所有表都要三范式
- 注意性能代价:连接查询的成本
- 留好扩展空间:适度的冗余字段
- 版本迭代策略:先满足业务,再优化结构
七、总结:三范式的正确打开方式
三范式就像数据库设计的"宪法",但实际操作中要像《大明律》一样灵活运用。记住这三个关键数字:
- 1个核心:确保数据最小冗余
- 2种平衡:范式严格性与查询效率
- 3层验证:逐级检查依赖关系
热门推荐
双十一脱单秘籍:星盘相位助你找到命中注定
成都到北海自驾游:三天打卡文化遗迹
打卡大三巴&威尼斯人:澳门摄影指南
通关恢复后,澳门一日游怎么玩?
澳门必打卡!新濠影汇之星&威尼斯人贡多拉
食物中毒会胸闷气短吗
胸闷气短可能是健康警报,不要再忽视了!
2024高考体检避坑指南:轻松通关!
高考体检视力不过关?别慌!
高考体检指南:如何解读你的体检报告?
掌握食療秘訣,輕鬆擊退咳嗽化痰,快速擺脫不適!
茶叶与脂肪肝:饮用茶叶能否有效减少脂肪肝风险?
护肝的中药材有哪些针对化疗患者
如何选择最适合治疗脂肪肝的茶叶?了解常见茶类及其对脂肪肝的影响
FMD 多靶点联合治疗:克服肿瘤免疫逃逸的新策略
奥运会历史上三次停办,如何产生举办城市,为何每4年举办一次
甲午战争120周年:揭秘日本侵华的地缘政治动机
重庆元宵晚会拍照秘籍大揭秘!
夏季高温必备:科学补充电解质,远离中暑困扰
揭秘Android睡眠模式:告别手机成瘾,拯救你的睡眠质量
哈佛研究:手机蓝光真的会影响睡眠吗?
21天不碰手机,你的睡眠质量会怎样?
古埃及新发现:5250年前的文字之谜
十二金仙:《封神演义》中的道家智慧结晶
从自我成长到持久幸福:突破物质主义的困境
探寻江心屿,千年古渡,文化瑰宝的韵味之旅
广成子:《封神演义》最强金仙?
广成子:十二金仙里的顶级高手
百家讲坛热议:孔老佛的幸福观
积极心态助你提升幸福感!