怎么看函数是否是无损连接分解?
很多书都有步骤求解,在这我按例子来说,就不把书上的写上来了
1. 第一步,画表(R的属性作为列,ρ的属性作为行)
2. 第二步,填充a(根据ρ中的元素,在表格跟ρ属性相关的一格,填充为a)
3. 第三步,根据函数依赖,填充表格
4. 第四步,循环第三步,直到表格的某一行被填充完整或者循环结果重复
5. 第五步,如果有一行是满的,即关系模式的分解具有无损连接性,反之是有损连接分解
例1、关系模式R(U,V,W,X,Y,Z),函数依赖F={U→V,W→Z,Y→U,WY→X},分解ρ={WZ,VY,WXY,UV}
第一步,画表(R的属性作为列,ρ的属性作为行)
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | ||||||
VY | ||||||
WXY | ||||||
UV |
. 第二步,填充a(根据ρ中的元素,在表格跟ρ属性相关的一格,填充为a)
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY | a | a | ||||
WXY | a | a | a | |||
UV | a | a |
- 由U→V,有U的第四行,V存在,就不用填充了
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY | a | a | ||||
WXY | a | a | a | |||
UV | a | a |
第三步,根据函数依赖,填充表格
- 由W→Z,W占了表格第一、三行,所以填充一、三行表格Z的位置的a(如果位置上本来有a,就不用在填充一次)
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY | a | a | ||||
WXY | a | a | a |
a |
||
UV | a | a |
- 由Y→U,因为二、三行有Y,所以填充二、三行的U
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY |
a |
a | a | |||
WXY |
a |
a | a | a | a | |
UV | a | a |
- 由WY→X,WY同时存在的只有第三行,而X本身就有被填充,所以不用再填充
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY | a | a | a | |||
WXY | a | a | a | a | a | |
UV | a | a |
第四步,循环第三步,直到表格的某一行被填充完整或者循环结果重复
- 由U→V得,第二、三、四行U存在,即把二、三、四行的V填充上
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY | a | a | a | |||
WXY | a |
a |
a | a | a | a |
UV | a | a |
第五步,如果有一行是满的,即关系模式的分解具有无损连接性,反之是有损连接分解
U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|
WZ | a | a | ||||
VY | a | a | a | |||
WXY | a | a | a | a | a | a |
UV | a | a |
由第三行(WXY那一行)可知,关系模式的分解是无损连接分解
注意:记得多循环几遍第三步,为啥呢?因为有些题,直接从头到尾循环一遍,就可以看出是否是无损连接分解,但有些题得循环好几遍才能得出,所以为了安全,多循环几遍
欢迎大家关注下个人的「公众号」:
独醉贪欢
后台回复「无脑死磕数据库原理」即可获得练习题
版权声明:本文为weixin_41640994原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。