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

发布时间 2023-11-13 19:46:49作者: 冬日好运连连
这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13106
这个作业的目标 知识点整理:关于函数依赖定义、函数依赖类型

1.函数依赖

(1)函数依赖:函数依赖是指关系中属性间的对应关系,是数据设计的核心部分。通过合理定义和使用函数依赖,我们可以避免数据异常和错误,提高数据库的可维护性,用于确保数据的准确性和一致性。函数依赖从数学角度来定义,在关系中用来刻画关系各属性之间相互制约而又相互依赖的情况。在函数y=f(x)中,y随着自变量x的变化而变化,给定一个x值,就确定唯一一个y值。此时,y函数依赖于x,或x函数决定y,写成x→y,左边的变量称为决定因素,右边的变量称为依赖因素。
(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,不依赖则是在箭头上画上斜线。函数依赖可以理解为属性之间的一种约束条件,它能够用于判断建立的关系表是否合理。

2.函数依赖类型

函数依赖分为:完全函数依赖部分函数依赖传递函数依赖
(1)完全函数依赖
设R为任一给定关系,X、Y为其属性集,若 X→Y,且X中的任何真子集X',都有 X'!→Y,则称 Y 完全函数依赖于 X。
也就是说在函数依赖的基础上,我们的A属性是一个属性组,只有这个属性组中的全部属性才能确定唯一的B属性,A的任何一个子集都不可以。

简易例子(学号,课名)->成绩,而单独的学号或者课名都不能确定成绩,这就叫完全函数依赖。

(2)部分函数依赖
设R为任一给定关系,X、Y为其属性集,若 X→Y,且X中存在一个真子集X',满足 X'→Y,则称 Y 部分函数依赖于 X。
也就是说:和完全函数依赖相比,A属性组中的部分属性就能确定B属性,其它属性可有可无。

简易例子:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
比如(学号,课名)->姓名,其实只要学号就可以了,这样的依赖就叫部分函数依赖。

(3)传递函数依赖
设R为任一给定关系,X、Y、Z 为其不同属性子集,若 X→Y,Y!→X,Y→Z,则有 X→Z,称为 Z 传递函数依赖于 X。
也就是说:如果A->B,B->C,并且B不能->A(防止直接A->C),那么我们可以得出结论A->C,叫做C传递函数依赖A。

简易例子:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A
比如学号->系名,系名->系主任,并且(系名不能决定学号),所以系主任传递函数依赖学号

3.思维导图