无损连接分解

怎么看函数是否是无损连接分解?
很多书都有步骤求解,在这我按例子来说,就不把书上的写上来了

 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那一行)可知,关系模式的分解是无损连接分解

注意:记得多循环几遍第三步,为啥呢?因为有些题,直接从头到尾循环一遍,就可以看出是否是无损连接分解,但有些题得循环好几遍才能得出,所以为了安全,多循环几遍


欢迎大家关注下个人的「公众号」:独醉贪欢
后台回复「无脑死磕数据库原理」即可获得练习题

猜你喜欢

转载自blog.csdn.net/weixin_41640994/article/details/106910476