转换为BCNF无损连接
2018-03-12 16:28阅读:
BCNF无损连接
引用王珊的数据库中的内容:

个人总结:
1)首先找到关键字
2)确认各函数依赖是否为BCNF,若不是拆分转化为BCNF,拆到最后其实就是二叉树结构的
BCNF:所有的函数依赖X-->Y都有X包含候选码,详细说就是:
1)所有非主属性完全依赖于候选码;
2)所有主属性完全依赖于每一个不包含它的码;
3)不存在主属性依赖于非主属性;
例1:设有关系模式R(U,F),其中:
U={A,B,C,D},F={A→B,B→C,D→B},把R分解成BCNF模式集:
解:1)候选码:AD
2)分解:
候选码AD,U=ABCD, 拆分
U1=BC,F1={B->C}为BCNF,
U2={ABD},
F2={A-->B,D-->B}非BCNF继续拆分;
U21=AB
F21={A-->B}为BCNF
,U22=DB,F22={D-->B}为BCNF
故分解为:BC AB BD
例2:设有关系模式R(A,B,C,D),其上的函数依赖集:
F={A→C,C→A,B→AC,D→AC}
(1).F的最小等价依赖集Fm。
(2).求R的关键字。
(3).将R分解使其满足BCNF且无损连接性。
解:(1)最小函数依赖集:1)右边拆成单属性F={A→C,C→A,B→A,B->C,D→A,D-->C}
2)删除多余依赖:B-->A:B+=ABC,多余删去,D->A:D+=ACD,多余删去;F={A→C,C→A,B→C,D→C}
3)左边都为单属性,故最小依赖集:
Fm={A→C,C→A,B→C,D→C}
(2)关键字BD;
(3)BCNF无损连接。
关键字:BD, U=ABCD拆分;
U1=AC,F1={A->C} 已为BCNF,
U2=ABD,F2={B-->A,D-->A}非BCNF继续拆分;
U21=AB,F21={B-->A}, U22=AD,F22={D-->A}
故BCNF无损连接分解为: AC,AB,AD;