模式分解练习题.docx

上传人:b****5 文档编号:4603838 上传时间:2022-12-07 格式:DOCX 页数:25 大小:38.07KB
下载 相关 举报
模式分解练习题.docx_第1页
第1页 / 共25页
模式分解练习题.docx_第2页
第2页 / 共25页
模式分解练习题.docx_第3页
第3页 / 共25页
模式分解练习题.docx_第4页
第4页 / 共25页
模式分解练习题.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

模式分解练习题.docx

《模式分解练习题.docx》由会员分享,可在线阅读,更多相关《模式分解练习题.docx(25页珍藏版)》请在冰豆网上搜索。

模式分解练习题.docx

模式分解练习题

有关模式分解题目重点放在三式的分解上,包括分解算法及无损连接性的判断,这类题目的解题步骤一般分为三步:

第一步、将已有的函数依赖集转化为最小的函数依赖集(我们已经练习很多,不再多讲)

第二步、进行三式分解(分解算法见书P192——算法5.3)

第三步、判断分解是否具有无损连接性(分解算法见书P190——算法5.2)

一、已知关系模式R(U,F),U=(A,B,C,D,E,G);F={AB→C,D→EG,C→A,BE→C,BC→D,CG→BD,ACD→B,CE→AG};试求最小依赖集,然后采用模式分解算法将其进行规化处理,规为三式,并用算法说明该分解是否具有无损连接性。

1、求最小函数依赖集

(1)利用分解规则,将F中所有函数依赖变成右边是单个属性的函数依赖,得:

F1={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G}

(2)去掉F1中多余的函数依赖:

对AB→C,在F1-{AB→C}中计算(AB)G+=AB

∵C∈AB,∴AB→C不是多余的函数依赖,不能去掉

对D→E,在F1-{D→E}中计算(D)G+=DG

∵E∈DG,∴D→E不是多余的函数依赖,不能去掉

对D→G,在F1-{D→G}中计算(D)G+=DE

∵G∈DE,∴D→G不是多余的函数依赖,不能去掉

对C→A,在F1-{C→A}中计算(C)G+=C

∵A∈C,∴C→A不是多余的函数依赖,不能去掉

对BE→C,在F1-{BE→C}中计算(BE)G+=BE

∵C∈BE,∴BE→C不是多余的函数依赖,不能去掉

对BC→D,在F1-{BC→D}中计算(BC)G+=ABC

∵D∈ABC,∴BC→D不是多余的函数依赖,不能去掉

对CG→B,在F1-{CG→B}中计算(CG)G+=ABCDEG

∵B∈ABCDEG,∴CG→B是多余的函数依赖,可以去掉

对CG→D,在F1-{CG→D,CG→B}中计算(CG)G+=ACG

∵D∈ACG,∴CG→D不是多余的函数依赖,不能去掉

对ACD→B,在F1-{ACD→B,CG→B}中计算(ACD)G+=ACDEG

∵B∈ACDEG,∴ACD→B不是多余的函数依赖,不能去掉

对CE→A,在F1-{CE→A,CG→B}中计算(CE)G+=ABCDEG

∵A∈ABCDEG,∴CE→A是多余的函数依赖,可以去掉

对CE→G,在F1-{CE→G,CG→B,CE→A}中计算(CE)G+=ACE

∵G∈ACE,∴CE→G不是多余的函数依赖,不能去掉

经上述计算得:

F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,ACD→B,CE→G}

(3)去掉F2中函数依赖左部多余的属性:

对AB→C,在F2中分别计算

对于A,求(B)F+=B,∵C∈B,∴A不是多余的属性,不可以去掉

对于B,求(A)F+=A,∵C∈A,∴B不是多余的属性,不可以去掉

对BE→C,在F2中分别计算

对于B,求(E)F+=E,∵C∈E,∴B不是多余的属性,不可以去掉

对于E,求(B)F+=B,∵C∈B,∴E不是多余的属性,不可以去掉

对BC→D,在F2中分别计算

对于B,求(C)F+=AC,∵D∈AC,∴B不是多余的属性,不可以去掉

对于C,求(B)F+=B,∵C∈B,∴C不是多余的属性,不可以去掉

对CG→D,在F2中分别计算

对于C,求(G)F+=G,∵D∈G=(G)+,∴C不是多余的属性,不可以去掉

对于G,求(C)F+=AC,∵D∈AC=(C)+,∴C不是多余的属性,不可以去掉

对ACD→B,在F2中分别计算

