部分函数依赖、完全函数依赖、三范式和BCNF范式

本文深入浅出地解释了数据库中的完全和部分函数依赖,以及第一、第二、第三范式和BCNF范式的概念。通过实例展示了如何识别和解决表设计中的问题,以达到数据规范化,提高数据库效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介于书本上的概念太过于抽象,且本文的芝士经常在面试中被提及,所以用自己的话解释一下,加深印象。

完全、部分函数依赖

完全函数依赖:X–>Y,对于X的任意一个真子集,都有该真子集无法推出Y,则称Y对X完全函数依赖
部分函数依赖:X–>Y,但是Y不完全函数依赖于X,则称Y对X部分函数依赖。

三范式

一范式:每个分量是不可分的数据项
二范式:满足一范式且表中不存在属性对主键部分函数依赖(即依赖于主键的一部分)
如S(Sno,Sname,age,Cno,grade),主键(Sno,Cno)
grade由Sno,Cno决定,但是Sname,age可只由Sno决定,所以不满足2NF
解决方法:一张表解决一件事
S—>S(Sno,Sname,age),SC(Sno,Cno,grade)
三范式:满足二范式,且不存在属性对于主键传递函数依赖
如:Teacher(T#,sal_level,salary)
T#---->sal_level ,sal_level—>salary
解决方法:分为Teacher(T#,sal_level) ,level(sal_level, salary)

BCNF范式

每个决定因素都含有码,需要消除主属性对码的部分、传递函数依赖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值