转换为BCNF无损连接

标签:
bcnf无损连接bcnf |
分类: 数据库 |
BCNF无损连接
引用王珊的数据库中的内容:
http://s14/mw690/003ORk9tzy7iPWlIJg90d&690
个人总结:
1)首先找到关键字
2)确认各函数依赖是否为BCNF,若不是拆分转化为BCNF,拆到最后其实就是二叉树结构的
BCNF:所有的函数依赖X-->Y都有X包含候选码,详细说就是:
1)所有非主属性完全依赖于候选码;
2)所有主属性完全依赖于每一个不包含它的码;
3)不存在主属性依赖于非主属性;
例1:设有关系模式R(U,F),其中:
解:1)候选码:AD
2)分解:
U1=BC,F1={B->C}为BCNF,
故分解为:BC
例2:设有关系模式R(A,B,C,D),其上的函数依赖集:
解:(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)左边都为单属性,故最小依赖集:
(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无损连接分解为: