精华内容
下载资源
问答
  • 无损连接分解

    千次阅读 多人点赞 2020-06-22 22:07:02
    怎么看函数是否是无损连接分解? 很多书都有步骤求解,在这我按例子来说,就不把书上的写上来了 1. 第一步,画表(R的属性作为列,ρ的属性作为行) 2. 第二步,填充a(根据ρ中的元素,在表格跟ρ属性相关的一格...

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

     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的属性作为列,ρ的属性作为行)

    UVWXYZ
    WZ
    VY
    WXY
    UV

    . 第二步,填充a(根据ρ中的元素,在表格跟ρ属性相关的一格,填充为a)

    UVWXYZ
    WZaa
    VYaa
    WXYaaa
    UVaa
    • 由U→V,有U的第四行,V存在,就不用填充了
    UVWXYZ
    WZaa
    VYaa
    WXYaaa
    UVaa

    第三步,根据函数依赖,填充表格

    • 由W→Z,W占了表格第一、三行,所以填充一、三行表格Z的位置的a(如果位置上本来有a,就不用在填充一次)
    UVWXYZ
    WZaa
    VYaa
    WXYaaaa
    UVaa
    • 由Y→U,因为二、三行有Y,所以填充二、三行的U
    UVWXYZ
    WZaa
    VYaaa
    WXYaaaaa
    UVaa
    • 由WY→X,WY同时存在的只有第三行,而X本身就有被填充,所以不用再填充
    UVWXYZ
    WZaa
    VYaaa
    WXYaaaaa
    UVaa

    第四步,循环第三步,直到表格的某一行被填充完整或者循环结果重复

    • 由U→V得,第二、三、四行U存在,即把二、三、四行的V填充上
    UVWXYZ
    WZaa
    VYaaa
    WXYaaaaaa
    UVaa

    第五步,如果有一行是满的,即关系模式的分解具有无损连接性,反之是有损连接分解

    UVWXYZ
    WZaa
    VYaaa
    WXYaaaaaa
    UVaa

    由第三行(WXY那一行)可知,关系模式的分解是无损连接分解

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


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

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

    万次阅读 多人点赞 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的行,发现是第三行,所以ρ为无损连接分解。

    教材上的例题图片:




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

    展开全文
  • 1)把一个关系模式分解成若干个关系模式的过程,称为关系模式的分解。 2)把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的。 3)只有能够保证分解后的关系模式与原关系模式等价,分解方法才有...

    首先了解一下几个概念:

    1)把一个关系模式分解成若干个关系模式的过程,称为关系模式的分解。

    2)把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的。

    3)只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义。

     

    对于第一句话,为什么需要分解关系模式?因为原来的关系模式可能造成数据冗余或

    给数据库带来潜在的不一致性。对于第二句话,根据不同语义,分解的原则也不尽相

    同,所以方法肯定是不唯一的,譬如U={A,B,C},根据不同原则(随便你自己定),

    可能分成(A,B)(A,C)也可能分成(B,C)(A,C)。对于第三句话,则是本文所要

    讲的内容。

     

    为了保证分解后的关系模式与原关系模式等价,我们要判定 1)分解后形成的行的关

    系模式中是否为无损连接  2)是否保持函数依赖

     

    一、无损连接的判定:

    1)如果分解后的的关系模式是形如{U1,U2}这,里面只有两个,那很好做,就判断

           或 是否成立,成立的话肯定是

          无损连接。

    2)如果是两个以上{U1,U2,U3....}这种,那就比较麻烦了,比如,有属性集,

    ABCDEF,存在这样的函数依赖集{A->BC , CD->E , B->D , BE->F , EF->A},然后有

    这样的分解{ABC , BD , BEF}。

    例如:

    设U1=ABC,U2=BD,U3=BEF,根据提供的函数依赖集,我们可得U1存在这样的

    函数依赖A->BC,U2上的函数依赖是 B->D, U3的函数依赖是BE->F。

     

    1)于是可构造这样的表格。

    GABCEF  
    A->BC      
    B->D      
    BE->F      

     

    2)各自判断A,B,C,D,E,F是否有在G列的函数依赖中,如果有记为ai,i表示第几列,否

    则记为bji,表示第j行第i列

    如:

     

    GABCEF
    A->BCa1(A有在函数依赖中,此行为第一行)     
    B->D      
    BE->Fb31(A没有,此列为第一列)     

    这样我们可得到图

     

    GABCEF
    A->BCa1a2a3b14b15b16
    B->Db21a2b23a4b25b26
    BE->Fb31a2b33b34a5a6

     

     3)接下来是关键的,如果我们经过一系列变换得到有一行是这样的排序

     

    {a1,a2,a3,a4,a5,a6...},即不存在bji,那我们就认为,该分解是无损连接。

     

     4)变换过程:为了方便,我们可以按A->BC, B->D,BE->F这个顺序来(随你喜

    欢)。

    第一遍,根据A->BC,我们知道主健是能唯一标识一个元组的,也就是说如果

    A中存在着两个属性值是相同的,毫无疑问,他们推出的BC的值肯定也是相同的。从

    表格中我们遍历A列,没有发现有相同的属性组,那就跳过。

     

    第二遍, 根据B->D,因为B列属性值相同,那我们修改D列。修改时遵照这样的一个

    规则,如果D中有ai这样的值,那么宣布修改为ai,如果没有,修改成该列的第一行的

    第一个值。从表格中我们可以发现D中有a4,那么修改后变成:

     

    GABCEF
    A->BCa1a2a3a4b15b16
    B->Db21a2b23a4b25b26
    BE->Fb31a2b33a4a5a6

     

    第三遍,根据BE->F,找一组BE相同的值,发现不存在,即不存在类似

     

    {a1,a2,a3,a4,a5,a6}这样的序列,即该分解不是无损连接分解。

     

    二、是否保持函数依赖?

     

    这个的判断方法就比较简单了,还是这道题,有属性集,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,所以也不具有保持函数依赖的特性

    展开全文
  • 无损连接分解的形式定义如下:设R是一个关系模式,F是R上的一个函数依赖(FD)集。R分解成数据库模式δ={R1,……,Rk}。如果对R中每一个满足F的关系r都有下式成立:  那么称分解δ相对于F是“无损连接分解”,否则...

    无损连接分解的形式定义如下:设R是一个关系模式,F是R上的一个函数依赖(FD)集。R分解成数据库模式δ={R1,……,Rk}。如果对R中每一个满足F的关系r都有下式成立:

      那么称分解δ相对于F是“无损连接分解”,否则称为“损失连接分解”。其中 表示自然连接。
      从上述形式定义中可知,若直接根据定义来判断某个分解是否具有无损连接性,那么就得“对R中每一个满足F的关系r”进行测试,看是否满足上面的等式,这显然不可操作,因为“对R中每一个满足F的关系r”进行测试就意味着“对R中所有满足F的关系r”进行测试,显然是不可能的。这里所说的“关系”就是指一张具体的表。
      因此,必须寻求其它的可操作性方法来判别分解的无损连接性。
      2. 无损连接分解的普通判别方法——表格法
      设关系模式R=A1,…,An,R上成立的FD集F,R的一个分解p={R1,…,Rk}。无损连接分解的判断步骤如下:
      (1)构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上符号bij。
      (2)把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的元素。修改方法如下:对于F中一个FD:X→Y,如果表格中有两行在X分量上相等,在Y分量上不相等,那么把这两行在Y分量上改成相等。如果Y的分量中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中的一个bij替换另一个(尽量把ij改成较小的数,亦即取i值较小的那个)。
      若在修改的过程中,发现表格中有一行全是a,即a1,a2,…,an,那么可立即断定p相对于F是无损连接分解,此时不必再继续修改。若经过多次修改直到表格不能修改之后,发现表格中不存在有一行全是a的情况,那么分解就是有损的。特别要注意,这里有个循环反复修改的过程,因为一次修改可能导致表格能继续修改。
      修改过程中要特别注意,若某个bij被改动,那么它所在列的所有bij都需要做相应的改动。为了明确这一点,举例说明。例如,我们根据FD“H→I”、“
    K→L”来修改表格之前时的表格如表1所示(已经过多次修改,非初始表,空的单元表示省略):
      表1
     
    H
    I
    J
    K
    L
    R1
     
    b12
      
    b35
    R2
    a1
    a2
     
    a4
    b25
    R3
    a1
    b12
     
    a4
    b35
    R4
     
    b12
      
    b35
      R2、R3所在行的H分量都为a1,根据FD“H→I”,需要修改这两行对应的I分量,而R2所在行的I分量为a2,因此,要将R3所在行的I分量b12修改为a2,注意到,R1、R4所在行的H分量也为b12,因此,这两行对应的I分量也必须修改为a2。R2、R3所在行的K分量都为a4,根据FD“K→L”,需要修改这两行对应的L分量,于是将R3所在行的L分量b35修改为较小的b25,同时注意到,R1、R4所在行的L分量也为b35,因此,这两行对应的L分量也必须修改为b25。修改后的表格如表2所示:
       表2
     
    H
    I
    J
    K
    L
    R1
     
    a2
      
    b25
    R2
    a1
    a2
     
    a4
    b25
    R3
    a1
    a2
     
    a4
    b25
    R4
     
    a2
      
    b25
      【例题】(软件设计师2002年上午试题38)
      设关系模式 R为 R(H,I,J,K,L),R上的一个函数依赖集为 F={H→J,J→K,I→J,JL→H},分解 (38)
    是无损连接的。
      供选择的答案:
      (38) A. p={HK,HI,IJ,JKL,HL} B. p={HIL,IKL,IJL}
      C. p={HJ,IK,HL} D. p={HI,JK,HL}
      试题分析:
      根据上述判断方法,我们列出选项B(分解成三个关系模式R1(HIL)、R2(IKL)、R3(IJL) )的初始表如表3所示:
      表3 选项B的初始表
     HIJKL
    HILa1a2b13b14a5
    IKLb21a2b23a4a5
    IJLb31a2a3b34a5
      对于函数依赖集中的H→J、J→K对表3进行处理,由于属性列H和属性列J上无相同的元素,所以无法修改。但对于I→J在属性列I上对应的1、2、3行上全为a2元素,所以,将属性列J的第一行b13和第二行b23改为a3。修改后如表4所示:

     

    表4 选项B的中间表

     HIJKL
    HILa1a2a3b14a5
    IKLb21a2a3a4a5
    IJLb31a2a3b34a5
      对于函数依赖集中的JL→H在属性列J和L上对应的1、2、3行上为a3、a5元素,所以,将属性列H的第二行b21和第三行b31改为a1。修改后如表5所示:
      表5 选项B的结果表
     HIJKL
    HILa1a2a3b14a5
    IKLa1a2a3a4a5
    IJLa1a2a3b34a5
      从表5可以看出,第二行为a1、a2、a3、a4、a5,所以分解p是无损的。
      有一种特殊情况要注意:分解后的各个关系模式两两均无公共属性。由于是模式分解,那么任一一个分解后的关系模式覆盖的属性集不可能是分解前的整个全部属性U,因此初始表中不存在全是a的行。又注意到,分解后的各个关系模式两两均无公共属性,表明任两行在任一列上都没有相同的分量,这导致整个表格无法修改,保持初始状态。而初始状态不存在全是a的行,因此这种特殊情况的分解是有损的。
      例如,函数依赖集合FD,将关系模式R(ABCDEF)分解成R1(AB)、R2(CDE)、R3(F),那么这种分解肯定是有损的。考试中可能碰到这种情况,那么一眼就可以判断出结果,从而节省了时间。
       3. 无损连接分解的快捷判别方法
      首先要申明,这种快捷方法是有前提的,前提就是分解后的关系模式只有两个。其内容为:
      设ρ={R1,R2}是R的一个分解,F是R上的FD集,那么分解ρ相对于F是无损分解的充分必要条件是:(R1∩R2)→(R1–R2)或(R1∩R2)→(R2–R1)。这个“或”字很重要,这里表示(R1∩R2)→(R1–R2)、(R1∩R2)→(R2–R1)中只要有一个成立就行。这里的求交和相减运算的对象是关系模式的属性。
      【例题】
      关系模式R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X, X→Z,Y→W}。那么下列分解中是无损分解的是 。
      供选择的答案:
      A.p={R1(WY),R2(XZ)} B.p={R1(WZ),R2(XY)}
      C.p={R1(WXY),R2(XZ)} D.p={R1(WX),R2(YZ)}
      试题分析:
      A选项,R1∩R2为空,肯定不满足条件。
      B选项,R1∩R2为空,肯定不满足条件。
      C选项,R1∩R2={X},R1-R2={WY},R2-R1={Z},根据函数依赖集,X→Z成立,所以满足条件。
      D选项,R1∩R2为空,肯定不满足条件。
       4. 总结
      模式分解无损性判别的源泉仍然是普通的表格法。这种快捷方法只不过是根据这种表格法推断出来的而已,是它的一个特列。但是这种快捷方法却往往非常有用。

    转载于:https://www.cnblogs.com/lzhitian/archive/2012/06/29/2568967.html

    展开全文
  • 转换成BCNF的无损连接分解

    千次阅读 2019-07-02 17:23:37
    F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成BCNF并保持无损连接。 例2:关系模式R<U,F>,其中:U={A,B,C,D,E},F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接。 解: ① 令ρ=...
  • 关系模式求属性集X的闭包以及判断依赖关系是否逻辑蕴含python代码,判断无损连接分解方法
  • 无损连接分解的快捷判别方法  首先要申明,这种快捷方法是有前提的,前提就是分解后的关系模式只有两个。其内容为:  设ρ={R1,R2}是R的一个分解,F是R上的FD集,那么分解ρ相对于F是无损分解的充分必要条件是...
  • 无损连接分解的普通判别方法——表格法,与无损连接分解的快捷判别方法(R1∩R2)→(R1–R2)或(R1∩R2)→(R2–R1)。大家已经非常熟悉。那么,能否用数学方式证明,表格法某行全为a(a1 a2 ...)时,就表示了无损连接呢?...
  • 模式分解的无损连接性之深入剖析 1、无损连接分解的形式定义 2、普通分解方法--表格法 3、快捷判别方法
  • 模式分解无损连接性之深入剖析

    千次阅读 2013-11-26 20:06:51
    无损连接分解的形式定义  无损连接分解的形式定义如下:设R是一个关系模式,F是R上的一个函数依赖(FD)集。R分解成数据库模式δ={R1,……,Rk}。如果对R中每一个满足F的关系r都有下式成立:  那么称分解δ相对于F是...
  • 数据库中的模式分解无损连接

    千次阅读 2018-09-25 21:58:58
    无损连接分解的普通判别方法——表格法  设关系模式R=A1,…,An,R上成立的FD集F,R的一个分解p={R1,…,Rk}。无损连接分解的判断步骤如下:  (1)构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一...
  • 无损连接分解的测试算法 例子 1 举例1:已知R<U,F>,U={A,B,C},F={A→B},如下的两个分解: ① ρ1={AB,BC} ② ρ2={AB,AC} 判断这两个分解是否具有无损连接性。 ①因为AB∩BC=B,AB-BC=A,BC-AB=C 所以B→A...
  • 转换成BCNF的保持无损连接分解
  • 无损连接和模式分解题型

    千次阅读 多人点赞 2018-11-30 00:04:23
    一、判别一个分解无损连接性 方法一:无损连接定理 关系模式R(U,F)的一个分解ρ={R1&lt;U1,F1&gt;,R2&lt;U2,F2&gt;}具有无损连接的充分必要条件是: U1∩U2→U1-U2 €F+ 或U1∩U2→U2 -U1...
  • 上篇记录了范式相关的概念和...无损连接和无损分解 上例子: 关系模式R=(A,B,C,D,E),R1 = (A,D),R2 = (A,B),R3= (B,E),R4= (C,D,E),R5=(A,E) F={A→C,B→C,C→D,DE→C,CE→A}, 分解r ={R1,R2,R3,R4,R...
  • 3:直接将R分解到3NF,且满足无损连接性和依赖保持性。 对F的最小覆盖进行处理:首先, 按左部相同原则分组  A->B,A->C为R1({ABC},{A->B,A->C})  AD->E为R2({A,D},{AD->E})  E->D为R3({E,D},{E->D}) 然后...
  • 数据库范式1NF 2NF 3NF BCNF实例分解 ... 数据库中的无损连接分解和是否保持函数依赖的判定 https://blog.csdn.net/legendaryhaha/article/details/80649234 数据库学习之模式分解 https...
  • 无损连接

    2019-07-19 11:21:20
    题目:U=(A,B,C,D,E)F={A->D,E->D,D->...判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解。 解: 先求出候选键为CE。 然后画一个初始判定表如下图所示。 A B C D E AB a1 a2 b13 b14 b15 AE...
  • 数据库判断分解无损连接性 创建m行n列的表,m为分解组数,n为元素数量 将每一行出现的字母写到表中,记为ai;其余按照bij填空 观察F中的推导关系,如a->b,则要更新a列中相同的值的行,确定要更新的行之后,再看...
  • BCNF的保持无损连接分解

    千次阅读 多人点赞 2018-10-30 20:43:58
    BCNF 的分解是数据库范式的内容 分解的算法是这样的 将关系模式R&lt;U,F&gt;分解为一个BCNF的基本步骤是 1).检查R中关系模式是否符合BCNF,若都符合输出即可 2)若R中有关系模式S不符合BCNF,则必有X-&...
  • 无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。 2. 判别无损连接的方法 定理判别(适合关系模式R分解为两个关系模式R1、R2时...

空空如也

空空如也

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

无损连接分解