对于A,求(CD)F+=ABCDEG,∵B∈ABCDEG=(CD)+,∴A是多余的属性,可以去掉

F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G}

对CD→B,在F2中分别计算

对于C,求(D)+=DEG,∵B∈DEG,∴C不是多余的属性,不可以去掉

对于D,求(C)+=AC,∵B∈AC,∴D不是多余的属性,不可以去掉

对CE→G,在F2中分别计算

对于C,求(E)+=E,∵G∈E=(E)+,∴C不是多余的属性,不可以去掉

对于E,求(C)+=AC,∵G∈AC=(C)+,∴E不是多余的属性,不可以去掉

最终得最小的函数依赖集:

Fm={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→D,CD→B,CE→G}

2、规化处理分解为三式

(1)找在Fm中不出现的属性,没有;

(2)在Fm中找X→A,XA=U,没有;

(3)对Fm按具有相同左部的原则分解为:

ρ={ABC,DEG,BCE,BCD,CDG,,CEG}

分解为三式后的结果为:

R1(A,B,C)

R2(D,E,G)

R3(B,C,E)

R4(B,C,D)

R5(C,D,G)

R6(C,E,G)

3、判断该分解是否具有无损连接性

首先构造初始表,如下图:

属性

模式

A

B

C

D

E

G

R1(A,B,C)

A1

A2

A3

B14

B15

B16

R2(D,E,G)

B21

B22

B23

A4

A5

A6

R3(B,C,E)

B31

A2

A3

B34

A5

B36

R4(B,C,D)

B41

A2

A3

A4

B45

B46

R5(C,D,G)

B51

B62

A3

A4

B55

A6

R6(C,E,G)

B61

B62

A3

A4

B55

A6

由BC→D可以把B14、B34改为A4,由BC→E可以把B15、B45改为A5,由D→G可以把B16、B36、B46改为A6,此时表中第一行为A1、A2、A3、A4、A5、A6,所以此分解具有无损连接性。

属性

模式

A

B

C

D

E

G

R1(A,B,C)

A1

A2

A3

A4

A5

A6

R2(D,E,G)

B21

B22

B23

A4

A5

A6

R3(B,C,E)

B31

A2

A3

A4

A5

A6

R4(B,C,D)

B41

A2

A3

A4

A5

A6

R5(C,D,G)

B51

B62

A3

A4

B55

A6

R6(C,E,G)

B61

B62

A3

A4

B55

A6

二.已知R,其中U=(A,B,C,D,E,F,G,H,I,J)满足下列函数依赖:

F={AB→E,ABE→FG,B→FI,C→J,CJ→I,G→H},试求最小依赖集,然后采用模式分解算法将其进行规化处理,规为三式,并用算法说明该分解是否具有无损连接性。

1、求最小函数依赖集

(1)利用分解规则,将F中所有函数依赖变成右边是单个属性的函数依赖,得:

F1={AB→E,ABE→G,ABE→F,B→F,B→I,C→J,CJ→I,G→H}

(2)去掉F1中多余的函数依赖:

对AB→E,在F1-{AB→E}中计算(AB)+=ABFI

∵E∈ABFI,∴AB→E不是多余的函数依赖,不能去掉

对ABE→G,在F1-{ABE→G}中计算(ABE)+=ABEFI

∵G∈ABEFI,∴ABE→G不是多余的函数依赖,不能去掉

对ABE→F,在F1-{ABE→F}中计算(ABE)+=ABEFGIH

∵F∈ABEFGIH,∴ABE→F是多余的函数依赖,可以去掉

对B→F,在F1-{B→F}中计算(B)+=BI

∵F∈BI,∴B→F不是多余的函数依赖,不能去掉

对B→I,在F1-{B→I}中计算(B)+=BF

∵I∈BF,∴B→I不是多余的函数依赖,不能去掉

对C→J,在F1-{C→J}中计算(C)+=C

∵F∈C,∴C→J不是多余的函数依赖,不能去掉

对CJ→I,在F1-{CJ→I}中计算(CJ)+=CJ

∵I∈CJ,∴CJ→I不是多余的函数依赖,不能去掉

对G→H,在F1-{G→H}中计算(G)+=G

∵H∈G,∴G→H不是多余的函数依赖,不能去掉

经上述计算得:

F1={AB→E,ABE→G,B→F,B→I,C→J,CJ→I,G→H}

(3)去掉F2中函数依赖左部多余的属性:

对AB→E,在F2中分别计算

