模式分解練習題_第1頁
模式分解練習題_第2頁
模式分解練習題_第3頁
模式分解練習題_第4頁
模式分解練習題_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、有關模式分解題目重點放在三范式的分解上,包括分解算法及無損連接性的判斷,這類題目的解題步驟一般分為三步:第一步、將已有的函數依賴集轉化為最小的函數依賴集(我們已經練習很多,不再多講)第二步、進行三范式分解(分解算法見書P192算法5.3)第三步、判斷分解是否具有無損連接性(分解算法見書P190算法5.2)一、已知關系模式R(U,F),U=(A,B,C,D,E,G);F=ABC,DEG,CA,BEC,BCD,CGBD,ACDB,CEAG;試求最小依賴集,然后采用模式分解算法將其進行規范化處理,規范為三范式,并用算法說明該分解是否具有無損連接性。1、求最小函數依賴集(1)利用分解規則,將F中所有函

2、數依賴變成右邊是單個屬性的函數依賴,得:F1=ABC,DE,DG,CA,BEC,BCD,CGB,CGD,ACDB,CEA,CEG (2)去掉F1中多余的函數依賴:對ABC,在F1- ABC 中計算(AB)G +=AB CAB,ABC不是多余的函數依賴,不能去掉對DE,在F1- DE 中計算(D)G +=DG EDG,DE不是多余的函數依賴,不能去掉對DG,在F1- DG 中計算(D)G +=DE GDE,DG不是多余的函數依賴,不能去掉對CA,在F1- CA 中計算(C)G +=C AC,CA不是多余的函數依賴,不能去掉對BEC,在F1- BEC 中計算(BE)G +=BE CBE,BEC不是

3、多余的函數依賴,不能去掉對BCD,在F1- BCD 中計算(BC)G +=ABC DABC,BCD不是多余的函數依賴,不能去掉對CGB,在F1- CGB 中計算(CG)G +=ABCDEG BABCDEG,CGB是多余的函數依賴,可以去掉對CGD,在F1- CGD ,CGB 中計算(CG)G +=ACG DACG,CGD不是多余的函數依賴,不能去掉對ACDB,在F1- ACDB,CGB 中計算(ACD)G +=ACDEG BACDEG,ACDB不是多余的函數依賴,不能去掉對CEA,在F1- CEA,CGB 中計算(CE)G +=ABCDEG AABCDEG,CEA是多余的函數依賴,可以去掉對C

4、EG,在F1- CEG ,CGB ,CEA 中計算(CE)G +=ACE GACE,CEG不是多余的函數依賴,不能去掉經上述計算得:F2=ABC,DE,DG,CA,BEC,BCD,CGD,ACDB,CEG (3)去掉F2中函數依賴左部多余的屬性:對ABC,在F2中分別計算 對于A,求(B)F +=B,CB,A不是多余的屬性,不可以去掉 對于B,求(A)F +=A,CA,B不是多余的屬性,不可以去掉對BEC,在F2中分別計算 對于B,求(E)F +=E, CE,B不是多余的屬性,不可以去掉 對于E,求(B)F +=B, CB,E不是多余的屬性,不可以去掉對BCD,在F2中分別計算 對于B,求(C

5、)F +=AC, DAC,B不是多余的屬性,不可以去掉 對于C,求(B)F +=B, CB, C不是多余的屬性,不可以去掉對CGD,在F2中分別計算 對于C,求(G)F +=G, DG=(G)+, C不是多余的屬性,不可以去掉 對于G,求(C)F +=AC, DAC=(C)+, C不是多余的屬性,不可以去掉對ACDB,在F2中分別計算 對于A,求(CD)F +=ABCDEG, BABCDEG =(CD)+, A是多余的屬性,可以去掉F2=ABC,DE,DG,CA,BEC,BCD,CGD,CDB,CEG 對CDB,在F2中分別計算 對于C,求(D)+=DEG, BDEG,C不是多余的屬性,不可以

6、去掉 對于D,求(C)+=AC, BAC, D不是多余的屬性,不可以去掉對CEG,在F2中分別計算 對于C,求(E)+=E, GE=(E)+,C不是多余的屬性,不可以去掉 對于E,求(C)+=AC, GAC=(C)+,E不是多余的屬性,不可以去掉最終得最小的函數依賴集:Fm=ABC,DE,DG,CA,BEC,BCD,CGD,CDB,CEG 2、規范化處理分解為三范式(1)找在Fm中不出現的屬性,沒有;(2)在Fm中找XA,XA=U,沒有; (3)對Fm按具有相同左部的原則分解為:=ABC, DEG, BCE, BCD, CDG,,CEG 分解為三范式后的結果為:R1(A,B,C)R2(D,E,

7、G)R3(B,C,E)R4(B,C,D)R5(C,D,G)R6(C,E,G)3、判斷該分解是否具有無損連接性首先構造初始表,如下圖: 屬性模式ABCDEGR1(A,B,C)A1A2A3B14B15B16R2(D,E,G)B21B22B23A4A5A6R3(B,C,E)B31A2A3B34A5B36R4(B,C,D)B41A2A3A4B45B46R5(C,D,G)B51B62A3A4B55A6R6(C,E,G)B61B62A3A4B55A6由BCD可以把B14、B34改為A4,由BCE可以把B15、B45改為A5,由DG可以把B16、B36、B46改為A6,此時表中第一行為A1、A2、A3、A4

