U=(A,B,C,D,E) F={AB->C,C->B,D->E,D->C} 若R不是3NF,将R分解为无损且保持函数依赖的3NF。
第一步:U1=ABC U2=BC U3=DCE
第二步:
将R分解为ρ={ R1({A,B,C},{AB->C}),
R2({B,C},{C->B}),
R3({D,E},{D->E,D->C}) }
合并吸收:
ρ={ R1({A,B,C},{AB->C,C->B}),
R2({D,E},{D->E,D->C}) }
第三步:不是无损连接,添加码。
R3({A,D},{∅})
所以ρ={ R1({A,B,C},{AB->C,C->B}),
R2({D,E},{D->E,D->C}),
R3({A,D},{∅}) }
答案分解成上面的形式,但是我怎么感觉有点不对,R3那里不应该是{DEC}吗,最后就是 R1({A,B,C})R2({D,E,C})R3({A,D}吧
该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下。
你的分解步骤有误,正常步骤如下:
第一步:U1={A,B,C},U2={B,C},U3={D,C,E}
第二步:根据函数依赖AB->C,将U1分解为R1={A,B,C}。根据函数依赖C->B,将U2分解为R2={B,C}。根据函数依赖D->E和D->C,将U3分解为R3={D,E,C}。
第三步:检查分解是否存在冗余依赖,并进行合并。可以发现R1和R2已经是3NF,而R3中存在冗余依赖C->E。因此,将R3分解为R3'={D,C}和R4={C,E}。此时,R3'和R4都是无损连接的。
第四步:添加缺失的主码。可以发现,R1和R3'都包含A和D,因此可以将它们合并为R5={A,D,B,C}。此时,R2和R4也都包含C,因此可以将它们合并为R6={C,E,D}。
最终,分解成为:R1={A,B,C},R2={B,C},R3'={D,C},R4={C,E},R5={A,D,B,C},R6={C,E,D},它们都是3NF的,且无损连接。注意,R3'应该是{D,C},而不是{DEC}。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
不知道你这个问题是否已经解决, 如果还没有解决的话: