1、传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
2、完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
3、部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
扩展资料所谓函数依赖是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖正象一个函数 y = f(x) 一样,x的值给定后,y的值也就唯一地确定了。
如果属性集合Y中每个属性的值构成的集合唯一地决定了属性集合X中每个属性的值构成的集合,则属性集合X函数依赖于属性集合Y,计为:Y→X。属性集合Y中的属性有时也称作函数依赖Y→X的决定因素(determinant)。例:身份z号→姓名。
参考资料来源:百度百科-完全函数依赖
百度百科-部分函数依赖
百度百科-传递函数依赖
如果两个 *** 作访问同一个变量,且这两个 *** 作中有一个为写 *** 作,此时这两个 *** 作之间就存在数据依赖性。数据依赖分为下列3种类型,如表3-4所示。上面3种情况,只要重排序两个 *** 作的执行顺序,程序的执行结果就会被改变。
前面提到过,编译器和处理器可能会对 *** 作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个 *** 作的执行顺序。
这里所说的数据依赖性仅针对单个处理器中执行的指令序列和单个线程中执行的 *** 作,不同处理器之间和不同线程之间的数据依赖性不被编译器和处理器考虑。
注:本文源自《Java并发编程的艺术》一文。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)