【Java笔试】对数据库中的分解是否为无损连接和是否保持函数依赖的判定-由牛客网试题引申-保姆式教学
【牛客网数据库原理题目】设关系模式R(A,B,C),F是R上成立的FD集,F={A→B,C→B},ρ={AB,AC}是R的一个分解,那么分解ρ()?
正确答案:C你的答案:A(错误)
( A ) 保持函数依赖集F
( B ) 丢失了A→B
( C ) 丢失了C→B
( D ) 丢失了B→C
文章目录
个人背景:牛客网的一道数据库原理做错,本人没学过数据库,现在要查资料弄懂这道题
1、牛客网数据库原理题目
设关系模式R(A,B,C),F是R上成立的FD集,F={A→B,C→B},ρ={AB,AC}是R的一个分解,那么分解ρ( )?
正确答案:C你的答案:A(错误)
( A ) 保持函数依赖集F
( B ) 丢失了A→B
( C ) 丢失了C→B
( D ) 丢失了B→C
牛客网这个题目,在你看完本文以后应该就会解,算是最简单的。
【解析如下】:
设①U1=AB,A→B,②U2=AC,但FD函数依赖集中没有对应关系,
因此我们不能推出C→B,即我们丢失了C→B。
所以也不具有保持函数依赖的特性。
为了保证分解后的关系模式与原关系模式等价,我们要判定:1)分解后形成的行的关系模式中是否为无损连接、2)是否保持函数依赖
然后我们再扩展一些题目中没有的,判断一下分解后的关系模式是否为无损连接
一、无损连接的判定:
1)如果分解后的的关系模式是形如{U1,U2}这,里面只有两个,那很好做,就判断U1∩U2→U1-U2或U1∩U2→U2-U1是否成立,成立的话肯定是无损连接。
本题已知ρ={AB,AC}是R的一个分解,即R分解以后是ρ={AB,AC},设U1=AB,U2=AC,然后开始判断。
判断无损连接过程:AB∩AC=A,又AB-AC=B,AC-AB=C,因为F={A→B,C→B}
所以所以AB∩AC→AB-AC,相当于或的左边成立,'或’是有真则真,所以是无损连接。
但ρ这个分解又不具有保持函数依赖的特性,因此分解后的关系模式与原关系模式不等价
保姆式教学:两个集合相减
两个集合的相减.
问:A={-1,2,4,9,10},B={-1,-2,0,1,2,3,4}.A-B=?,B-A=?
答:A-B={9,10},B-A={-2,0,1,3}.
![作业帮](https://img-blog.csdnimg.cn/20191208140054986.png#pic_center =350x400)
我用这种方式,删了CSDN图片的水印,再修改为水平居中并且带尺寸的图片。
下面这段是查了CSDN,感觉是CSDN博客、百度里讲无损连接分解和是否保持函数依赖最好的,是直接解释这道题的
2、数据库中的分解是否为无损连接和是否保持函数依赖的判定
转载自legendaryhaha的文章《数据库中的无损连接分解和是否保持函数依赖的判定》2018-06-11 17:48:45 legendaryhaha 阅读数 18661
https://blog.csdn.net/legendaryhaha/article/details/80649234
为了保证分解后的关系模式与原关系模式等价,我们要判定:1)分解后形成的行的关系模式中是否为无损连接、2)是否保持函数依赖
一、无损连接的判定:
1)如果分解后的的关系模式是形如{U1,U2}这,里面只有两个,那很好做,就判断U1∩U2→U1-U2或U1∩U2→U2-U1是否成立,成立的话肯定是无损连接。
如果关系模式内超过两个,请参考原文,我没有转载过来。避免弄错重点。
本文只摘抄了关系模式内含有两个的情况
。。。。如上文所说,后面的判定过程省略,在原文里,大家自己去看看。我稍后也会全文转载过来
二、是否保持函数依赖?
这个的判断方法就比较简单了,还是这道题,有属性集,ABCDEF,存在这样
的函数依赖集{A->BC , CD->E , B->D , BE->F , EF->A},然后有这样的分解
{ABC , BD , BEF}。
设U1=ABC,A->BC,
U2=BD,B->D ,
U3=BEF,BE->F ,即我们不能推出 CD->E ,EF->A,
所以也不具有保持函数依赖的特性。
3、背景知识:函数依赖 ( Functional Dependency,FD)
从函数依赖的一套推理规则。由ARMSTRONG提出,即ARMSTRONG公理
公理1:自反律–如果B->A,则A->B
公理2:增广律–如果A->B,则AC->BC
公理3:传递律–如果A->B,且B->C,则A->C
由上面公理得到推论
推论1:自合规则–A->A
推论2:分解规则–如果A->BC,则A->B,A->C
推论3:合并规则–如果A->B,A->C,则 A->BC
推论4:复合规则–如果A->B,C->D,则 AC->BD
范例:设有关系模式R,有A,B,C,D,E,F是它的属性集中的子集,R满足下列函数依赖:
F={A->BC,CD->EF},证明:函数依赖AD->F成立。
证明:
1)A->BC 给定
2)A->C 分解规则
3)AD->CD 增广律
4)CD->EF 给定
5)AD->EF 传递律(由第3,4得)
6)AD->F 分解规则
上面这段是百度知道摘抄的,与这道题无直接关系
博客园看到的一个讲范式的文章,也挺不错的,但是和这个题无关,不用花太多时间去研究无关的东西:数据库 函数依赖及范式(最通俗易懂)
https://www.cnblogs.com/Stephen-Jixing/p/9888725.html#4452519
4、最后给读者的话:
本文可能有错别字,欢迎指出。我没学过数据库,有错误的地方,也欢迎大家评论。感谢大家的观看!
这是我的赞赏码,如果答案对你有帮助,请支持一下原创作者