日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

数据库复习之规范化理论应用(第八次上机内容)

發(fā)布時(shí)間:2024/9/5 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库复习之规范化理论应用(第八次上机内容) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

聲明:本文為作者復(fù)習(xí)數(shù)據(jù)庫(kù)課程時(shí)簡(jiǎn)單記錄的筆記,如有錯(cuò)誤之處,敬請(qǐng)指出,謝謝。

?

一、理論基礎(chǔ)

1.無(wú)損連接性(Lossless Join):設(shè)關(guān)系模式R(U,F)被分解為若干個(gè)關(guān)系模式R1(U1,F1),R2(U2,F2),…, Rn(Un,Fn),其中U=U1U2…Un,且不存在UnUj式,Fi為F在Uj上的投影,如果R與R1,R2,…,Rn自然連接的結(jié)果相等,則稱關(guān)系模式R的分解具有無(wú)損連接性。

  (上面別看了,看下面!)

  簡(jiǎn)單來(lái)說(shuō),就是如果對(duì)分解后的新關(guān)系進(jìn)行自然連接得到的元組的集合與原關(guān)系完全一致,則稱為無(wú)損連接。

2.函數(shù)依賴保持性(Preserve Dependency):設(shè)關(guān)系模式R(U,F)被分解為若干個(gè)關(guān)系模式R1(U1,F1),R2(U2,F2),…, Rn(Un,Fn),其中U=U1U2…UN,且不存在UNUj式,Fi為F在Uj上的投影;如果F所蘊(yùn)含的任意一個(gè)函數(shù)依賴一定也由(F1 U F2 …U Fn)所蘊(yùn)含,則稱關(guān)系模式R的分解具有函數(shù)依賴保持性。

  (概念復(fù)雜就別看了,腦殼疼)

  簡(jiǎn)單來(lái)說(shuō),如果F上的每一個(gè)函數(shù)依賴都在其分解后的某一個(gè)關(guān)系上成立,則這個(gè)分解是保持函數(shù)依賴的(注意:這是一個(gè)充分條件)。

3.規(guī)范化過(guò)程既要具有無(wú)損連接性,又要具有函數(shù)依賴保持性。(僅偏一方都會(huì)有問(wèn)題),前者可以保證不丟失信息,后者可以減輕或解決各種異常情況。

4.非規(guī)范化技術(shù):有時(shí)候可以適當(dāng)降低甚至拋棄關(guān)系模式的范式,提高數(shù)據(jù)庫(kù)運(yùn)行效率。比如經(jīng)常從兩個(gè)表中查詢數(shù)據(jù),為了避免頻繁連接,可以適當(dāng)數(shù)據(jù)冗余。

  (1)表分割:水平分割,垂直分割。

  (2)非規(guī)范化設(shè)計(jì)的主要優(yōu)點(diǎn)

  • 減少了查詢操作所需的連接
  • 減少了外部鍵和索引的數(shù)量
  • 可以預(yù)先進(jìn)行統(tǒng)計(jì)計(jì)算,提高了查詢時(shí)的響應(yīng)速度

  (3)非規(guī)范化存在的主要問(wèn)題

  • 增加了數(shù)據(jù)冗余
  • 影響數(shù)據(jù)庫(kù)的完整性
  • 降低了數(shù)據(jù)更新的速度
  • 增加了存儲(chǔ)表所占用的物理空間

5.閉包概念

  • 屬性集的閉包:給定關(guān)系R(U,F), 對(duì)F,F+中所有X→A的A的集合稱為X的閉包,記為X+
  • 函數(shù)依賴的閉包:?若F為關(guān)系模式R(U)的函數(shù)依賴集,我們把F以及所有被F邏輯蘊(yùn)涵的函數(shù)依賴的集合稱為F的閉包,記為F+

    規(guī)定:若X為U的子集,X→Φ 屬于F+

屬性集閉包的用途:

  • 判斷α是否為超碼,通過(guò)計(jì)算α+(α在F下的閉包),看α+ 是否包含了R中的所有屬性。若是,則α為R的超碼。
  • 通過(guò)檢驗(yàn)是否β∈α+,來(lái)驗(yàn)證函數(shù)依賴是否成立。也就是說(shuō),用屬性閉包計(jì)算α+,看它是否包含β。