对于A,求(B)+=BFI,∵E∈BFI=(B)+,∴A不是多余的属性,不可以去掉

对于B,求(A)+=A,∵C∈A=(A)+,∴B不是多余的属性,不可以去掉

对ABE→G,在F2中分别计算

对于A,求(BE)+=BEFI,∵G∈BEFI=(BE)+,∴A不是多余的属性,不可以去掉

对于B,求(AE)+=AE,∵G∈AE=(AE)+,∴B不是多余的属性,不可以去掉

对于E,求(AB)+=ABEFGIH,∵G∈ABEFGIH,∴E是多余的属性,可以去掉

用AB→G取代ABE→G

对CJ→I,在F2中分别计算

对于C,求(J)+=J,∵I∈J=(J)+,∴C不是多余的属性,不可以去掉

对于J,求(C)+=CIJ,∵I∈CIJ=(C)+,∴C是多余属性,可以去掉

用C→I取代CJ→I

最终得最小的函数依赖集:

Fm={AB→E,AB→G,B→F,B→I,C→J,C→I,G→H}

2、规化处理分解为三式

(1)找在Fm中不出现的属性,D没有出现过,将其从U中去掉得:

U=(A,B,C,E,F,G,H,I,J);

(2)在Fm中找X→A,XA=U,没有;

(3)对Fm按具有相同左部的原则分解为:

ρ={ABEG,BFI,CIJ,GH}

分解为三式后的结果为:

R1(A,B,E,G)

R2(B,F,I)

R3(C,I,J)

R4(G,H)

3、判断该分解是否具有无损连接性

首先构造初始表,如下图

属性

模式

A

B

C

E

F

G

H

I

J

R1(A,B,E,G)

A1

A2

B13

A4

B15

A6

B17

B18

B19

R2(B,F,I)

B21

A2

B23

B24

A5

B26

B27

A8

B29

R3(C,I,J)

B31

B32

A3

B34

B35

B36

B37

A8

A9

R4(G,H)

B41

B42

B43

B44

B45

A6

A7

B48

B49

由B→F可以把B15改为A5,由B→I可以把B18改为A8,由G→H可以把B17改为A7,而对于C→J、C→I、AB→E、AB→G,表不改变,所以此分解不具有无损连接性。

属性

模式

A

B

C

E

F

G

H

I

J

R1(A,B,E,G)

A1

A2

B13

A4

A5

A6

A7

A8

B19

R2(B,F,I)

B21

A2

B23

B24

A5

B26

B27

A8

B29

R3(C,I,J)

B31

B32

A3

B34

B35

B36

B37

A8

A9

R4(G,H)

B41

B42

B43

B44

B45

A6

A7

B48

B49

三.设一关系模式R,其中U={c,t,h,r,s,g,q},F={c→tq,cs→g,ht→r,hr→c,hs→r},试求最小依赖集,然后采用模式分解算法将其进行规化处理,规为三式,并用算法说明该分解是否具有无损连接性。

1、求最小函数依赖集

(1)利用分解规则,将F中所有函数依赖变成右边是单个属性的函数依赖,得:

F1={c→t,c→q,cs→g,ht→r,hr→c,hs→r}

(2)去掉F1中多余的函数依赖:

对c→t,在F1-{c→t}中计算(c)+=cq

∵t∈cq,∴c→t不是多余的函数依赖,不能去掉

对c→q,在F1-{c→q}中计算(c)+=ct

∵q∈ct,∴c→q不是多余的函数依赖,不能去掉

对cs→g,在F1-{cs→g}中计算(cs)+=cstq

∵g∈cstq,∴cs→g不是多余的函数依赖,不能去掉

对ht→r,在F1-{ht→r}中计算(ht)+=ht

∵r∈ht,∴ht→r不是多余的函数依赖,不能去掉

对hr→c,在F1-{hr→c}中计算(hr)+=hr

∵c∈hr,∴hr→c不是多余的函数依赖,不能去掉

对hs→r,在F1-{hs→r}中计算(hs)+=hs

∵r∈C,∴hs→r不是多余的函数依赖,不能去掉

经上述计算得:

F2={c→t,c→q,cs→g,ht→r,hr→c,hs→r}

(3)去掉F2中函数依赖左部多余的属性:

对cs→g,在F2中分别计算

对于c,求(s)+=s,∵g∈s=(s)+,∴c不是多余的属性,不可以去掉

对于s,求(c)+=ctq,∵g∈ctq=(c)+,∴s不是多余的属性,不可以去掉

对ht→r,在F2中分别计算

