真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

數(shù)據(jù)庫函數(shù)依賴-創(chuàng)新互聯(lián)

目錄
  • 數(shù)據(jù)庫函數(shù)依賴
    • 屬性集的閉包
      • 求解屬性集閉包
      • 判斷函數(shù)依賴是否成立
      • 求解最小依賴集
      • 求解正則覆蓋
    • 候選碼的應用
      • 候選碼的計算
      • 判斷范式
    • 參考

創(chuàng)新互聯(lián)建站,為您提供網(wǎng)站建設公司、成都網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設計,對服務成都宣傳片制作等多個行業(yè)擁有豐富的網(wǎng)站建設及推廣經(jīng)驗。創(chuàng)新互聯(lián)建站網(wǎng)站建設公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進步,是我們永遠的責任!數(shù)據(jù)庫函數(shù)依賴

在網(wǎng)上看了許多有關數(shù)據(jù)庫函數(shù)依賴考題的分析,大都信息不全或者講不完整,甚至是胡言亂語,看的我也是云里霧里。在淺淺的了解一番之后,決定總結一下有關這方面的做題技巧,為了加深印象也為了應付考試,于是就有了這篇文章。

閱讀須知:數(shù)據(jù)庫函數(shù)依賴的部分概念非常多,也十分難理解,如果單純看書那會發(fā)現(xiàn)根本看不懂(比如我,書上各式各樣的符號解釋讓人眼花繚亂)。所以本文大都以例子來說明,碰到相關概念再展開定義。

屬性集的閉包

令 α \alpha α 是一個屬性集,我們將函數(shù)依賴集 F F F 下被函數(shù)確定的所有屬性的集合稱為 F F F 下 α \alpha α 的閉包。

求解屬性集閉包

書上的算法就不看了,看了也看不懂,直接看題目。

  • 例一:計算屬性閉包 ( B C ) + (BC)^+ (BC)+

E x a m p l e : G i v e n R < U , F > , R = { A , B , C , D , E } , F = { B → C D , A D → E , B → A } Example:Given \R,R=\{A,B,C,D,E\},F=\{B\rightarrow CD,AD\rightarrow E,B\rightarrow A\} Example:GivenR,R={A,B,C,D,E},F={B→CD,AD→E,B→A}

解:
1. R e s u l t { B C } 2. R e s u l t { A B C D } 3. R e s u l t { A B C D E } 1.Result\{BC\} \\ 2.Result\{ABCD\}\\ 3.Result\{ABCDE\} 1.Result{BC}2.Result{ABCD}3.Result{ABCDE}
很簡單,只要根據(jù)函數(shù)依賴集一步步推到就可以得到,首先是閉包初始狀態(tài) B C BC BC,接著分別考慮每一個狀態(tài),根據(jù)依賴 B → C D , B → A B\rightarrow CD,B\rightarrow A B→CD,B→A ,可以將 A A A 和 D D D 加入到閉包中,最后由 A D → E AD\rightarrow E AD→E,將 E E E 也加入到閉包當中。當剛求出的屬性閉包與上一個閉包相同時或者已經(jīng)求出了所有的屬性 U U U 時,就停止計算。

  • 例二:計算屬性閉包 ( A ) + (A)^+ (A)+

E x a m p l e : G i v e n R < U , F > , R = { A , B , C , D , E , H } , F = { A → B , B → D H , A → H , C → E } Example:Given \R,R=\{A,B,C,D,E,H\},F=\{A\rightarrow B,B\rightarrow DH,A\rightarrow H,C\rightarrow E\} Example:GivenR,R={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E}

有了上面的經(jīng)驗,這個是不是很簡單了呢?

解:
1. R e s u l t { A } 2. R e s u l t { A B H } 3. R e s u l t { A B D H } 1.Result\{A\} \\2.Result\{ABH\}\\3.Result\{ABDH\} 1.Result{A}2.Result{ABH}3.Result{ABDH}

判斷函數(shù)依賴是否成立

直接說定理:如果 Y Y Y 屬于 X X X 的屬性集閉包,那么依賴 X → Y X \rightarrow Y X→Y 成立,反之也如此。即 X → Y ? Y ? ( X F ) + X \rightarrow Y \Leftrightarrow Y \subseteqq(X_F)^+ X→Y?Y?(XF?)+

可能還是過于抽象,直接看題。還是上面的例二,問函數(shù)依賴 A → D A \rightarrow D A→D 成立嗎?

解:

可以求得屬性閉包 ( A ) + = { A 、 B 、 D 、 H } (A)^+=\{A、B、D、H\} (A)+={A、B、D、H},因為 H ? ( A ) + H \subseteqq(A)^+ H?(A)+,所以此依賴成立。

