数据库三大范式

远离那些贬低你理想的人。狭隘的人经常如此,伟大的人会让你感觉自己也可以变好。
——马克·吐温

第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。

学号 姓名 家庭信息
202501 李白 2口人,长沙
202502 杜甫 3口人,上海
202503 王维 4口人,南京

在上面的表中,家庭信息列不满足原子性的要求,故不满足第一范式,调整如下:

学号 姓名 家庭人口 户籍
202501 李白 2口人 长沙
202502 杜甫 3口人 上海
202503 王维 4口人 南京

调整后的每一列都是不可再分的,因此满足第一范式(1NF)

第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)

订单ID 产品ID 产品名称 单价 数量
1001 P001 手机 5000 2

主键(订单ID, 产品ID)

产品名称单价仅依赖产品ID,与订单ID无关,属于部分依赖。调整如下:

订单ID 产品ID 产品名称 数量
1001 P001 手机 2
产品ID 产品名称 单价
P001 手机 5000

第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

学生ID 姓名 学院名称 学院地址
001 李四 计算机系 科技楼A座

主键: 学生ID

学院地址依赖学院名称,而学院名称依赖主键学生ID,形成传递依赖。调整如下:

学生ID 姓名 学院名称
001 李四 计算机系
学院名称 学院地址
计算机系 科技楼A座
posted @ 2025-03-30 14:56  Tsukinor  阅读(21)  评论(0)    收藏  举报