【学习笔记】三大范式
为什么要数据规范化?
-
信息重复
-
更新、插入、删除异常
三大范式
参考博客:
第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。
原子性:保证每一列不可再分
图中存在可在分的项如学校信息和家庭信息,可以分成如下
现在表中的每一项都不可再分了,故满足第一范式
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关
前提:必须满足第一范式
每张表只描述一件事情
该表中是订单号和产品号联合组成主键,但是订单金额和订单金额与产品号无关,只与订单号有关,所以该表不满足第二范式。
需要调整如下图,才能满足第二范式
第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
前提:需要满足第一范式和第二范式
该表中,班主任姓名与主键直接相关,班主任性别和班主任年龄和班主任姓名直接相关,与主键间接相关,所以不满足第三范式。
需要修改如下图:
三大范式是用来规范数据库的设计
但是所有的数据库都要满足规范去设计吗?
阿里的规定:关联查询不得超过三张表
-
考虑商业化需求和目标,数据库的性能更加重要
-
在规范性能的问题时,需要适当考虑规范性
-
故意给某些表增加一些冗余的字段(使多表查询变为单表查询)
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!