函数依赖:
简单来说就是一种决定关系,学生编号x决定学生姓名y,则称学生姓名y函数依赖于学生编号x,记做x->y。
部分函数依赖:
表达一种冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y是U上的子集,x‘是x的真子集,若有x->y且x‘->y,则称y部分函数依赖于x。记做x->py,显然,此时x中存在多余属性,例如,设x(学生编号,学生性别),x‘(学生编号),y(学生姓名),则有x决定y,x‘决定y,此时y部分函数依赖于x。
完全函数依赖:
表达一种无冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y是U上的子集,x‘是x的任意真子集,若有x->y成立且x‘->y总不成立,则称y完全函数依赖于x。显然,此时x中无任何多余属性。
传递函数依赖:
设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y,z是U上的子集,若有x->y,y->z且y不属于x,y->x不成立,则称z传递函数依赖于x。为什么有如此奇怪的限定y不属于x,y->x不成立?,如果y属于x,那么z部分函数依赖于x,此时x中存在多余属性,若y->x成立,则有x和y等价,则R中没有必要同时存在x和y。
平凡函数依赖和非平凡函数依赖:
设一个关系为R(U),X和Y为属性集U上的子集,若X→Y且X不包含Y,则称X→Y为非平凡函数依赖,否则若X包含Y则必有X→Y,称此X→Y为平凡函数依赖.