求解最小依賴集

求解最小依賴集需要用到上述判斷依賴集。

還是直接上題目。

  • 例三:取下述依賴集的最小依賴集

E x a m p l e : G i v e n R < U , F > , R = { A , B , C , D , E , I } , F = { A → C , A B → C , C → D I , C D → I , E C → A B , E I → C } Example:Given \R,R=\{A,B,C,D,E,I\},F=\{A\rightarrow C,AB\rightarrow C,C\rightarrow DI,CD\rightarrow I,EC\rightarrow AB,EI\rightarrow C\} Example:GivenR,R={A,B,C,D,E,I},F={A→C,AB→C,C→DI,CD→I,EC→AB,EI→C}

解:

第一步右部化為單屬性,經(jīng)過分解后上述依賴集就變成如下依賴集:
F = { A → C , A B → C , C → D , C → I , C D → I , E C → A , E C → B , E I → C } F=\{A\rightarrow C,AB\rightarrow C,C\rightarrow D,C\rightarrow I,CD\rightarrow I,EC\rightarrow A,EC\rightarrow B,EI\rightarrow C\} F={A→C,AB→C,C→D,C→I,CD→I,EC→A,EC→B,EI→C}
第二步判斷依賴是否可以去除。把依賴集中的每一個依賴一個個嘗試,看把這個依賴去掉后,還能不能導出這個依賴關系,如果能,則依賴多余要去除;如果不能,則保留。如果看能不能導出依賴關系呢?就要用到我們上述判斷函數(shù)依賴是否成立了,其實就是判斷依賴式左邊的閉包包不包含右邊。

舉例,把 A → C A\rightarrow C A→C 去掉(已經(jīng)去掉了,此依賴就不可用了),就看 A A A 的閉包里還有沒有 C C C,再結合之前求解閉包的方法,可以知道 ( A ) + = { A } (A)^+=\{A\} (A)+={A},并沒有 C C C,所以此依賴不多余,不可去除。再判斷 A B → C AB\rightarrow C AB→C ,可得 ( A B ) + = { A 、 B 、 C 、 D 、 I } (AB)^+=\{A、B、C、D、I\} (AB)+={A、B、C、D、I},包含 C C C,也就說明沒有這個依賴,此依賴也可以得到,所以把它去掉。再繼續(xù)判斷下一個直到最后,需要注意的是,此時 A B → C AB\rightarrow C AB→C 已經(jīng)去掉,之后的判斷過程就不可再用此依賴了。

最后我們得到依賴集:
F = { A → C , C → D , C D → I , E C → A , E C → B , E I → C } F=\{A\rightarrow C,C\rightarrow D,CD\rightarrow I,EC\rightarrow A,EC\rightarrow B,EI\rightarrow C\} F={A→C,C→D,CD→I,EC→A,EC→B,EI→C}
第三步判斷左部冗余屬性。找到依賴式左部屬性大于等于2的,然后依次去除一個屬性,判斷剩余屬性的閉包能否推斷出依賴式右部,如果能,則說明去除的屬性多余,去掉;如果不能,則說明去除的屬性有用,保留。

由于 A → C , C → D A\rightarrow C,C\rightarrow D A→C,C→D 左部已經(jīng)是單屬性,就不考慮。直接看第三個 C D → I CD\rightarrow I CD→I,首先去掉屬性 C C C,計算 ( D ) + = { D } (D)^+=\{D\} (D)+={D},說明沒有 C C C 推不出來 I I I,即 C C C 不可去掉,同理刪除 D D D,計算 ( C ) + = { C 、 D 、 I } (C)^+=\{C、D、I\} (C)+={C、D、I},說明沒有 D D D 也能推出來 I I I,即 D D D 可去掉。再依次判斷接下來的幾個,最后得到最小依賴集:
F = { A → C , C → D , C → I , E C → A , E C → B , E I → C } F=\{A\rightarrow C,C\rightarrow D,C\rightarrow I,EC\rightarrow A,EC\rightarrow B,EI\rightarrow C\} F={A→C,C→D,C→I,EC→A,EC→B,EI→C}
整個求解過程較為繁瑣。需要注意的是第二步和第三步的細微區(qū)別。第二步判斷依賴是要先把依賴刪除,再利用其他的依賴關系看看能不能推出來此依賴,而第三步判斷冗余屬性時原本的依賴式是全部可用的。

再看一個例子吧。

  • 例四:取下述依賴集的最小依賴集