8、、A5、A6,所以此分解具有無損連接性。 屬性模式ABCDEGR1(A,B,C)A1A2A3A4A5A6R2(D,E,G)B21B22B23A4A5A6R3(B,C,E)B31A2A3A4A5A6R4(B,C,D)B41A2A3A4A5A6R5(C,D,G)B51B62A3A4B55A6R6(C,E,G)B61B62A3A4B55A6二已知R, 其中U=(A,B,C,D,E,F,G,H,I,J)滿足下列函數依賴:F=ABE,ABEFG,BFI,CJ,CJI,GH,試求最小依賴集,然后采用模式分解算法將其進行規范化處理,規范為三范式,并用算法說明該分解是否具有無損連接性。1、求最小函數依賴集(1

9、)利用分解規則,將F中所有函數依賴變成右邊是單個屬性的函數依賴,得:F1=ABE,ABEG,ABEF,BF,BI,CJ,CJI,GH (2)去掉F1中多余的函數依賴:對ABE,在F1- ABE 中計算(AB)+=ABFI EABFI,ABE不是多余的函數依賴,不能去掉對ABEG,在F1- ABEG 中計算(ABE)+= ABEFI GABEFI,ABEG不是多余的函數依賴,不能去掉對ABEF,在F1- ABEF 中計算(ABE)+= ABEFGIH FABEFGIH,ABEF是多余的函數依賴,可以去掉對BF,在F1- BF 中計算(B)+=BI FBI,BF不是多余的函數依賴,不能去掉對BI,

10、在F1- BI 中計算(B)+=BF IBF,BI不是多余的函數依賴,不能去掉對CJ,在F1- CJ 中計算(C)+=C FC,CJ不是多余的函數依賴,不能去掉對CJI,在F1- CJI 中計算(CJ)+=CJ ICJ,CJI不是多余的函數依賴,不能去掉對GH,在F1- GH 中計算(G)+=G HG,GH不是多余的函數依賴,不能去掉經上述計算得:F1=ABE,ABEG,BF,BI,CJ,CJI,GH (3)去掉F2中函數依賴左部多余的屬性:對ABE,在F2中分別計算 對于A,求(B)+=BFI,EBFI=(B)+,A不是多余的屬性,不可以去掉 對于B,求(A)+=A, CA=(A)+,B不是

11、多余的屬性,不可以去掉對ABEG,在F2中分別計算 對于A,求(BE)+=BEFI, GBEFI =(BE)+,A不是多余的屬性,不可以去掉 對于B,求(AE)+=AE, GAE=(AE)+,B不是多余的屬性,不可以去掉 對于E,求(AB)+=ABEFGIH,GABEFGIH,E是多余的屬性,可以去掉用ABG取代ABEG對CJI,在F2中分別計算 對于C,求(J)+=J, IJ=(J)+,C不是多余的屬性,不可以去掉 對于J,求(C)+=CIJ, ICIJ=(C)+,C是多余屬性,可以去掉用CI取代CJI最終得最小的函數依賴集:Fm=ABE,ABG,BF,BI,CJ,CI,GH 2、規范化處理

12、分解為三范式(1)找在Fm中不出現的屬性,D沒有出現過,將其從U中去掉得:U=(A,B,C,E,F,G,H,I,J);(2)在Fm中找XA,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、判斷該分解是否具有無損連接性首先構造初始表,如下圖 屬性模式ABCEFGHIJR1(A,B,E,G)A1A2B13A4B15A6B17B18B19R2(B,F,I)B21A2B23B24A5B26B27A8B29R3(C,I,J)B31B32A3B34B35B36

