新浪博客

转换为BCNF无损连接

2018-03-12 16:28阅读:
BCNF无损连接
引用王珊的数据库中的内容:
转换为BCNF无损连接
个人总结:
1)首先找到关键字
2)确认各函数依赖是否为BCNF,若不是拆分转化为BCNF,拆到最后其实就是二叉树结构的
BCNF:所有的函数依赖X-->Y都有X包含候选码,详细说就是:
1)所有非主属性完全依赖于候选码;
2)所有主属性完全依赖于每一个不包含它的码;
3)不存在主属性依赖于非主属性;
例1:设有关系模式R(UF),其中:
U{ABCD}F{ABBCDB},把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(ABCD),其上的函数依赖集:
F{ACCABACDAC}
(1).F的最小等价依赖集Fm
(2).R的关键字。
(3).R分解使其满足BCNF且无损连接性。
解:(1)最小函数依赖集:1)右边拆成单属性F={ACCABA,B->CDA,D-->C}
2)删除多余依赖:B-->A:B+=ABC,多余删去,D->A:D+=ACD,多余删去;F={ACCABCDC}
3)左边都为单属性,故最小依赖集: Fm={ACCABCDC}
(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;


我的更多文章

下载客户端阅读体验更佳

APP专享