数据库原理:通过例题弄懂函数依赖,并附带题目 |
您所在的位置:网站首页 › 范式的基本概念 › 数据库原理:通过例题弄懂函数依赖,并附带题目 |
本篇文章主要讲解函数依赖的基本概念,后面会有例题。函数依赖是我们了解范式、求解关系模式属于什么范式的关键,建议对于基本概念还不懂的人仔细看看,本篇可以和另一篇讲解范式的文章一起阅读,题目基本上大差不差。
这篇文章也不光是定义,还有我对于定义的理解,一般定义有其学术严谨性难以理解,而我自己的理解或许能够帮助到你能直观理解。 另一篇文章链接传送门:数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂_Allow-er的博客-CSDN博客 一、函数依赖的定义定义:设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作 理解:其实这个定义很简单,比如有一个关系模式S(Sno,Sdept,Sname),其中Sno代表学生学号,Sdept代表所在系,Sname代表名字。根据函数依赖的定义,我们就是得出: 定义: 理解:上面例子中的 定义: 理解:非平凡和平凡的函数依赖就在于Y是不是X的子集。所以之前的两个函数依赖都不是平凡的函数依赖。只要记住平凡、非平凡函数依赖中的一个即可,另外一个自然就知道了。 三、完全、部分函数依赖 3.1 完全函数依赖定义:在R(U)中,如果 上面的X'--/-->Y是X'不能推出Y,也就是Y不函数依赖于X'的意思。 理解:完全和部分函数依赖区别的关键在于是否有 定义:若 理解:假设有关系模式S(Sno,Cno,Sdept),其中Sno代表学号,Cno代表课程号,Sdept代表学生所在系。能够得到函数依赖: 其中Sno是集合(Sno,Cno)的子集,有 定义:在R(U)中,如果 理解:故名思意就是有传递的意思,就是如果有a-->b、b-->c,则能够推出a-->c,这里还必须b-/->a也就是b不能反推出a,否则就属于直接函数依赖了。 4.2 直接函数依赖定义:在传递函数依赖的定义上如果 理解:如果a-->b,b-->c,则a-->c,不再被其他条件约束了,可以有b-->a。 五、例题 5.1 找出下列关系模式中的候选码,判读是否有部分依赖和传递依赖 第一题:学生(Sno、Sname、Date、Sdept、Class,Area) 其中:Sno代表学号,Sname代表姓名,Date代表出生日期,Sdept代表所在系,Class代表班号,Area代表宿舍区 第二题:教学(Sno、Cno、Grade、Teacher、Tsdept) 其中:Grade代表成绩,Teacher代表老师,Tsdept代表老师所在系 第三题:员工(PID、Ename、Salary) PIDEnameSalary100A胡一民2400100A张小华2100100B张小华2100200A胡一民2400200B胡一民2400200C李红卫1500200C张小华2100200D李红卫1500 5.2 解析 第一题:候选码:Sno 函数依赖: 传递依赖: 结果:有传递依赖,无部分依赖。 第二题:候选码:(Sno,Cno) 函数依赖: 传递依赖: 部分依赖: 结果: 有传递依赖,有部分依赖。 第三题:候选码:(PID,Ename)、(PID,Salary) 函数依赖: 部分依赖: 结果: 无传递依赖,有部分依赖。 六、总结这几个题目可以和另一篇判断范式的文章一起学习,建议一起看看,题目改为求解范式级别,一起弄懂函数依赖和范式事半功倍。 如果有疑问或者错误欢迎在评论区指正,希望能够点赞收藏给我一点鼓励。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |