第9次作业-知识点整理:关于函数依赖定义、函数依赖类型
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/uzz/cs3 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/uzz/cs3/homework/13106 |
| 这个作业的目标 | 第9次作业-知识点整理:关于函数依赖定义、函数依赖类型 |
一、函数依赖定义
- 函数依赖简单点说就是:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。
- 设R(U)是属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体的值与之对应,则称X函数决定Y,或Y函数依赖于X,记作 X→Y。
- X,Y为两个集合,对于集合X中的所有元素,在Y集合中都能找到对应。
当X值不同时:X既可以对应Y的相同元素,也能对应不同元素。
当X值相同时:X只能对应Y中的相同元素。 - 函数依赖与属性之间的联系类型有关。
(1)在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖X→Y,Y→X,即X ↔ Y。
例如,当学生无重名时,SNO与SN。
(2)如果属性X与Y有m :1的联系时,则只存在函数依赖X→Y。
例如,SNO与AGE,DEPT之间均为m:1联系,所以有SNO→AGE,SNO→DEPT。
(3)如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系。
例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以SNO与CNO之间不存在函数依赖关系。 - 比如在设计学生表时,一个学生的学号能决定学生的姓名,也可义说是姓名依赖于学号,现实中,如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖。
二、函数依赖类型
1.完全函数依赖
- 设R是一个具有属性集合U的关系模式,X和Y是U的子集。如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X,记作\(X\overset{f}{\rightarrow}Y\)。
- 单个属性:学号→姓名,这个依赖关系必是完全函数依赖,因为X没真子集。
- 属性组:(学号(Sno),课程号(Cno))→成绩(Grade),其真子集有俩:学号和课程号,如果只知道其中一个,无法推导出个人成绩,必须合在一起整体使用,所以是完全函数依赖。
2.部分函数依赖
- 设R是一个具有属性集合U的关系模式,X和Y是U的子集。如果X→Y,并且对于X的任何一个真子集Z,Z→Y都成立,则称Y部分函数依赖于X,记作\(X\overset{p}{\rightarrow}Y\)。
- 例如:如果想知道某位学生的姓名(Sname),那我知道他的学号(Sno)就可以,也就是说Y[Sname]只函数依赖于X[Sno,Cno]中的子集x[Sno],此时称Y部分函数依赖于X。

3.传递函数依赖
- 设R是一个具有属性集合U的关系模式,X、Y、Z是U的子集,且X、Y、Z是不同的属性集。如果X→Y,Y→X不成立,Y→Z,则称Z传递函数依赖于X,记作\(X\overset{t}{\rightarrow}Z\)。
- 有一个关系模式Std(Sno,Sdept,Mname)如果知道了一个学生的学号(Sno),那我就能知道他所在的系(Sdept),如果知道了某个系(Sdept),那么就能知道这个系的系主任的姓名(Mname),也就是说,知道了一个学生的学号(Sno),就知道了他所在系的系主任的姓名(Mname)。但这个过程中,他们是不存在直接函数依赖的,需要通过系名称(Sdept)作为一个桥梁去把二者联系起来。


浙公网安备 33010602011771号