数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】

1、函数依赖:在一个表里面,属性X可以映射到属性Y,也就是说知道了X就能确定Y,称X为决定因素。

举栗子🌰:有一个关系模式S(Sno,Sname,Sage)

如果知道了一个学生的学号Sno,那我就能确定他的姓名Sname和年龄Sage。
函数依赖

当然,如果你强制规定学生姓名不能重复。那么,知道了一个学生的姓名也是可以确定其他属性的,这也是满足函数依赖关系的。

注:平凡函数依赖和非平凡函数依赖在这里不做解释

2、完全函数依赖和部分函数依赖

直接举栗子🌰:有一个关系模式S(Sno,Sname,Cno,Grade)

完全函数依赖:如果我想知道某位学生的某一门课的成绩Grade,那我必须得同时知道他的学号Sno和课程号Cno。
但如果我只知道一部分信息,比如他的Sno或者Cno可以吗?答案是不行的!此时称Y[Grade]完全依赖于X[Sno,Cno]。
完全函数依赖
部分函数依赖:如果我想知道某位学生的姓名Sname,那我知道他的学号Sno就可以了。也就是说Y[Sname]只函数依赖于X[Sno,Cno]中的子集x[Sno],此时称Y部分函数依赖于X。
部分函数依赖

3、传递函数依赖

直接讲人话🌰:有一个关系模式S(Sno,Sdept,Mname)

如果我知道了一个学生的学号Sno,那我就能知道他所在的系Sdept。(因为理论上一个学生只属于一个系)
如果我知道了某一个系Sdept,那么我就能知道这个系的系主任的姓名Mname。(一个系只有一个正的系主任,别杠,你赢了。)
也就是说,我知道了一个学生的学号Sno,其实我就知道了他所在系的系主任的姓名Mname。但这个过程中,他们是不存在直接函数依赖的,我需要通过系名称Sdept作为一个桥梁去把二者联系起来的。
传递函数依赖

-------------------------------------END------------------------------------

学习完数据库的函数依赖,可以继续学习数据库码的概念

  • 523
    点赞
  • 1048
    收藏
    觉得还不错? 一键收藏
  • 46
    评论
数据库中,关系模型中的属性之间存在着某种关系,这种关系可以用依赖来描述。依赖可以分为以下四种: 1. 函数依赖:在关系模型中,若一个属性或属性组的取值能够唯一确定另一个属性的取值,那么我们就称这个属性或属性组对另一个属性存在函数依赖。例如,对于关系模型R(A,B,C),如果A可以唯一确定B的取值,那么我们就说B对于A存在函数依赖,用符号表示为A → B。 2. 部分函数依赖:当一个属性组中的某些属性可以唯一确定另一个属性的取值,但是这个属性组中的其他属性不能唯一确定这个属性的取值时,我们就称这个属性对于这个属性组存在部分函数依赖。例如,对于关系模型R(A,B,C),如果A和B组合在一起可以唯一确定C的取值,但是A或B单独出现时不能唯一确定C的取值,那么我们就说C对于A和B组合存在部分函数依赖,用符号表示为AB → C。 3. 完全函数依赖:当一个属性组中的所有属性可以唯一确定另一个属性的取值时,我们就称这个属性对于这个属性组存在完全函数依赖。例如,对于关系模型R(A,B,C),如果A和B组合在一起可以唯一确定C的取值,而且A或B单独出现时不能唯一确定C的取值,那么我们就说C对于A和B存在完全函数依赖,用符号表示为AB → C。 4. 传递依赖:当一个属性依赖于另外一个属性的非主属性时,就存在传递依赖。例如,对于关系模型R(A,B,C,D),如果A → B,B → C,那么我们就说C对于A存在传递依赖,用符号表示为A → B → C。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值