第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。
函数依赖类型:
①完全函数依赖【简单来说:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB.】
设R是一个具有属性集合U的关系模式,X和Y是U的子集。
如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X,记作 \(X\overset{f}{\rightarrow}Y\);
举个栗子eg:
1.单个属性:学号→姓名,这个依赖关系必是完全函数依赖,因为X没真子集。
2.属性组:(学号,课程号)→个人成绩,其真子集有俩:学号和课程编号,如果只知道其中一个,是推导不出来个人成绩的,必须合在一起整体使用,所以是完全函数依赖。
成绩依赖于学号和课程号两个字段的组合;但只知道学号无法确定成绩,同理只知道课程号也无法确定成绩;只有学号和课程号组合在一起才能标识哪个学生哪门课程的成绩;
因此(学号,课程号)---->成绩 是“完全函数依赖”。
②部分函数依赖【简单来说:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。】
设R是一个具有属性集合U的关系模式,X和Y是U的子集。
如果X→Y,并且对于X的任何一个真子集Z,Z→Y都成立,则称Y部分函数依赖于X,记作 \(X\overset{p}{\rightarrow}Y\)。
举个栗子:
1.(学号,课程号)→姓名,此时X为属性组(学号,课程号)其真子集有俩个:学号、课程号,我们通过学号可以直接得到学生的姓名,也就是学号→姓名,所以(学号,课程号)→姓名为部分函数依赖
2.姓名、性别和班级三个属性只依赖于主键中的学号,与“课程号”无关。
因此(学号,课程号)---->姓名是“部分函数依赖”
(学号,课程号)---->性别是“部分函数依赖”
(学号,课程号)----->班级是“部分函数依赖”
课程名和学时数只依赖于课程号,
因此(学号,课程号)----->课程名是“部分函数依赖”
③传递函数依赖【简单来说:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A】
设R是一个具有属性集合U的关系模式,X、Y、Z是U的子集,且X、Y、Z是不同的属性集。如果X→Y,Y→X不成立,Y→Z,则称Z传递函数依赖于X,记作\(X\overset{t}{\rightarrow}Z\)。
班主任依赖于班级,与学号无关,与课程号也无关
又因班级依赖于学号所以班主任间接依赖于学号
因此,(学号,课程号)----->班主任是“传递函数依赖”
finally来个图总结一下:


浙公网安备 33010602011771号