E x a m p l e : G i v e n R < U , F > , R = { A , B , C } , F = { A → B C , B → C , A → B , A B → C } Example:Given \R,R=\{A,B,C\},F=\{A\rightarrow BC,B\rightarrow C,A\rightarrow B,AB\rightarrow C\} Example:GivenR,R={A,B,C},F={A→BC,B→C,A→B,AB→C}

解:

第一步右部化為單屬性,經(jīng)過分解后上述依賴集就變成如下依賴集:
F = { A → B , A → C , B → C , A B → C } F=\{A\rightarrow B,A\rightarrow C,B\rightarrow C,AB\rightarrow C\} F={A→B,A→C,B→C,AB→C}
第二步判斷是否有多余依賴式??梢园l(fā)現(xiàn)式子 A → C , A B → C A\rightarrow C,AB\rightarrow C A→C,AB→C 都是多余的,所以刪除。

第三步由于沒有左部多屬性的式子,所以不用判斷,即此依賴集的最小依賴集:
F = { A → B , B → C } F=\{A\rightarrow B,B\rightarrow C\} F={A→B,B→C}

求解正則覆蓋

其實正則覆蓋只是在最小依賴集最后多加了一步合并。因為正則覆蓋有定義:

F F F 中不可以存在兩個依賴 α 1 → β 1 , α 2 → β 2 \alpha_1\rightarrow \beta_1,\alpha_2\rightarrow \beta_2 α1?→β1?,α2?→β2?,滿足 α 1 = α 2 \alpha_1=\alpha_2 α1?=α2?

  • 例五:求解下列依賴集的正則覆蓋

E x a m p l e : G i v e n R < U , F > , R = { A , B , C , D , E } , F = { A → B C , B C D → E , B → D , A → D , E → A } Example:Given \R,R=\{A,B,C,D,E\},F=\{A\rightarrow BC,BCD\rightarrow E,B\rightarrow D,A\rightarrow D,E\rightarrow A\} Example:GivenR,R={A,B,C,D,E},F={A→BC,BCD→E,B→D,A→D,E→A}

解:

前面還是按照求解最小依賴集的方式。

第一步右部化為單屬性,經(jīng)過分解后上述依賴集就變成如下依賴集:
F = { A → B , A → C , B C D → E , B → D , A → D , E → A } F=\{A\rightarrow B,A\rightarrow C,BCD\rightarrow E,B\rightarrow D,A\rightarrow D,E\rightarrow A\} F={A→B,A→C,BCD→E,B→D,A→D,E→A}
第二步判斷是否有多余依賴式??梢园l(fā)現(xiàn)式子 A → D A\rightarrow D A→D 是多余的,所以刪除。此時依賴集:
F = { A → B , A → C , B C D → E , B → D , E → A } F=\{A\rightarrow B,A\rightarrow C,BCD\rightarrow E,B\rightarrow D,E\rightarrow A\} F={A→B,A→C,BCD→E,B→D,E→A}

第三步判斷冗余屬性,我們只需要判斷 B C D → E BCD\rightarrow E BCD→E 即可,可以得到屬性 D D D 是多余的,所以去除。得到最小依賴集:
F = { A → B , A → C , B C → E , B → D , E → A } F=\{A\rightarrow B,A\rightarrow C,BC\rightarrow E,B\rightarrow D,E\rightarrow A\} F={A→B,A→C,BC→E,B→D,E→A}
根據(jù)正則覆蓋的定義,需要把 A → B , A → C A\rightarrow B,A\rightarrow C A→B,A→C 合并,最后的正則覆蓋:
F = { A → B C , B C → E , B → D , E → A } F=\{A\rightarrow BC,BC\rightarrow E,B\rightarrow D,E\rightarrow A\} F={A→BC,BC→E,B→D,E→A}

候選碼的應用 候選碼的計算

如何快速選出候選碼?我總結了一個方法:

  1. 先找入度為0的屬性,即從未出現(xiàn)在閉包依賴式右部的屬性(做了挺多題的,發(fā)現(xiàn)至少都能找到一個)
  2. 判斷它的閉包是否為 U U U(即閉包是否包含全屬性)
  3. 如果能,此屬性就是候選碼。如果不能,就繼續(xù)在此屬性上添加屬性,知道找到閉包為 U U U 為止(此時說的為止是指以當前找到的候選碼長度為標準,意思就是說我找到了一個長度為3的候選碼,我要接著判斷有沒有其他長度為3的也是候選碼,全部找完就可以,因為候選碼是最小的超碼)

還是有點抽象哈,舉例子。

  • 例六:求下述依賴集的候選碼

E x a m p l e : G i v e n R < U , F > , R = { A , B , C , D } , F = { A B → C , A C → B D } Example:Given \R,R=\{A,B,C,D\},F=\{AB\rightarrow C,AC\rightarrow BD\} Example:GivenR,R={A,B,C,D},F={AB→C,AC→BD}

