| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/uzz/cs3 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/uzz/cs3/homework/13106 |
| 这个作业的目标 | 关于函数依赖定义、函数依赖类 |
知识点整理:关于函数依赖定义、函数依赖类型
一.关于函数依赖定义
函数依赖是关系模式中,属性之间的逻辑依赖关系
定义如下:
设关系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],在这里就要联想到函数的单映射和双映射了
函数依赖可以理解为属性之间的一种约束条件,它能够用于判断建立的关系表是否合理

二.函数依赖类型
1.完全函数依赖和部分函数依赖
完全函数依赖:如果在关系模式 R(U) 中,对于任意两个元组 t1,t2∈R,如果t1[A] = t2[A],则t1[B] = t2[B],则称 B 完全函数依赖于 A,记作 A→B。简单来说,如果属性A的值确定后,属性B的值也随之确定,那么就说B完全依赖于A。

部分函数依赖:如果在一个关系模式 R(U) 中,存在一个或多个属性集 X,使得对于 U 中的任意两个元组 t1,t2∈R,只要 t1[X] = t2[X],就有 t1[B] = t2[B],则称 B 部分函数依赖于 X,记作 X→B。简单来说,如果属性集X的值确定后,属性B的值也随之确定,但这种确定并不是唯一的,也就是说存在多个可能的属性集X'(X'属于X)使得属性B的值也确定,那么就说B部分依赖于X。

完全函数依赖和部分函数依赖的主要区别在于:在完全函数依赖中,当决定因素的值确定后,依赖属性的值也随之确定,且这种确定是唯一的;而在部分函数依赖中,决定因素的值确定后,依赖属性的值可能存在多个确定值。
2.传递函数依赖
定义:传递函数依赖(Transitive Functional Dependency)是指如果存在三个或更多的属性集合X、Y和Z,使得X→Y,Y→Z,则称Z传递函数依赖于X,记作X→Z。
eg:考虑一个员工管理系统的关系模式,其中包含员工姓名(emp_name)、员工工号(emp_id)和部门编号(dept_id)三个属性。假设emp_id属性依赖于emp_name属性(即两个员工有相同的员工姓名时,他们的员工工号也相同),而dept_id属性依赖于emp_id属性(即同一个部门的员工具有相同的员工工号)。那么,我们可以得出结论:emp_name属性传递函数依赖于dept_id属性,因为如果两个员工属于同一个部门,那么他们的员工姓名相同,进而他们的员工工号也相同。