13、B37A8A9R4(G,H)B41B42B43B44B45A6A7B48B49由BF可以把B15改為A5,由BI可以把B18改為A8,由GH可以把B17改為A7,而對于CJ、CI、ABE、ABG,表不改變,所以此分解不具有無損連接性。 屬性模式ABCEFGHIJR1(A,B,E,G)A1A2B13A4A5A6A7A8B19R2(B,F,I)B21A2B23B24A5B26B27A8B29R3(C,I,J)B31B32A3B34B35B36B37A8A9R4(G,H)B41B42B43B44B45A6A7B48B49三設一關系模式R, 其中U=c,t,h,r,s,g,q,F=ctq,csg,ht

14、r, hrc,hsr,試求最小依賴集,然后采用模式分解算法將其進行規范化處理,規范為三范式,并用算法說明該分解是否具有無損連接性。1、求最小函數依賴集(1)利用分解規則,將F中所有函數依賴變成右邊是單個屬性的函數依賴,得:F1=ct, cq, csg,htr, hrc,hsr(2)去掉F1中多余的函數依賴:對ct,在F1- ct 中計算(c)+=cq tcq,ct不是多余的函數依賴,不能去掉對cq,在F1- cq 中計算(c)+=ct qct,cq不是多余的函數依賴,不能去掉對csg,在F1- csg 中計算(cs)+= cstq gcstq,csg不是多余的函數依賴,不能去掉對htr,在F1

15、- htr 中計算(ht)+= ht rht,htr不是多余的函數依賴,不能去掉對hrc,在F1- hrc 中計算(hr)+=hr chr,hrc不是多余的函數依賴,不能去掉對hsr,在F1- hsr 中計算(hs)+=hs rC,hsr不是多余的函數依賴,不能去掉經上述計算得:F2= ct, cq,csg,htr, hrc,hsr (3)去掉F2中函數依賴左部多余的屬性:對csg,在F2中分別計算 對于c,求(s)+=s,gs=(s)+,c不是多余的屬性,不可以去掉 對于s,求(c)+=ctq, gctq=(c)+,s不是多余的屬性,不可以去掉對htr,在F2中分別計算 對于h,求(t)+=

16、t, rt =(t)+,h不是多余的屬性,不可以去掉 對于t,求(h)+=h, rh=(h)+,t不是多余的屬性,不可以去掉對hrc,在F2中分別計算 對于h,求(r)+=r, cr=(r)+,h不是多余的屬性,不可以去掉 對于r,求(h)+=h, ch=(h)+,r不是多余的屬性,不可以去掉對hsr,在F2中分別計算 對于h,求(s)+=s, rs=(s)+,h不是多余的屬性,不可以去掉 對于s,求(h)+=h, rh=(h)+,s不是多余的屬性,不可以去掉最終得最小的函數依賴集:Fm= ct, cq, csg,htr, hrc,hsr 2、規范化處理分解為三范式 (1)找在Fm中不出現的屬

17、性,沒有(2)在Fm中找XA,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、判斷該分解是否具有無損連接性首先構造初始表,如下圖 屬性模式cthrsgqR1(c,t,q)a1a2b13b14b15b16a7R2(c,s,g)a1b22b23b24a5a6b27R3(h,t,r)b31a2a3a4b35b36b37R4(h,r,c)a1b42a3a4b45b46b47R5(h,s,r)b51b52a3a4a5b56b

18、57由hrc可以把b31、b51改為a1,由ct可以把b22、b42、b52改為a2,由cq可以把b27、b27、b47、b57改為a7,由csg可以把b56改為a6,從而表中最后一行為a1、a2、a3、a4、a5、a6 a7,所以此分解具有無損連接性。 屬性模式cthrsgqR1(c,t,q)a1a2b13b14b15b16a7R2(c,s,g)a1a2b23b24a5a6a7R3(h,t,r)a1a2a3a4b35b36a7R4(h,r,c)a1a2a3a4b45b46a7R5(h,s,r)a1a2a3a4a5a6a7關于無損分解和保持依賴的判斷,是系分和數工考試中每年基本上都會 考的題,

19、而且絕大部分是對一個關系模式分解成兩個模式的考察,分解為三個以上模式時無損分解和保持依賴的判斷比較復雜,考的可能性不大,因此我們只對“一 個關系模式分解成兩個模式”這種類型的題的相關判斷做一個總結。以下的論述都基于這樣一個前提:R是具有函數依賴集F的關系模式,(R1 ,R2)是R的一個分解。首先我們給出一個看似無關卻非常重要的概念:屬性集的閉包。令為一屬性集。我們稱在函數依賴集F下由函數確定的所有屬性的集合為F下的閉包,記為+ 。下面給出一個計算+的算法,該算法的輸入是函數依賴集F和屬性集,輸出存儲在變量result中。算法一:result:=;while(result發生變化)do for

