• 【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、最后给读者的话:

    本文可能有错别字,欢迎指出。我没学过数据库,有错误的地方,也欢迎大家评论。感谢大家的观看!

    这是我的赞赏码,如果答案对你有帮助,请支持一下原创作者

    乔大妈的赞赏码

  • 相关阅读:
    C#编程(七十三)----------浅析C#中内存管理
    C#高级编程小结
    C#编程(七十二)----------DynamicObject和ExpandoObject
    C#编程(七十一)----------DLR ScriptRuntime
    C#编程(七十)----------dynamic类型
    C#编程(六十九)----------DLR简介
    C#编程(六十八)----------LINQ小结
    C#编程(六十七)----------LINQ提供程序
    C#编程(六十六)----------表达式树总结
    python 显示上午下午
  • 原文地址:https://www.cnblogs.com/guoxinyu/p/best-javabishi-blog.html
Copyright © 2020-2023  润新知