第9次作业-知识点整理:关于函数依赖定义、函数依赖类型

发布时间 2023-11-18 23:04:19作者: 紫甘蓝
这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13106
这个作业的目标 第9次作业-知识点整理:关于函数依赖定义、函数依赖类型

一、函数依赖

1)函数依赖分为完全函数依赖,部分函数依赖和传递函数依赖。
2)函数依赖是关系模式中,属性之间的逻辑依赖关系
3)设关系R(U,F),U是属性集,F是函数依赖集,令X、Y是U的两个子集
对于任意R的一个关系r,X的每一个具体值,Y都有唯一值与之对应
则,X决定函数Y,或Y函数依赖于X,记作X→Y(X是自变量,Y是因变量,一个X只能得到一个Y)
若X→Y且Y→X,则X↔Y
不依赖则是在箭头上画上斜线
简单说,若X→Y,那么在关系r上任意两个元组,若ti[X] = tj[X],那么ti[Y] = tj[Y],在这里就要联想到函数的单映射和双映射了
4)函数依赖可以理解为属性之间的一种约束条件,它能够用于判断建立的关系表是否合理
5)平凡函数依赖 若属性集Y是X的子集,则必然存在函数依赖X→Y,这种函数依赖就是平凡的函数依赖,其他类型的函数依赖就是非平凡的函数依赖这里是对属性集是否包含而言的,不是指属性的域的包含关系

对于关系模式SCD
U={SNo, SN, Age, Dept, MN, CNo, Score}
F={SNo→SN, SNo→Age, SNo→Dept, (SNo, CNo)→Score}
一个SNo有多个Score的值与其对应,因此 Score不能唯一地确定,即Score不能函数依赖于SNo,所以有:SNo↛Score,同样有:SNo↛CNo。但是Score可以被(SNo, CNo)唯一地确定。
所以可表示为:(SNo,CNO)→Score。

二、函数依赖类型

(1)平凡函数依赖和非平凡函数依赖
非平凡函数依赖:若Y函数依赖于X,且Y不属于X,则称X→Y为非平凡函数依赖
平凡的函数依赖:若X→Y,且Y属于X,则称X→Y为平凡的函数依赖

(2)完全函数依赖于部分函数依赖
1. 完全函数依赖:在R(U)中,X→Y,且X的任何一个真子集X',都有Y不函数依赖于X',则称为Y对X完全函数依赖
需要分两个情况理解:
(1)X为单个属性值,这时候X→Y,那么这个关系必定为完全依赖关系。
(2)X为属性组,也就是你用他的子集无法推导出Y,必须用整个X才行。
2.部分函数依赖:一个关系模式R(U)中,X和Y为属性集U上的子集,如果X→Y,对与X的真子集Z来说,存在一个Z→Y,那么X→Y为部分函数依赖。

(3)传递函数依赖
传递函数依赖:在R(U)中,X→Y(Y不属于X),X不函数依赖于Y,Z函数依赖于Y,Z不属于Y,那么Z对X传递函数依赖
设R为任一给定关系,X、Y、Z 为其不同属性子集,也就是X、Y、Z为U的子集,若 X→Y,Y→X不成立,Y→Z,则有X→Z,称为Z传递函数依赖于X。
即:如果A→B,B→C,并且B!→A(防止直接→C),那么我们可以得出结论A→C,叫做C传递函数依赖A。
也就是说:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A
比如学号→系名,系名→系主任,并且(系名不能决定学号),所以系主任传递函数依赖学号。
说明:
①若 X→Y,且Y→X,则称x与Y等价,记作 X↔Y。
②若定义中Y→X成立,则x与Y等价,这时候称Z对X直接函数依赖,而不是传递函数。

候选键在函数依赖中的定义

定义:
U是关系R的属性集,若属性集X→U在R上成立,X是R的一个超键
在X是超键的基础上,若X的任一真子集X’ 都有
X’ →U不成立,那么X是R上的一个候选键

如何在函数依赖中寻找候选键

对属性进行分类:
(1)L类:只出现在→左边的属性,必为候选键之一,若X+包含了R的所有属性,则X是唯一的候选键
(2)R类:只出现在→右边的属性,则它是非主属性
(3)N类:在→两边都没出现过的属性,它是主属性
(4)LR类:在→左右两边都出现过的属性,且X+包含了R的所有属性,则X是唯一的候选键