20、each 函數依賴 in F do begin if result then result:=result; end屬性集閉包的計算有以下兩個常用用途:判斷是否為超碼,通過計算+(在F下的閉包),看+ 是否包含了R中的所有屬性。若是,則為R的超碼。通過檢驗是否+,來驗證函數依賴是否成立。也就是說,用屬性閉包計算+,看它是否包含。(請原諒我用符號來表示兩個集合之間的包含關系,那個表示包含的符號我找不到,大家知道是什么意思就行了。) 給定關系R(A1,A2,A3,A4)上的函數依賴集F=A1A2,A3A2,A2A3,A2A4,R的候選關鍵字為_。(37)A. A1 B. A1A3 C. A1A3A

21、4 D. A1A2A3首先我們按照上面的算法計算A1+ 。result=A1,由于A1A2,A1result,所以result=resultA2=A1A2由于A2A3,A2result,所以result=resultA3=A1A2A3由于A2A4,A2result,所以result=resultA3=A1A2A3A4由于A3A2,A3result,所以result=resultA2=A1A2A3A4通過計算我們看到,A1+ =result=A1A2A3A4,所以A1是R的超碼,理所當然是R的候選關鍵字。此題選A 。無損分解的判斷。如果R1R2是R1或R2的超碼,則R上的分解(R1,R2)是無損

22、分解。這是一個充分條件,當所有的約束都是函數依賴時它才是必要條件(例如多值依賴就是一種非函數依賴的約束),不過這已經足夠了。保持依賴的判斷。如果F上的每一個函數依賴都在其分解后的某一個關系上成立,則這個分解是保持依賴的(這是一個充分條件)。如果上述判斷失敗,并不能斷言分解不是保持依賴的,還要使用下面的通用方法來做進一步判斷。該方法的表述如下:算法二:對F上的每一個使用下面的過程:result:=;while(result發生變化)do for each 分解后的Ri t=(resultRi)+ Ri /(resultRi)+表示resultRi的閉包 result=resultt這里的屬性閉包

23、是在函數依賴集F下計算出來的。如果result中包含了的所有屬性,則函數依賴。分解是保持依賴的當且僅當上述過程中F的所有依賴都被保持。設關系模式R,其中U=A, B, C, D, E,FABC,CD,BCE,EA,則分解=R1(ABCE),R2(CD)滿足 (43) 。(43) A具有無損連接性、保持函數依賴 B不具有無損連接性、保持函數依賴 C具有無損連接性、不保持函數依賴 D不具有無損連接性、不保持函數依賴先做無損鏈接的判斷。R1R2=C,計算C+。Result=C由于CD,Cresult,所以result=resultD=CD可見C是R2的超碼,該分解是一個無損分解。再做保持依賴的判斷。

24、ABC,BCE, EA都在R1上成立(也就是說每一個函數依賴左右兩邊的屬性都在R1中),CD在R2上成立,因此給分解是保持依賴的。選A。給定關系模式R,U=A, B, C, D, E,FBA,DA,AE,ACB,其候選關鍵字為 (40),則分解=R1(ABCE),R2(CD)滿足 (41) 。(40) AABD BABE CACD DCD(41) A具有無損連接性、保持函數依賴 B不具有無損連接性、保持函數依賴 C具有無損連接性、不保持函數依賴 D不具有無損連接性、不保持函數依賴看見了吧,和前面一題多么的相像!對于第一問,分別計算ABCD四個選項的閉包,(ABD)+ = ABDE (ABE)+

25、 = ABE (ACD)+ = ABCDE (CD)+ = ABCDE 選D。再看第二問。先做無損鏈接的判斷。R1R2=C,計算C+。result=C因此C既不是R1也不是R2的超碼,該分解不具有無損分解性。再做保持依賴的判斷。BA,AE,ACB在R1上成立,DA在R1和R2上都不成立,因此需做進一步判斷。由于BA,AE,ACB都是被保持的(因為它們的元素都在R1中),因此我們要判斷的是DA是不是也被保持。對于DA應用算法二:result=D對R1,resultR1=(空集,找不到空集的符號,就用這個表示吧),t=,result=D再對R2,resultR2=D,D+ =ADE ,t=D+ R

26、2=D一個循環后result未發生變化,因此最后result=D,并未包含A,所以DA未被保持,該分解不是保持依賴的。選D。名詞解釋 (1) 函數依賴:FD(function dependency),設有關系模式R(U),X,Y是U的子集, r是R的任一具體關系,如果對r的任意兩個元組t1,t2,由t1X=t2X導致t1Y=t2Y, 則稱X函數決定Y,或Y函數依賴于X,記為XY。XY為模式R的一個函數依賴。 (2) 平凡的函數依賴:對于FD XY,如果YX 那么稱XY 是一個“平凡的函數依賴”,否則稱為“非平凡的FD”。(3) 函數依賴集F的閉包F+: 被邏輯蘊涵的函數依賴的全體構成的集合,稱

