精华内容
下载资源
问答
  • 判断无损分解的例子

    2019-05-09 09:15:25
    判断无损分解的例子 2018年07月02日 10:18:15 黑脉金 阅读数:2099 ...

    判断无损分解的例子

    这个就考前看了一本课外的辅导教材,现学了一下方法,不知道能不能回忆起来。

    题目:U=(A,B,C,D,E)    F={A->D,E->D,D->B,BC->D,DC->A}

    判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解。

    解:

    先求出候选键为CE。

    然后画一个初始判定表如下图所示。

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b24a5
    CEb31b32a3b34a5
    BCDb41a2a3a4b45
    ACa1b52a3b54b55

    解释一下这张初始判定表的含义:

    直接看ρ,比如第一个是AB,那么就在A列写a1,在B列写a2,其余都写b1j。

    然后开始计算。这时候要看F中的函数依赖。

    比如,第一个是A->D,看A列有没有ai,看到有a1,再看D列中对应的,如果不相同,也有aj的话,就把其他换成aj,如果没有,就以第一个ai对应的bij为基准,其他都换成bij。

    所以判定表应换成:

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b14a5
    CEb31b32a3b34a5
    BCDb41a2a3a4b45
    ACa1b52a3b14b55

    接下来看E->D:

    以前面修改后的表为基准。

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b14a5
    CEb31b32a3b14a5
    BCDb41a2a3a4b45
    ACa1b52a3b14b55

    D->B:

    这里看D列,因为b14对应B列有a2,所以就不以D列中a4为基准,而是以b14为基准,改B列对应位置为a2。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEb31a2a3b14a5
    BCDb41a2a3a4b45
    ACa1a2a3b14b55

    BC->D:

    当左边出现两个元素时,看B列和C列相同的行,发现是a2、a3,然后修改D列对应位置为a4。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEb31a2a3a4a5
    BCDb41a2a3a4b45
    ACa1a2a3a4b55

    DC->A:

    D列和C列有相同的行,是a3、a4,然后修改A列对应位置为a1。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEa1a2a3a4a5
    BCDa1a2a3a4b45
    ACa1a2a3a4b55

    最终表:

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEa1a2a3a4a5
    BCDa1a2a3a4b45
    ACa1a2a3a4b55

    再看表中全部为a的行,发现是第三行,所以ρ为无损连接分解。

    教材上的例题图片:



    判断无损分解的例子

    这个就考前看了一本课外的辅导教材,现学了一下方法,不知道能不能回忆起来。

    题目:U=(A,B,C,D,E)    F={A->D,E->D,D->B,BC->D,DC->A}

    判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解。

    解:

    先求出候选键为CE。

    然后画一个初始判定表如下图所示。

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b24a5
    CEb31b32a3b34a5
    BCDb41a2a3a4b45
    ACa1b52a3b54b55

    解释一下这张初始判定表的含义:

    直接看ρ,比如第一个是AB,那么就在A列写a1,在B列写a2,其余都写b1j。

    然后开始计算。这时候要看F中的函数依赖。

    比如,第一个是A->D,看A列有没有ai,看到有a1,再看D列中对应的,如果不相同,也有aj的话,就把其他换成aj,如果没有,就以第一个ai对应的bij为基准,其他都换成bij。

    所以判定表应换成:

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b14a5
    CEb31b32a3b34a5
    BCDb41a2a3a4b45
    ACa1b52a3b14b55

    接下来看E->D:

    以前面修改后的表为基准。

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b14a5
    CEb31b32a3b14a5
    BCDb41a2a3a4b45
    ACa1b52a3b14b55

    D->B:

    这里看D列,因为b14对应B列有a2,所以就不以D列中a4为基准,而是以b14为基准,改B列对应位置为a2。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEb31a2a3b14a5
    BCDb41a2a3a4b45
    ACa1a2a3b14b55

    BC->D:

    当左边出现两个元素时,看B列和C列相同的行,发现是a2、a3,然后修改D列对应位置为a4。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEb31a2a3a4a5
    BCDb41a2a3a4b45
    ACa1a2a3a4b55

    DC->A:

    D列和C列有相同的行,是a3、a4,然后修改A列对应位置为a1。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEa1a2a3a4a5
    BCDa1a2a3a4b45
    ACa1a2a3a4b55

    最终表:

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEa1a2a3a4a5
    BCDa1a2a3a4b45
    ACa1a2a3a4b55

    再看表中全部为a的行,发现是第三行,所以ρ为无损连接分解。

    教材上的例题图片:



    展开全文
  • 判断是否无损连接分解

    万次阅读 多人点赞 2018-05-30 08:38:29
    这个就考前看了一本课外的辅导教材,现学了一下方法,不知道能不能回忆起来。题目:U=(A,B,C,D,E) F={A->D,E->D,D->B,BC-&...A}判断ρ={AB,AE,CE,BCD,AC}是否无损连接分解。...

    这个就考前看了一本课外的辅导教材,现学了一下方法,不知道能不能回忆起来。

    题目:U=(A,B,C,D,E)    F={A->D,E->D,D->B,BC->D,DC->A}

    判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解。

    解:

    先求出候选键为CE。

    然后画一个初始判定表如下图所示。

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b24a5
    CEb31b32a3b34a5
    BCDb41a2a3a4b45
    ACa1b52a3b54b55

    解释一下这张初始判定表的含义:

    直接看ρ,比如第一个是AB,那么就在A列写a1,在B列写a2,其余都写b1j。

    然后开始计算。这时候要看F中的函数依赖。

    比如,第一个是A->D,看A列有没有ai,看到有a1,再看D列中对应的,如果不相同,也有aj的话,就把其他换成aj,如果没有,就以第一个ai对应的bij为基准,其他都换成bij。

    所以判定表应换成:

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b14a5
    CEb31b32a3b34a5
    BCDb41a2a3a4b45
    ACa1b52a3b14b55

    接下来看E->D:

    以前面修改后的表为基准。

     ABCDE
    ABa1a2b13b14b15
    AEa1b22b23b14a5
    CEb31b32a3b14a5
    BCDb41a2a3a4b45
    ACa1b52a3b14b55

    D->B:

    这里看D列,因为b14对应B列有a2,所以就不以D列中a4为基准,而是以b14为基准,改B列对应位置为a2。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEb31a2a3b14a5
    BCDb41a2a3a4b45
    ACa1a2a3b14b55

    BC->D:

    当左边出现两个元素时,看B列和C列相同的行,发现是a2、a3,然后修改D列对应位置为a4。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEb31a2a3a4a5
    BCDb41a2a3a4b45
    ACa1a2a3a4b55

    DC->A:

    D列和C列有相同的行,是a3、a4,然后修改A列对应位置为a1。

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEa1a2a3a4a5
    BCDa1a2a3a4b45
    ACa1a2a3a4b55

    最终表:

     ABCDE
    ABa1a2b13b14b15
    AEa1a2b23b14a5
    CEa1a2a3a4a5
    BCDa1a2a3a4b45
    ACa1a2a3a4b55

    再看表中全部为a的行,发现是第三行,所以ρ为无损连接分解。

    教材上的例题图片:




    版权声明:本文为博主原创文章,未经博主允许不得转载。

    展开全文
  • 数据库课程的无损分解与函数依赖的判断。对学数据库有帮助。
  • 无损分解和保持依赖的判断

    千次阅读 多人点赞 2013-03-24 19:19:26
    (注:在准备软考过程中,遇到一道判断无损分解和保持依赖的试题,于是找到了这篇很通俗的文章,特收藏并学习之。) 大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断...

    (注:在准备软考过程中,遇到一道判断无损分解和保持依赖的试题,于是找到了这篇很通俗的文章,特收藏并学习之。微笑

    大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断比较复杂,考的可能性不大,因此我们只对“一个关系模式分解成两个模式”这种类型的题的相关判断做一个总结。

    以下的论述都基于这样一个前提:
    R是具有函数依赖集F的关系模式,(R1 ,R2)是R的一个分解。

    首先我们给出一个看似无关却非常重要的概念:属性集的闭包。
    令α为一属性集。我们称在函数依赖集F下由α函数确定的所有属性的集合为F下α的闭包,记为α+ 。
    下面给出一个计算α+的算法,该算法的输入是函数依赖集F和属性集α,输出存储在变量result中。
    算法一:
    result:=α;
    while(result发生变化)do
        for each 函数依赖β→γ in F do
        begin
            if β∈result then result:=result∪γ;
        end

    属性集闭包的计算有以下两个常用用途:
    ·判断α是否为超码,通过计算α+(α在F下的闭包),看α+ 是否包含了R中的所有属性。若是,则α为R的超码。
    ·通过检验是否β∈α+,来验证函数依赖是否成立。也就是说,用属性闭包计算α+,看它是否包含β。

    (请原谅我用∈符号来表示两个集合之间的包含关系,那个表示包含的符号我找不到,大家知道是什么意思就行了。)

    看一个例子吧,2005年11月系分上午37题:

    ● 给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,A2→A4},R的候选关键字为________。
    (37)A. A1  B. A1A3  C. A1A3A4  D. A1A2A3

    首先我们按照上面的算法计算A1+ 。
    result=A1,
    由于A1→A2,A1∈result,所以result=result∪A2=A1A2
    由于A2→A3,A2∈result,所以result=result∪A3=A1A2A3
    由于A2→A4,A2∈result,所以result=result∪A3=A1A2A3A4
    由于A3→A2,A3∈result,所以result=result∪A2=A1A2A3A4

    通过计算我们看到,A1+ =result={A1A2A3A4},所以A1是R的超码,理所当然是R的候选关键字。此题选A 。


    好了,有了前面的铺垫,我们进入正题。

     

    无损分解的判断。
    如果R1∩R2是R1或R2的超码,则R上的分解(R1,R2)是无损分解。这是一个充分条件,当所有的约束都是函数依赖时它才是必要条件(例如多值依赖就是一种非函数依赖的约束),不过这已经足够了。


    保持依赖的判断。
    如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。
    如果上述判断失败,并不能断言分解不是保持依赖的,还要使用下面的通用方法来做进一步判断。
    该方法的表述如下:
    算法二:
    对F上的每一个α→β使用下面的过程:
    result:=α;
    while(result发生变化)do
        for each 分解后的Ri
            t=(result∩Ri)+ ∩Ri
            result=result∪t


    这里的属性闭包是在函数依赖集F下计算出来的。如果result中包含了β的所有属性,则函数依赖α→β。分解是保持依赖的当且仅当上述过程中F的所有依赖都被保持。



    下面给出一个例题,2006年5月系分上午43题:

    ●设关系模式R<U, F>,其中U={A, B, C, D, E},F={A→BC,C→D,BC→E,E→A},则分解ρ={R1(ABCE),R2(CD)}满足 (43) 。
    (43) A.具有无损连接性、保持函数依赖
                  B.不具有无损连接性、保持函数依赖
                  C.具有无损连接性、不保持函数依赖
                  D.不具有无损连接性、不保持函数依赖

    先做无损链接的判断。R1∩R2={C},计算C+。

    Result=C
    由于C→D,C∈result,所以result=result∪D=CD
    可见C是R2的超码,该分解是一个无损分解。

    再做保持依赖的判断。
    A→BC,BC→E, E→A都在R1上成立(也就是说每一个函数依赖左右两边的属性都在R1中),C→D在R2上成立,因此给分解是保持依赖的。

    选A。


    再看一个复杂点的例题。2007年5月数工40-41题。

    ●给定关系模式R<U, F>,U={A, B, C, D, E},F={B→A,D→A,A→E,AC→B},其候选关键字为 
    (40)  ,则分解ρ={R1(ABCE),R2(CD)}满足 (41) 。
    (40) A.ABD
                  B.ABE
                  C.ACD
                  D.CD
    (41) A.具有无损连接性、保持函数依赖
                  B.不具有无损连接性、保持函数依赖
                  C.具有无损连接性、不保持函数依赖
                  D.不具有无损连接性、不保持函数依赖

    看见了吧,和前面一题多么的相像!
    对于第一问,分别计算ABCD四个选项的闭包,
    (ABD)+ = { ABDE }
    (ABE)+ = { ABE }
    (ACD)+ = { ABCDE }
    (CD)+ = { ABCDE }
    选D。

    再看第二问。
    先做无损链接的判断。R1∩R2={C},计算C+。

    result=C
    因此C既不是R1也不是R2的超码,该分解不具有无损分解性。

    再做保持依赖的判断。
    B→A,A→E,AC→B在R1上成立,D→A在R1和R2上都不成立,因此需做进一步判断。
    由于B→A,A→E,AC→B都是被保持的(因为它们的元素都在R1中),因此我们要判断的是D→A是不是也被保持。

    对于D→A应用算法二:
    result=D
    对R1,result∩R1=ф(空集,找不到空集的符号,就用这个表示吧),t=ф,result=D
    再对R2,result∩R2=D,D+ =ADE ,t=D+ ∩R2=D,result=D
    一个循环后result未发生变化,因此最后result=D,并未包含A,所以D→A未被保持,该分解不是保持依赖的。

    选D。

    展开全文
  • 1NF----表中每一列都不能再分解了(stomic) 2NF----满足1NF,并且非主键属性不能不分依赖于主键 e.g A B C D E 其中A和B为主键,如果A能单独决定C的属性,那么就不符合2NF. BTW:如果主键只有一个,那肯定2nf 3NF...

    1NF----表中每一列都不能再分解了(stomic)

    2NF----满足1NF,并且非主键属性不能不分依赖于主键

    e.g A B C D E  其中A和B为主键,如果A能单独决定C的属性,那么就不符合2NF.

    BTW:如果主键只有一个,那肯定2nf

    3NF----满足2NF,人话就是 不存在这个关系:关键字段------>非关键字段x-------->非关键字段y

    就是说所有的非主键属性只能由主键来决定

    BCNF-----满足3NF,人话:AC--->J   AC必须包含候选键,也就是关系模式的左部必须包含候选键

    最小依赖集:

    简单来说就是求闭包,找冗余https://blog.csdn.net/wonz5130/article/details/80465245观摩了这篇文章

    先右边单一化

    然后左边单一化

    最后去冗余

     

    关系模式分解为3NF:

    https://blog.csdn.net/Wonz5130/article/details/80466282还是那位老哥

    关系模式分解为BCNF:

    这个有几个步骤:

    1. 先求候选键

    2.如果F中不满足BCNF就分解(左部包含候选键)

    U=(A,B,C,D,E,)   F={A->B, AC->D, DB->E}

    在这个例子中,F是最小依赖集(先求最小依赖集,后面好算)

    这里F的候选键为AC

    下一步之前先上个图 

    这个图里重点看最后一句 replacer Ri by ....

    E.G U=(A,B,C,D,E,)   F={A->B, AC->D, DB->E}

    候选键AC

    第一个关系模式显然不符合BCNF(左部没候选键)

    所以要把它分解为R1,R2。根据上图X->Y对应A->B,所以用F-B 和 AUB作为R1,R2

    R1={(ACDE),(AC->D, AD->E)}这个AD->E怎么来的呢,就是通过F中的关系转换的出来(因为要除去B)

    R2={(AB),(A->B)}

    因为R1,R2的最小依赖集就是自己本身,而且R1候选键依然为AC,R2就剩一个关系模式自然满足BCNF

    R1不满足BCNF再次进行分解(先求最小依赖集和新的候选键,在这例子中不变)

    因为R1只有两个关系模式,所以直接分解为R12,R11

    R11={(ACD),(AC->D)}

    R12={(ADE),(AD->E)}

     

    判断是否为无损:

    还是那位老哥https://blog.csdn.net/Wonz5130/article/details/80502746

    因为我看不太懂所以附上参考材料https://wenku.baidu.com/view/b0f18770fab069dc5122012c.html

    简单来说,先看第一篇文章,知道怎样建矩阵,然后判断方法就根据第二篇,比如A->D, 如果有两行在A列上相等而在D列上不相等,1.如果D列上有a,则把对应的两行都改为a       

            2.没有a就用D列上的b代替

    BC->D这些也一样,找到BC列上相等的两行并且对应到D中,完美

    最后只要看看矩阵中有没有哪一行全都是a,有就是无损了

    展开全文
  • 关系模式求属性集X的闭包以及判断依赖关系是否逻辑蕴含python代码,判断无损连接分解方法
  •       批评一下自己,昨天又贪玩了,啥都没干。... 这几天做了几份数据库方面的试题,其他的没什么好说的,在无损分解这里每次都不知道怎么做。主要原因是书上对这一块讲...
  • 判断一个分解具有无损连接性的算法 算法的输入: 关系模式R(A1A2,An, R上的函数依赖集F, R的一个分解p={R1R2,Rk} 算法的输出:true或 false 算法 LOSSLESSTEST(R,F,p) 构造一个k行n列的二维表T,第i行对应于关系模式R1,...
  • 题目要求 初始化属性/模型表格 根据分解机制修改属性/模式表格 分析修改后的属性/模式表格,判断是否无损连接 【参考链接】https://blog.csdn.net/Flora_SM/article/details/84640642
  • 判断模式分解是否无损连接的方法 【方法步骤】 ρ = { R1<U1 , F1> , R2<U2 , F2> , … , Rk<Uk , Fk> } 是关系模式 R<U , F> 的一个分解,U = {A1 , A2 , … , An},F = {FD1 , FD2 , …...
  • 如果一个R的分解D={R1,R2}有函数依赖F,判断分解是否属于无损分解。 对于一个二元分解(只分解成两个关系),判断条件非常简单,不需要列表去做 只要满足以下之一的条件,即可判定该分解是无损分解: FD(...
  • 判断分解无损连接性

    千次阅读 2019-02-13 13:05:08
    转载自 ... 判别一个分解无损连接性   算法的文字描述为:                 算法的伪代码描述为:   例题解析 对于分解为两个关系模式的情况,有如下的定理:    ...
  • 无损分解和保持依赖

    千次阅读 多人点赞 2020-04-23 14:01:40
    (注:在准备软考过程中,遇到一道判断无损分解和保持依赖的试题,于是找到了这篇很通俗的文章,特收藏并学习之。微笑) 大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的...
  • 无损分解的测试

    千次阅读 热门讨论 2013-10-13 15:58:19
    如果R上成立的函数依赖集是F1={B→A,C→D},那么ρ相对于F1是否无损分解?如果R上成立的函数依赖集是F2={ A→B,C→D}呢? 第一步,构造表格: 第一行为关系模式R的每一个属性A B C D,第一列为R的分解AB BC CD,...
  • 数据库这一块,除了那三个范式不易记忆,还有更加烧脑的模式分解。模式分解在99%的搞计算机的人来看,只是在软考题目见到应用,除此之外,真的不知道这块知识到底是做什么的,对它的充斥满脑的质疑。这种知识写成的...
  • 判断分解无损连接性和保持函数依赖

    千次阅读 多人点赞 2019-06-29 21:36:41
    判断无损连接性: 方法一:无损连接定理 关系模式R(U,F)的一个分解,ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是: U1∩U2→U1-U2∈F+或U1∩U2→U2-U1∈F+ 方法二:算法 ρ={R1<U1,...
  • 如何测试某关系模式的分解属于无损分解
  • 无损分解指的是对关系模式分解时,原关系模型下任一合法的关系值在分解之后应能通过自然联接运算恢复起来。反之,则称为有损分解。 设R是一个关系模式,F是R上的一个依赖集,R分解为关系模式的集合p={R1(U1),R2(U2)...
  • 关系模式R(U,F)的一个分解,ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是: U1∩U2→U1-U2 €F+ 或U1∩U2→U2 -U1€F+ 方法二:算法 ρ={R1<U1,F1>,R2<U2,F2>...
  • 如果r = mρ(r)那么就称ρ为R的无损分解无损分解的检验算法:输入:关系模式 R = A1 A2 …An ,函数依赖集合F,分解ρ = (R1,R2 …Rk) 方法:1、构造k行n列的表,如果Aj 属于Ri 就在对应的二维表格处填写aj否则...
  • 模式分解无损判断

    千次阅读 2018-06-27 14:15:22
    方法一:无损连接定理关系模式R(U,F)的一个分解,ρ={R1&lt;U1,F1&gt;,R2&lt;U2,F2&gt;}具有无损连接的充分必要条件是:U1∩U2→U1-U2 €F+ 或U1∩U2→U2 -U1€F+方法二:算法ρ={R1&lt;U1,...
  • 【数据库】解剖式学习无损分解

    千次阅读 多人点赞 2018-10-24 09:39:33
    无损分解是数据库中一个比较重要的知识点,这个还是比较值得总结的!其中有些东西我们还是容易模糊的,如果你想彻底搞明白无损分解,可以认真的看下面的内容! 1、为什么会有分解 因为分解能消除数据冗余和操作...
  • 考试中经常有题目,需要判断分解后的模式是否具连接无损性。 判断算法一 关系模式R<U, F>的一个分解ρ = { R1_11​<U1_11​,F1_11​>, R2_22​<U2_22​,F2_22​> }具有无损连接性的充分必要条件是...
  • 复习要点-无损分解

    2011-07-30 16:39:08
    重点:理解无损分解、损失分解、寄生元组、悬挂元组、Chase过程、两个无损分解相关的定理 无损分解和损失分解 设R是一个关系模式,F是R上的一个FD集,R分解成数据库模式ρ={R1,...,Rk}。如果对R中满足F的每一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,855
精华内容 742
关键字:

判断是否无损分解