解:

首先看從未再依賴式右部出現(xiàn)的屬性為 A A A,所以先看 ( A ) + = { A } ≠ U (A)^+=\{A\}\neq U (A)+={A}?=U,所以 A A A 不是候選碼,然后逐一添加屬性,判斷 ( A B ) + = { A B C D } = U (AB)^+=\{ABCD\}= U (AB)+={ABCD}=U,所以 A B AB AB 是候選碼,接著判斷 ( A C ) + = { A B C D } = U (AC)^+=\{ABCD\}= U (AC)+={ABCD}=U,所以 A C AC AC 也是候選碼,最后 ( A D ) + = { A D } ≠ U (AD)^+=\{AD\}\neq U (AD)+={AD}?=U,所以 A D AD AD 不是候選碼。

此時就不用添加屬性了,因為已經(jīng)是長度最小了。所以此依賴集的候選碼集合就是 { A B , A C } \{AB,AC\} {AB,AC}

判斷范式

1NF、2NF、3NF、BCNF的概念書上都有,不做過多解釋了,我自己也看不懂那個殺軟定義(

那么要如何判斷一個關系模式是幾范式呢?

背景

現(xiàn)在給出關系模式和函數(shù)依賴(functional dependency,簡稱FD)集,判斷關系模式的所屬范式

方法

  1. 求候選碼,確定主屬性和非主屬性(有關主屬性以及非主屬性,參考候選碼、超碼等碼的概念)。
  2. 判斷是否有非平凡FD(依賴式左部不含候選碼)
    • 沒有,則是BCNF
    • 有非平凡FD
      • 若這些FD的右部都是主屬性,則是3NF
      • 若不存在非主屬性對碼的部分依賴,即任何候選碼的任何真子集都不確定非主屬性,則是2NF
      • 否則是1NF(判斷屬性的域是否為原子性,一般都是的…)

概括

抽象,所以看例子

例七:判斷下述依賴集是什么范式
E x a m p l e : G i v e n R < U , F > , R = { B , C , D , E , G , H } , F = { B C D → E G H , E → D , G → C } Example:Given \R,R=\{B,C,D,E,G,H\},F=\{BCD\rightarrow EGH,E\rightarrow D,G\rightarrow C\} Example:GivenR,R={B,C,D,E,G,H},F={BCD→EGH,E→D,G→C}
解:

求候選碼 B C D 、 B C E 、 B D G 、 B E G BCD、BCE、BDG、BEG BCD、BCE、BDG、BEG,可得主屬性 B 、 C 、 D 、 E 、 G B、C、D、E、G B、C、D、E、G,非主屬性 H H H

可得非平凡FD: E → D , G → C E\rightarrow D,G\rightarrow C E→D,G→C,所以不是BCNF

又因為非平凡FD的右邊屬性都是主屬性,所以是3NF

例八:判斷下述依賴集是什么范式
E x a m p l e : G i v e n R < U , F > , R = { A , B , C , D } , F = { A B → C , C → D } Example:Given \R,R=\{A,B,C,D\},F=\{AB\rightarrow C,C\rightarrow D\} Example:GivenR,R={A,B,C,D},F={AB→C,C→D}
求候選碼 A B AB AB,可得主屬性 A 、 B A、B A、B,非主屬性 C 、 D C、D C、D

可得非平凡FD: C → D C\rightarrow D C→D,所以不是BCNF

又因為非平凡FD的右邊屬性不是主屬性,所以不是3NF

接下來判斷是否為2NF。根據(jù)定義,2NF不存在非主屬性對碼的部分依賴(關于部份依賴,詳見平凡依賴,非平凡依賴,完全依賴,部分依賴,傳遞依賴,直接依賴的區(qū)別 )。所以我們先構造完整依賴,判斷依賴函數(shù)是否存在冗余屬性,如果有就說明不滿足不存在部份依賴,不為2NF。

只能對此題。構造非主屬性對候選碼的完整依賴 A B → C , A B → D AB\rightarrow C,AB\rightarrow D AB→C,AB→D,判斷冗余屬性(最小依賴集是不是用過呢?),可得兩個依賴函數(shù)都沒有冗余屬性,即不存在非主屬性對候選碼的部份依賴,都是完全依賴,即符合2NF。

參考

求最小依賴集方法

數(shù)據(jù)庫規(guī)范化理論大題考點

如何判斷范式(1NF、2NF、3NF、BCNF)

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當前題目:數(shù)據(jù)庫函數(shù)依賴-創(chuàng)新互聯(lián)
本文地址:http://weahome.cn/article/dgecgo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部