函数依赖概念
函数依赖是指关系中属性间的对应关系。
函数依赖是从数学角度来定义的,在关系中用来刻画关系各属性之间相互制约而又相互依赖的情况。函数依赖普遍存在于现实生活中,比如,描述一个学生的关系,可以有学号、姓名、所在系等多个属性,由于一个学号对应一个且仅一个学生,一个学生就读于一个确定的系,因而当“学号”属性的值确定之后,“姓名”及“所在系”的值也就唯一地确定了, 此时, 就可以称“姓名”和“所在系”函数依赖于“学号”,或者说“学号”函数决定“姓名”和“所在系”,记作:学号→姓名、学号→所在系。下面对函数依赖给出确切的定义。 定义如下: 设关系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为任一给定关系,X、Y为其属性集,若 X→Y,且X中的任何真子集X',都有 X'!→Y,则称 Y 完全函数依赖于 X。
白话文翻译一波:在函数依赖的基础上,我们的A属性是一个属性组,只有这个属性组中的全部属性才能确定唯一的B属性,A的任何一个子集都不可以。
简易例子:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB. 比如(学号,课名)->成绩,而单独的学号或者课名都不能确定成绩,这就叫完全函数依赖。
2. 部分函数依赖 设R为任一给定关系,X、Y为其属性集,若 X→Y,且X中存在一个真子集X',满足 X'→Y,则称 Y 部分函数依赖于 X。
白话文翻译一波:和完全函数依赖相比,A属性组中的部分属性就能确定B属性,其它属性可有可无。
简易例子:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。 比如(学号,课名)->姓名,其实只要学号就可以了,这样的依赖就叫部分函数依赖。
2. 传递函数依赖 设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 比如学号->系名,系名->系主任,并且(系名不能决定学号),所以系主任传递函数依赖学号。
<br>
标签:关系,依赖,函数,数据库,依赖于,AB,属性 From: https://blog.51cto.com/bluetata/7396199注:本文原创由
bluetata
发布于: https://bluetata.blog.csdn.net/ 转载请务必注明出处。