27、為F的閉包(closure),記為F+。 (5) 函數依賴的邏輯蘊涵:設F是關系模式R的一個函數依賴集,X,Y是R的屬性子集, 如果從F中的函數依賴能夠推出XY,則稱F邏輯蘊涵XY,記為F|=XY。 (6) 依賴集的覆蓋和等價:關系模式R(U)上的兩個函數依賴集F和G,如果滿足F+=G+,則稱F和G是等價的。 如果F和G等價,則可稱F覆蓋G或G覆蓋F。 (7) 最小依賴集:如果函數集合F滿足以下三個條件:(1)F中每個函數依賴的右部都是單屬性; (2)F中的任一函數依賴XA,其F-XA與F是不等價的;(3)F中的任一函數依賴XA,Z為X的子集,(F-XA)ZA與F不等價。則稱F為最小函數依賴集

28、合,記為Fmin。 (8) 無損聯接:設R是一關系模式,分解成關系模式=R1,R2.,Rk,F是R上的一個函數依賴集。 如果對R中滿足F的每一個關系r都有r=R1(r)R2(r).Rk(r)則稱這個分解相對于F是無損聯接分解。 (10) 保持依賴集:所謂保持依賴就是指關系模式的函數依賴集在分解后仍在數據庫中保持不變, 即關系模式R到=R1,R2,.,Rk的分解,使函數依賴集F被F這些Ri上的投影蘊涵。 (11) 1NF:第一范式。如果關系模式R的所有屬性的值域中每一個值都是不可再分解的值, 則稱R是屬于第一范式模式。如果某個數據庫模式都是第一范式的,則稱該數據庫存模式屬于第一范式的數據庫模式。

29、 第一范式的模式要求屬性值不可再分裂成更小部分,即屬性項不能是屬性組合和組屬性組成。 (12) 2NF:第二范式。如果關系模式R為第一范式,并且R中每一個非主屬性完全函數依賴于R的某個候選鍵, 則稱是第二范式模式;如果某個數據庫模式中每個關系模式都是第二范式的,則稱該數據庫模式屬于第二范式的數據庫模式。 (注:如果A是關系模式R的候選鍵的一個屬性,則稱A是R的主屬性,否則稱A是R的非主屬性。) (13) 3NF:第三范式。如果關系模式R是第二范式,且每個非主屬性都不傳遞依賴于R的候選鍵, 則稱R是第三范式的模式。如果某個數據庫模式中的每個關系模式都是第三范式,則稱為3NF的數據庫模式。 (14

30、) BCNF:BC范式。如果關系模式R是第一范式,且每個屬性都不傳遞依賴于R的候選鍵,那么稱R是BCNF的模式。 (17) 4NF:第四范式。設R是一個關系模式,D是R上的多值依賴集合。如果D中成立非平凡多值依賴XY時, X必是R的超鍵,那么稱R是第四范式的模式。3.4 對函數依賴XY的定義加以擴充,X和Y可以為空屬性集,用表示, 那么X,Y,的含義是什么? 根據函數依賴的定義,以上三個表達式的含義為: (1)一個關系模式R(U)中,X,Y是U的子集,r是R的任一具體關系,如果對r的任意兩個元組t1,t2, 由t1X=t2X必有t1=t2。即X表示空屬性函數依賴于X。這是任何關系中都存在的。

31、(2)Y表示Y函數依賴于空屬性。由此可知該關系中所有元組中Y屬性的值均相同。 (3)表示空屬性函數依賴于空屬性。這也是任何關系中都存在的。 3.6關系模式R有n個屬性,在模式R上可能成立的函數依賴有多少個? 其中平凡的函數依賴有多少個?非平凡的函數依賴有多少個? (要考慮所有可能的情況,數學排列組合問題。對于數據庫本身而言,本題沒多大意義) 所有屬性相互依賴時,函數依賴最多。平凡的函數依賴:對于函數依賴XY,如果YX,那么稱XY是一個“平凡的函數依賴”。3.7已知關系模式R(ABC),F=AC,BC,求F+。 可以直接通過自反律、增廣律、傳遞律加以推廣: F+=,A,B,C,AC,BC,AB,

32、ABA,ABB,ABC,ABBC,ABAB,ABABC,BC,BCC,BCB,BCBC,AC,ACC,ACA,ACAC,ABC,ABCA,ABCB,ABCC,ABCBC,ABCAB,ABCABC4.6 試分析下列分解是否具有無損聯接和保持函數依賴的特點: (1)設R(ABC),F1=AB 在R上成立,1=AB,AC。 首先,檢查是否具有無損聯接特點: 第1種解法-算法4.2: ABCABa1a2b13ACa1b22a3ABCa1a2b13a1a2a3(1) 構造表(2)根據AB進行處理結果第二行全是a行,因此分解是無損聯接分解。 第2種解法:(定理4.8) 設 R1=AB,R2=AC R1R2

