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

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

函数依赖定义

  • 函数依赖是指关系中属性间的对应关系,是数据设计的核心部分。通过合理定义和使用函数依赖,我们可以避免数据异常和错误,提高数据库的可维护性,用于确保数据的准确性和一致性。
    • 函数依赖从数学角度来定义,在关系中用来刻画关系各属性之间相互制约而又相互依赖的情况。在函数y=f(x)中,y随着自变量x的变化而变化,给定一个x值,就确定唯一一个y值。此时,y函数依赖于x,或x函数决定y,写成x→y,左边的变量称为决定因素,右边的变量称为依赖因素。
    • 函数依赖从现实生活中来看,比如,描述一个学生的关系,可以有学号、姓名、所在系等多个属性,由于一个学号对应一个且仅一个学生,一个学生就读于一个确定的系,因而当“学号”属性的值确定之后,“姓名”及“所在系”的值也就唯一地确定了, 此时, 就可以称“姓名”和“所在系”函数依赖于“学号”,或者说“学号”函数决定“姓名”和“所在系”,记作:学号→姓名、学号→所在系。

定义如下:

  • 设关系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,不依赖则是在箭头上画上斜线。
    函数依赖可以理解为属性之间的一种约束条件,它能够用于判断建立的关系表是否合理。

函数依赖类型

函数依赖分为:完全函数依赖、部分函数依赖、传递函数依赖。

  • 完全函数依赖

设R为任一给定关系,X、Y为其属性集,也就是X、Y为U的子集,若X→Y,且X中的任何真子集Z,都有Z→Y都不成立,则称Y完全函数依赖于X。
即:在函数依赖的基础上,我们的A属性是一个属性组,只有这个属性组中的全部属性才能确定唯一的B属性,A的任何一个子集都不可以。
也就是说:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB.

  • 部分函数依赖

设R为任一给定关系,X、Y为其属性集,也就是X、Y为U的子集,若X→Y,且X中的任何真子集Z,都有Z→Y都成立,则称Y部分函数依赖于X。
即:和完全函数依赖相比,A属性组中的部分属性就能确定B属性,其它属性可有可无。
也就是说:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
比如(学号,课名)→姓名,在完全函数依赖中,单独的学号或者课名都不能确定成绩,而在部分函数依赖这里,其实只要学号就可以了,这样的依赖就叫部分函数依赖。

  • 传递函数依赖

设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
比如学号→系名,系名→系主任,并且(系名不能决定学号),所以系主任传递函数依赖学号。