help:求属性集合X关于函数依赖集F的闭包X+
求属性集合X关于函数依赖集F的闭包X+
【算法5.1】 计算属性集X关于F的闭包X+。
输入:属性集X为U的子集,函数依赖集F。
输出:X+。
步骤:
(1) 置初始值 A=ф,A*=X;
(2) 如果A≠A*,置A=A*,否则转(4);
(3) 依次检查F中的每一个函数依赖Y→Z,若YA*,置A*=A*∪Z。全部搜索完,转(2);
(4) 输出A*,即为X+。
【例】 已知关系模式R(A,B,C,D,E),F={AB→C,B→D,C→E,EC→B,AC→B}是函数依赖集,求(AB)+。
依算法2.1解:
(1) 置初始值 A=ф,A*=AB;
(2) 因A≠A*,置A=AB;
(3) 第一次扫描F,找到AB→C和B→D,其左部AB,故置A*=ABCD。搜索完,转(2);
(2) 因A≠A*,置A=ABCD;
(3) 第二次扫描F,找到C→E和AC→B,其左部ABCD,故置A*=ABCDE。搜索完,转(2);
(2) 因A≠A*,置A=ABCDE;
(3) 第三次扫描F,找到EC→B,其左部ABCDE,故置A*=ABCDE。搜索完,转(2);
(2) 因A=A*,转(4);
(4) 输出A*,即(AB)+=ABCDE。
用程序写出来,用什么语言都行啊,谢谢!!!