33、=A R2- R1=B AB,該分解是無損聯接分解。 然后,檢查分解是否保持函數依賴 R1(F1)=AB,以及按自反率推出的一些函數依賴 R2(F1)=按自反率推出的一些函數依賴 F1被R1(F1)所蘊涵,所以該分解保持函數依賴。 (2)設R(ABC),F2=AC,BC在R上成立,2=AB,AC 首先,檢查是否具有無損聯接特點: 第1種解法(略) 第2種解法:(定理4.8) 設 R1=AB,R2=AC R1R2=A R2- R1=C AC,該分解是無損聯接分解。 然后,檢查分解是否保持函數依賴 R1(F2)=按自反率推出的一些函數依賴 R2(F2)=AC,以及按自反率推出的一些函數依賴 F1中

34、的BC沒有被蘊涵,所以該分解沒有保持函數依賴。 (3)設R(ABC),F3=AB,在R上成立,3=AB,BC. 首先,檢查是否具有無損聯接特點: 第1種解法: ABCABa1a2b13BCb21a2a3ABCa1a2a3a1b22a3(1) 構造表(2)根據AB進行處理沒有一行全是a行。因此這個分解不具有無損聯接特性。 第2種解法:(定理4.8) 設 R1=AB,R2=BC R1R2=B R2- R1=C,R1- R2=A BC,BA不在F3中 該分解不具有無損聯接特性。然后,檢查分解是否保持函數依賴 R1(F3)=AB,以及按自反率推出的一些函數依賴 R2(F3)=按自反率推出的一些函數依賴

35、 F1被R1(F3)所蘊涵,所以該分解保持函數依賴。 (4)設R(ABC),F4=AB,BC在R上成立,4=AC,BC 首先,檢查是否具有無損聯接特點: 第1種解法(略) 第2種解法:(定理4.8) 設 R1=AC,R2=BC R1(AC)R2(BC)=C R2- R1=B,R1- R2=A CB,CA不在F4中 該分解不具有無損聯接特性。 然后,檢查分解是否保持函數依賴 R1(F2)=按自反率推出的一些函數依賴 R2(F2)=BC,以及按自反率推出的一些函數依賴 F1中的AB沒有被蘊涵,所以該分解沒有保持函數依賴。 4.7 設R=ABCD,R上的函數依賴集F=AB,BC,AD,DC,R的一個

36、分解=AB,AC,AD,求:(1)F在的每個模式上的投影。(2)相對于F是無損聯接分解嗎?(3)保持依賴嗎? (1) AB(F)=AB,及按自反律所推導出的一些平凡函數依賴 AC(F)=AC,及按自反律所推導出的一些平凡函數依賴 AD(F)=AD,及按自反律所推導出的一些平凡函數依賴 (2) ABCDABa1a2b13b14ACa1b22a3b24ADa1b32b33a4ABCDa1a2a3a4a1a2a3a4a1a2a3a4(1) 構造表(2)根據AB,BC,AD,DC進行處理每一行都是a,相對于F是無損聯接分解。 (3)AB(F)AC(F)AD(F)=AB,AC,AD, 沒有滿足BC,DC

37、函數依賴, 因此相對于F的這個分解不保持函數依賴。 4.8 設R=ABCD,R上的F=AC,DC,BDA, 試證明=AB,ACD,BCD相對于F不是無損聯接分解。 根據算法4.2 ABCDABa1a2b13b14ACDa1b22a3a4BCDb31a2a3a4ABCDa1a2a3b14a1b22a3a4b31a2a3a4(1) 構造表(2)根據AC,DC,BDA進行處理沒有一行都是a,所以,相對于F不是無損聯接分解。 4.9 設R=ABCD,R上的F=AB,BC,DB,把R分解成BCNF模式集。 (1)若首先把R分解成ACD,BD,試求F在這兩個模式上的投影。 (2)ACD和BD是BCNF嗎?

38、如果不是,請進一步分解。 (1)ACD(F)=AC BD(F)=DB (2)因為根據BCNF的定義,要求關系模式是第一范式,且每個屬性都不傳遞依賴于R的侯選鍵。 BCD中(A,D)為候選鍵,可是(A,D)A, AC,所以它不是BCNF模式。 它可進一步分解為:AC,DC,此時AC,DC均為BCNF模式。 BD是BCNF,因為R2(BD)是第一范式,且每個屬性都不傳遞依賴于D(候選鍵),所以它是BCNF模式。 4.10 設R=ABCD,=AB,BC,CD。F1=AB,BC;F2=BC,CD; (1)如果F1是R上的函數依賴集,此時是無損聯接分解嗎?若不是,試舉出反例。 (2)如果F2是R上的函數

