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

发布时间 2023-11-15 12:51:46作者: Xiiin
这个作业属于哪个课程 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为依赖因素。
  • y=f(x),即给定一个x值,y就确定了唯一的一个值,那么就说y函数依赖与x,或x函数决定y,可以写成X→Y,式子左边的变量称为决定因素,右边的变量称为依赖因素。这也是取名为函数依赖的原因。
    说明:(1)函数依赖和其他数据依赖一样,是语义范畴概念,只能根据数据的语义来确定函数依赖。
    (2)函数依赖不是值关系模式R的某个或某些元祖满足的约束条件,而是指R的所有元祖均要满足的约束条件,不能部分满足。
    (3)函数依赖关心的问题是一个或一组属性的值决定其他属性的值。
若X→Y且Y→X,则X↔Y 不依赖则是在箭头上画上斜线 简单说,若X→Y,那么在关系r上任意两个元组,若ti[X] = tj[X],那么ti[Y] = tj[Y],在这里就要联想到函数的单映射和双映射了。
  • 例如:学号和课名可以一起决定某位同学某科的成绩
    一个学生学号和对应一个姓名和相应的所在系名,相应对应一个系主任。

二.函数依赖类型

1.完全函数依赖

  • 设R是一个具有属性集合U的关系模式,X和Y是U的子集。
    如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X,记作:\(X\overset{f}{\rightarrow}Y\)
例:在函数依赖的基础上,我们的A属性是一个属性组,只有这个属性组中的全部属性才能确定唯一的B属性,A的任何一个子集都不可以。
成绩表(学号,课程号,成绩)关系中,
完全函数依赖:(学号,课程号)→ 成绩,学号 -\→ 成绩,课程号 -\→ 成绩,所以(学号,课程号)→ 成绩 是完全函数依赖

2.部分函数依赖

  • 如果X→Y,并且对于X的任何一个真子集Z,Z→Y都成立,则称Y部分函数依赖于X,记作:\(X\overset{p}{\rightarrow}Y\)
    和完全函数依赖相比,A属性组中的部分属性就能确定B属性,其它属性可有可无。
例:若AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
比如(学号,课名)->姓名,学生学号可以唯一确定一名学生的姓名,这样的依赖就叫部分函数依赖。


说明:只有当决定因素(函数依赖左侧)是组合属性时,讨论 部分函数依赖才有意义,当决定因素是单属性时都是完全函数依赖。

3.传递函数依赖

  • 设R是一个具有属性集合U的关系模式,X、Y、Z是U的子集,且X、Y、Z是不同的属性集。如果X→Y,Y→X不成立,Y→Z,则称Z传递函数依赖于X,记作:\(X\overset{t}{\rightarrow}Z\)
    说明:
    (1)如果X→Y,且Y→X,则称X与Y等价,记作:X→Y
    (2)如果定义中Y→X成立,则X与Y等价,这时称Z对X直接函数依赖,而不是传递函数。
例:当关系模式中,出现非主属性决定非主属性时,就是传递函数依赖。
比如:属性集{学号,姓名,学校编号,学校名称},主键是学号,学号决定学校编号,学校编号决定学校名称,且学校编号、学校名称都属于非主属性,那么就是传递函数依赖。


总结