二、例題講述(第八次上機(jī))

基本概念講述:http://www.cnblogs.com/AlvinZH/p/6856298.html

解題方法要點(diǎn)一:判定函數(shù)依賴X→Y是否能由F導(dǎo)出的問(wèn)題,可轉(zhuǎn)化為求X+并判定Y是否是X+子集的問(wèn)題。(求F閉包的問(wèn)題可轉(zhuǎn)化為求屬性集閉包的問(wèn)題)

解題方法要點(diǎn)二:求屬性集的閉包算法:

  • 將A置入A+
  • 對(duì)每一FD(函數(shù)依賴),若左部屬于A+,則將右部置入A+
  • 重復(fù)至A+不能擴(kuò)大。
  • 解題方法要點(diǎn)三:函數(shù)依賴推理規(guī)則:?

  • 若XY->Z,則X->Z,Y->Z(錯(cuò)誤)
  • 若X->Y, 則XZ->YZ
  • 若X->Y, X->Z,則X->YZ
  • 若X->Y,Z∈Y,則X->Z
  • 若X->Y,Y->Z,則X->Z
  • 若X->YZ,則X->Y,X->Z
  • 若A->B,BC->D,則AC->D

  • 例1.已知某個(gè)關(guān)系,具有屬性:A,B,C,D,E,F。假設(shè)該關(guān)系有函數(shù)依賴F={AB->C, BC->AD, D->E,CF->B},?判斷AB->D,D->A是否蘊(yùn)含于這些函數(shù)依賴中。

    解答:前者轉(zhuǎn)化為求屬性集AB的閉包:{A,B,C,D,E},D是其閉包的子集,所以前者蘊(yùn)含于這些函數(shù)依賴中。后者求屬性集D的閉包:{D,E},A不是其閉包的子集,所以后者不蘊(yùn)含其中。


    例2.已知關(guān)系模式R(U,F),U={A,B,C,D,E,G},F={AB->C, C->A,BC->D, ACD->B, D->EG, BE->C, CG->BD, CE->AG},判斷BD->AC是否屬于F+

    解答:本題換了一種問(wèn)法,道理是一樣:判斷BD->AC成不成立。轉(zhuǎn)化為求BD的閉包:{B,D,E,G,C,A},AC是其子集,所以屬于。


    例3.給定關(guān)系R(A1,A2,A3,A4)上的函數(shù)依賴集F={A1→A2,A3→A2,A2→A3,A2→A4},R的候選關(guān)鍵字為__A__。

      A. A1  B. A1A3  C. A1A3A4  D. A1A2A3

    解答:求候選關(guān)鍵字,先求哪個(gè)屬性集的閉包包含所有屬性(超碼)。A1的閉包:{A1,A2,A3,A4},符合要求。


    例4.設(shè)有關(guān)系模式R(職工名,項(xiàng)目名,工資,部門名,部門經(jīng)理)。如果規(guī)定,每個(gè)職工可以參加多個(gè)項(xiàng)目,各領(lǐng)一份工資(一人一項(xiàng)目同時(shí)確定工資);每個(gè)項(xiàng)目只屬于一個(gè)部門管理;每個(gè)部門只有一個(gè)經(jīng)理。

    ①試寫出關(guān)系模式R的基本函數(shù)依賴和關(guān)鍵碼.

      基本函數(shù)依賴:(職工名,項(xiàng)目名)→工資,項(xiàng)目名→部門名,部門名→部門經(jīng)理

      關(guān)鍵碼:(職工名,項(xiàng)目名)
    ②說(shuō)明R不是2NF的理由,并把R分解成2NF.

      2NF特點(diǎn):不存在非主屬性對(duì)候選碼的部分函數(shù)依賴。

      (畫圖好理解qwq)

      這里(職工名,項(xiàng)目名) P→部門名,存在非主屬性對(duì)候選碼的部分函數(shù)依賴,所以不屬于2NF。

      分解為2NF:R1(職工名,項(xiàng)目名,工資)、R2(項(xiàng)目名,部門名,部門經(jīng)理)。
    ③進(jìn)而把R分解成3NF,并說(shuō)明理由。

      分析:3NF特點(diǎn):非主屬性對(duì)候選碼沒(méi)有部分函數(shù)依賴,也沒(méi)有傳遞依賴。很明顯這里有傳遞依賴:項(xiàng)目名 t→ 部門經(jīng)理,需要進(jìn)一步拆分。拆掉的方法是:A→ B,B→ C,可拆成(A,B)、(B,C)。

      分解:R1(職工名,項(xiàng)目名,工資)、R2(項(xiàng)目名,部門名),R3(部門名,部門經(jīng)理)。

      理由:上述三個(gè)表的碼分別為(職工名,項(xiàng)目名)、(項(xiàng)目名)、(部門名),每一個(gè)非主屬性對(duì)候選碼沒(méi)有部分函數(shù)依賴,也沒(méi)有傳遞函數(shù)依賴。


    例5.設(shè)有關(guān)系模式R(A,B,C,D,E,F),其函數(shù)依賴集F={E->D, C->B, CE->F, B->A}。

    ①指出R的主鍵并說(shuō)明原因。

      分析:求主鍵,先求哪個(gè)屬性集的閉包包含了所有屬性。
      解答:主鍵為CE,因?yàn)閷傩约疌E的閉包為{C,E,D,B,F,A},包含了所有屬性。
    ②R最高屬于第幾范式。

      分析:助教說(shuō)一般都是第一范式,當(dāng)然需要簡(jiǎn)單分析一下,方便第三題:)
      解答:最高屬于第一范式,因?yàn)榇嬖诜侵鲗傩詫?duì)候選碼的的部分函數(shù)依賴:C->B。
    ③分解R為3NF。

      分析:這個(gè)畫圖真的好理解,先分解為第二范式,然后再分解為第三范式。

      第二范式:(E,D)、(C,B,A)、(C,E,F)(消除非主屬性部分函數(shù)依賴)
      第三范式:(E,D)、(CB)、(BA)、(C,E,F)(消除非主屬性傳遞函數(shù)依賴)


    解題要點(diǎn)四:判斷一個(gè)模式分解是否具有無(wú)損連接性

    1.無(wú)損連接定理:關(guān)系模式R(U,F)的一個(gè)分解,ρ={R1<U1,F1>,R2<U2,F2>}具有無(wú)損連接的充分必要條件是:U1∩U2→U1-U2?€F+?或U1∩U2→U2-U1€F+

      簡(jiǎn)單來(lái)說(shuō),就是

      注:上述定理只能判斷分成兩個(gè)關(guān)系的判定,如果分成三個(gè)及以上的話,怎么辦呢(考試不會(huì)考這么難的,放心),書上197頁(yè)有表格法,深入學(xué)習(xí):http://blog.csdn.net/qq379666774/article/details/16969493。

    2.推論(充分條件):如果R1∩R2是R1或R2的超碼(U部分依賴于K,則稱K為超碼),則R上的分解(R1,R2)是無(wú)損分解。

      注:注意這里是充分條件,當(dāng)所有的約束都是函數(shù)依賴時(shí)它才是必要條件(例如多值依賴就是一種非函數(shù)依賴的約束),不過(guò)這已經(jīng)足夠了,常用這個(gè)。


    例6.R(A,B,C,D,E),R的函數(shù)依賴集F={A->BC,CB->E,B->D,E->A}. 判斷R1(A,B,C),R2(A,D,E)是否是無(wú)損連接。

    解答:R1∩R2=(A),A的閉包為{A,B,C,E,D},發(fā)現(xiàn)A是R1的超碼,甚至是主鍵,所以是無(wú)損連接。(注意是充分條件)


    解題要點(diǎn)五:判斷一個(gè)模式分解是否有函數(shù)依賴保持性:

    1.充分條件:如果F上的每一個(gè)函數(shù)依賴都在其分解后的某一個(gè)關(guān)系上成立,則這個(gè)分解是保持依賴的。

    2.如果上述判斷失敗,并不能斷言分解不是保持依賴的,因?yàn)橹皇浅浞謼l件,還要使用下面的通用方法來(lái)做進(jìn)一步判斷。

      算法:對(duì)F上的每一個(gè)α→β使用下面的過(guò)程:

    result:=α; while(result cahnges) dofor each 分解后的Rit=(result∩Ri)+ ∩Riresult=result∪t

      其中的(result∩Ri)+屬性閉包是在函數(shù)依賴集F下計(jì)算出來(lái)的。如果result中包含了β的所有屬性,則函數(shù)依賴α→β成立。分解是保持依賴的當(dāng)且僅當(dāng)上述過(guò)程中F的所有依賴都被保持。


    例7.設(shè)關(guān)系模式R<U, F>,其中U={A, B, C, D, E},F={A→BC,C→D,BC→E,E→A},則分解ρ={R1(ABCE),R2(CD)}滿足 ___A__。

    A.具有無(wú)損連接性、保持函數(shù)依賴
    B.不具有無(wú)損連接性、保持函數(shù)依賴
    C.具有無(wú)損連接性、不保持函數(shù)依賴
    D.不具有無(wú)損連接性、不保持函數(shù)依賴

    解答:先判斷無(wú)損連接。R1∩R2={C},計(jì)算C+={C,D},可見C是R2的超碼,該分解是一個(gè)無(wú)損分解。

    再判斷保持依賴。A→BC,BC→E, E→A都在R1上成立(也就是說(shuō)每一個(gè)函數(shù)依賴左右兩邊的屬性都在R1中),C→D在R2上成立,因此給分解是保持依賴的。(利用充分條件就可以判斷)。


    例8.給定關(guān)系模式R<U, F>,U={A, B, C, D, E},F={B→A,D→A,A→E,AC→B},其候選關(guān)鍵字為_(1)D_,則分解ρ={R1(ABCE),R2(CD)}滿足_(2)D_ 。

    (1)A.ABD ? ?B.ABE ? ?C.ACD ? ?D.CD
    (2) A.具有無(wú)損連接性、保持函數(shù)依賴
       ? B.不具有無(wú)損連接性、保持函數(shù)依賴
       ? C.具有無(wú)損連接性、不保持函數(shù)依賴
       ? D.不具有無(wú)損連接性、不保持函數(shù)依賴

    解答:第一問(wèn),計(jì)算各個(gè)選項(xiàng)的閉包。

    (ABD)+ = {A,B,D,E}
    (ABE)+ = {A,B,E}
    (ACD)+ = {A,B,C,D,E}
    (CD)+ = {A,B,C,D,E}

    選D。

    第二問(wèn),先判斷無(wú)損連接。R1∩R2={C},計(jì)算C+={C}。C既不是R1也不是R2的超碼,但這不能判斷該分解不具有無(wú)損分解性,因?yàn)檫@個(gè)判斷方法是充分條件。我們用定理來(lái)判斷:

    U1?∩ U2={C},其閉包為{C}

    U1-U2={ABE}

    U2-U1={D}

    所以U1∩U2→U1-U2?€F+ 和U1∩U2→U2-U1€F+都不成立,即不具有無(wú)損連接性。

    再判斷保持依賴:

    B→A,A→E,AC→B在R1上成立,D→A在R1和R2上都不成立,但是還需做進(jìn)一步判斷。

    我們對(duì)D→A應(yīng)用算法:

    result=D
    對(duì)R1,result∩R1=ф,t=ф,result=D
    再對(duì)R2,result∩R2=D,D+ =ADE ,t=D+ ∩R2=D,result=D
    一個(gè)循環(huán)后result未發(fā)生變化,因此最后result=D,并未包含A,所以D→A未被保持,所以該分解不是保持依賴的。

    選D。

    ?

    作者:?AlvinZH

    出處:?http://www.cnblogs.com/AlvinZH/

    本文版權(quán)歸作者AlvinZH和博客園所有,歡迎轉(zhuǎn)載和商用,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

    轉(zhuǎn)載于:https://www.cnblogs.com/AlvinZH/p/6856432.html

    總結(jié)

    以上是生活随笔為你收集整理的数据库复习之规范化理论应用(第八次上机内容)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。