39、依賴集呢? (1)不是無損聯接。可由算法4.2判斷或由定理4.8判斷。 根據算法4.2 ABCDABa1a2b13b14BCb21a2a3b24CDb31b32a3a4ABCDa1a2a3b14b21a2a3b24b31b32a3a4(1) 構造表(2)根據AB,BC進行處理結果沒有出現一行全a的情況,所以它不是無損聯接。舉例如下: 設模式R的一關系r為(a1b1c1d1),(a2b2c1d2) 則有:r1=AB(r)=(a1b1),(a2b2) r2=BC(r)=(b1c1),(b2c1) r3=CD(r)=(c1d1),(c1d2) 令a=r1r2r3= (a1b1c1d1),(a1b1c

40、1d2),(a2b2c1d1),(a2b2c1d2) ra,所以不是無損聯接。 (2)如果F2是R上的函數依賴,則可以判斷,是無損聯接。判斷過程同上。 4.11 設關系模式R(S#,C#,GRADE,TNAME,TADDR),其屬性分別表示學生學號、 選修課程的編號,成績、任課教師地址等意義。如果規定,每個學生每學一門課只有一個成績; 每門課只有一個教師任教;每個教師只有一個地址(此處不允許教師同名同姓)。 (1)試寫出關系模式R基本的函數依賴和候選鍵。 (2)試把R分解成2NF模式集并說明理由。 (3)試把R分解成3NF模式集,并說明理由。 (1)F=(S#,C#)GRADE,C#TNAME

41、,TNAMETADDR 侯選鍵是(S#,C#)。 (2)在模式R中,TNAME不完全依賴于鍵(S#,C#),因此需進行分解,可分解為下列兩個關系。 SC=S#,C#,GRADE C=C#,TNAME,TADDR 分解后,SC中,GRADE完全依賴于侯選鍵(S#,C#),在C中,主屬性是C#,TNAME、TADDR均完全依賴于C#。 因此,該分解符合2NF模式。 (3)3NF:若每個關系模式是2NF,則每個非主屬性都不傳遞于R的候選鍵。 按上述已分好的兩個模式,SC中已滿足“每個非主屬性都不傳遞于R的候選鍵”,已是3NF,而在C中, C#TNAME,TNAMETADDR,TADDR傳遞依賴于C#

42、,因此還需分成兩個模式:CT(C#,TNAME), T(TNAME,TADD)。 分解后,總共有SC=S#,C#,GRADE,CT(C#,TNAME), T(TNAME,TADD)三個模式。 該分解符合3NF模式。 1、 關系數據庫通過表與表之間的公共屬性實現數據之間的聯系。這(些)個公共屬性是一個表的主碼,是另一個表的外碼;它們應滿足參照完整性約束條件。(T)2、 在SQL Server中,數據存儲在一個個的關系表格中,這些關系表格也叫數據表,或基本表。(T)3、 一個關系(relation)就是一個二維表,二維表的表名就是關系名。一個數據庫包含一個表。(F)4、 關系中的主碼不能取空值,它

43、要求每一關系中的每個元組在組成主碼的屬性上不能為空值是實體完整性。其中“空值”是指沒有值,是不確定的值。(T)5、 規則用來保證輸入到列中的數據的實體完整性。規則比檢查約束更簡明,一個列只能應用一個檢查約束,但是卻可以應用多個規則。(F)6、 在SQL Server中,登錄對象和用戶對象是權限管理的兩種完全相同的對象。(F)7、 事務日志本身是一個數據庫,用來保存所有更新數據庫事務的操作。其主要用途是恢復由各種故障造成的數據丟失,將DB恢復到最近某個一致性狀態。(T)8、 已經更改了數據庫中數據,但還沒有完成的事務在恢復過程中,SQL Server從磁盤上讀取數據頁,重新套用更改,然后再將數據

44、頁寫回磁盤上。(F)1、 SQL Server是基于客戶機/服務器的關系數據庫管理系統。(T)2、 在關系中,如果某個屬性(或屬性組)是另一個關系的主鍵,稱該屬性(或屬性組)為這個關系的外鍵(外碼)。外鍵的值可有兩種選擇:一是來源于所參照關系的主鍵,二是為空值。(T)3、 缺省對象與缺省約束的作用是不同的,它為插入語句中未指定的數據列提供數值。(F)4、 SQL Server還提供了一種被稱為觸發器的特殊機制來實現數據庫的數據完整性。(T)5、 如果登錄名還沒有被映射到用戶名上,可以用guest用戶訪問數據庫。(T)6、 事務反映現實世界中需要以完整單位提交的一項工作。它是一個邏輯工作單元,不

45、必完整地執行或者全都不執行。(F)7、 從差異備份還原,必須先從完整備份還原,然后還原上次完整備份后的所有差異備份文件,并且還原時必須使用NORECOVERY選項。(T)1、 用DROP語句可以刪除數據庫。(T)2、 參照關系也稱主關系,被參照關系也稱從關系,它們是指以外鍵相關聯的兩個關系。以其他表的外鍵為主鍵的關系稱為參照關系;外鍵所在的關系稱為被參照關系或目標關系。(F)3、 觸發器的嵌套是指觸發器在更改一個表中的內容時,激活了該表的另外一個觸發器,而該觸發器又以這種方式激活了第三個觸發器,依此類推。(T)4、 使用事務日志文件可以恢復非日志事務。(F)5、 事務的永久性意味著在事務完成后

46、,所有的數據保持一致的狀態,這保證了數據的完整性。(F)1、 數據庫系統提供了對數據進行有效處理的方法。它由四大部分組成:數據庫、數據庫管理系統、數據庫應用程序和數據庫管理員。(T)2、 SQL Server的服務管理器允許用戶輸入SQL語句并且迅速查看這些語句的結果。(F)3、 數據完整性是指數據庫中數據在邏輯上的一致性和合理性。通過完整性約束機制,當用戶對數據庫數據進行操作時,系統可以在一定程序上保證數據的正確性。(T)4、 實現數據完整性有三種方式,即聲明數據完整性、實現數據完整性和過程數據完整性。(F)5、 事務的一致性使SQL Server確保事務作為一個不可分割的基本單元來執行。(

47、F)1、 創建數據庫的用戶并不一定是該數據庫的所有者。(F)2、 在SQL Server中,可用兩種方式對數據表進行操作:在圖形界面上的菜單方式和使用T-SQL語言方式。(T)3、 在關系數據庫中,表與表之間的聯系是通過公共屬性實現的,這(些)個公共屬性是一個表的主碼,是另一個表的外碼,這就是參照完整性。實現它的規則為外碼的取值必須是另一個表主碼的有效值,或者是“空值”。(T)4、 事務日志記錄了系統的各種操作和出錯情況,通過觀測日志,可以分析系統的缺陷,找出錯誤的來源。(T)1在關系數據模型中,實體與實體之間的聯系統一用二維表表示。Y2同一個關系模型中可以出現值完全相同的兩個元組。N3投影操

48、作是對表進行水平方向的分割。N4在一個關系中不可能出現兩個完全相同的元組是通過實體完整性規則實現的。Y5建立數據庫中的表時,將年齡字段值限制在1825歲之間。這種約束屬于參照完整性約束。N6關系模型中有三類完整性約束,并且關系模型必須滿足這三類完整性約束條件。N7.“通過輸入數據創建表”方式建立的表結構既說明了表中字段的名稱,也說明了每個字段的數據類型和字段屬性。N8修改表結構在設計視圖中完成,編輯表記錄只能在數據表視圖中完成。Y11. 任何數據類型的字段都可以建立索引以提高數據檢索效率。N12數據表的復制既可以在不同數據庫間復制,也可以在同一個數據庫下復制。Y14一對一的關系可以合并,多對多

49、的關系可拆成兩個一對多的關系,因此,表間關系可以都定義為一對多的關系。Y15在定義表間關系時,應設立一些準則,這些準則將有助于維護數據的完整性。參照完整性就是在輸入、刪除或更新記錄時,為維持表之間已經定義的關系而必須遵循的規則。Y16. 我們可以根據表來建立查詢,但不可以根據某一個查詢來建立新的查詢。N17. “SQL”視圖用來顯示與“設計”視圖等效的SQL語句。Y18. 查詢的“數據表”視圖看起來很像表,它們之間是沒有什么差別的。N19. 使用選擇查詢可以從一個或多個表或查詢中檢索數據,可以對記錄組或全部記錄進行求總計、計數等匯總運算。Y20. 建立多表查詢的兩個表必須有相同的字段,通過這個相同字段建立起兩個表之間的關系。Y21. 使用查詢“設計”視圖中的“條件”行,可以對查詢中的全部記錄或記錄組計算一個或多個字段的統計值。使用“總計”行,可以添加影響計算結果的條件表達式。N25. 執行參數查詢時,數據庫系統顯示所需參數的對話框,由用戶輸入相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論