对于h,求(t)+=t,∵r∈t=(t)+,∴h不是多余的属性,不可以去掉

对于t,求(h)+=h,∵r∈h=(h)+,∴t不是多余的属性,不可以去掉

对hr→c,在F2中分别计算

对于h,求(r)+=r,∵c∈r=(r)+,∴h不是多余的属性,不可以去掉

对于r,求(h)+=h,∵c∈h=(h)+,∴r不是多余的属性,不可以去掉

对hs→r,在F2中分别计算

对于h,求(s)+=s,∵r∈s=(s)+,∴h不是多余的属性,不可以去掉

对于s,求(h)+=h,∵r∈h=(h)+,∴s不是多余的属性,不可以去掉

最终得最小的函数依赖集:

Fm={c→t,c→q,cs→g,ht→r,hr→c,hs→r}

2、规化处理分解为三式

(1)找在Fm中不出现的属性,没有

(2)在Fm中找X→A,XA=U,没有

(3)对Fm按具有相同左部的原则分解为:

ρ={ctq,csg,htr,hrc,hsr}

分解为三式后的结果为:

R1(c,t,q),R2(c,s,g),R3(h,t,r),R4(h,r,c),R5(h,s,r)

3、判断该分解是否具有无损连接性

首先构造初始表,如下图

属性

模式

c

t

h

r

s

g

q

R1(c,t,q)

a1

a2

b13

b14

b15

b16

a7

R2(c,s,g)

a1

b22

b23

b24

a5

a6

b27

R3(h,t,r)

b31

a2

a3

a4

b35

b36

b37

R4(h,r,c)

a1

b42

a3

a4

b45

b46

b47

R5(h,s,r)

b51

b52

a3

a4

a5

b56

b57

由hr→c可以把b31、b51改为a1,由c→t可以把b22、b42、b52改为a2,由c→q可以把b27、b27、b47、b57改为a7,由cs→g可以把b56改为a6,从而表中最后一行为a1、a2、a3、a4、a5、a6a7,所以此分解具有无损连接性。

属性

模式

c

t

h

r

s

g

q

R1(c,t,q)

a1

a2

b13

b14

b15

b16

a7

R2(c,s,g)

a1

a2

b23

b24

a5

a6

a7

R3(h,t,r)

a1

a2

a3

a4

b35

b36

a7

R4(h,r,c)

a1

a2

a3

a4

b45

b46

a7

R5(h,s,r)

a1

a2

a3

a4

a5

a6

a7

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

以下的论述都基于这样一个前提:

R是具有函数依赖集F的关系模式,(R1,R2)是R的一个分解。

首先我们给出一个看似无关却非常重要的概念:

属性集的闭包。

令α为一属性集。

我们称在函数依赖集F下由α函数确定的所有属性的集合为F下α的闭包,记为α+。

下面给出一个计算α+的算法,该算法的输入是函数依赖集F和属性集α,输出存储在变量result中。

算法一:

result:

=α;

while(result发生变化)do

  foreach函数依赖β→γinFdo

  begin

      ifβ∈resultthenresult:

=result∪γ;

  end

属性集闭包的计算有以下两个常用用途:

·判断α是否为超码,通过计算α+(α在F下的闭包),看α+是否包含了R中的所有属性。

若是,则α为R的超码。

·通过检验是否β∈α+,来验证函数依赖是否成立。

也就是说,用属性闭包计算α+,看它是否包含β。

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

●给定关系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

  foreach分解后的Ri

      t=(result∩Ri)+∩Ri//(result∩Ri)+表示result∩Ri的闭包

      result=result∪t

这里的属性闭包是在函数依赖集F下计算出来的。

如果result中包含了β的所有属性,则函数依赖α→β。

分解是保持依赖的当且仅当上述过程中F的所有依赖都被保持。

●设关系模式R,其中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。

●给定关系模式R,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未发生变化,因此最后result=D,并未包含A,所以D→A未被保持,该分解不是保持依赖的。

选D。

名词解释

(1)函数依赖:

FD(functiondependency),设有关系模式R(U),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。

X→Y为模式R的一个函数依赖。

(2)平凡的函数依赖:

对于FDX→Y,如果Y∈X那么称X→Y是一个“平凡的函数依赖”,否则称为“非平凡的FD”。

(3)函数依赖集F的闭包F+:

被逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包(closure),记为F+。

(5)函数依赖的逻辑蕴涵:

设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从F中的函数依赖能够推出X→Y,则称F逻辑蕴涵X→

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1