1. 程式人生 > >【軟考總結】——資料庫之正規化

【軟考總結】——資料庫之正規化

    設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,而這些不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。

在理解資料庫正規化之間,先理解幾個概念更能幫助我們掌握和區分資料庫的幾個正規化。

基礎概念

   函式依賴:設R(U)是屬性集U上的關係模式,X,Y是U的子集。若對R(U)的任何一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱為X函式決定Y,也可以稱作Y函式依賴於X,記作X—>Y。

   一句話解釋:在Y上任何一個屬性值,在X上對應一個唯一的值。即稱作X—>Y。

   完全函式依賴:在R(U)中,如果X—>Y,並且對於X的任何一個真子集X’都有X’不能決定Y,則稱為Y對於X完成函式依賴,記為X—>Y。

   解釋:用X中全部的值才能決定Y。

   傳遞依賴:在R(U,F)中,如果X—>Y,Y⊈X,Y—>Z,則Z對X傳遞依賴。

   非鍵屬性:不是構成主鍵的屬性。

   候選碼:關係中的一個屬性或者一組屬性可以唯一的標識一個元組。

   非主屬性:不包含在各個候選鍵中。

正規化

       第一正規化(1NF):所有的屬性不可再分;

       第二正規化(2NF):非鍵屬性完全依賴於主鍵;

       第三正規化(3NF):非主性屬性沒有傳遞依賴;

       BCNF:任何一個函式依賴中決定因素都是候選碼;

例項分析

    先講解1NF

    關係中包含的屬性不能再分,例如R(姓名,性別,年齡,家庭情況)其中家庭情況又包含(父親,母親)對於關係R來說,就不滿足1NF,因為家庭情況這個屬性可以繼續分解,整理成符合1NF的關係R(姓名,性別,年齡,父親,母親)

    分析2NF和3NF

    關係FIRST:(Sno,Sname,Status,City,Pno,Qty)

    F={Sno—>Sname,Sno—>Status,Status—>City,(Sno,Pno)—>Qty}

先判斷是否符合2NF?

    2NF定義非鍵屬性完全依賴於主鍵

    主鍵有:Sno,Pno;

    非鍵屬性:Sname,Status,City,Qty

    假如符合2NF,則(Sno,Pno)—>Sname,(Sno,Pno)—>Status,(Sno,Pno)—>city,(Sno,Pno)—>Qty根據題意顯然前三個關係僅需要Sno就可以得到,不滿足2NF。

    轉換為符合2NF的關係

        FIRST1{Sno,Sname,Status,City};

        FIRST2{Sno,Pno,Qty}

判斷是否符合3NF?

    3NF定義非主屬性對主鍵不存在傳遞依賴

    非主屬性:Sname,Status,City

    看FIRST1中City是因為Sno—>Status,Status—>City,故City對Sno傳遞依賴,不符合三正規化。

    拆分成符合三正規化的關係

        F1(Sno,Sname,Status)

        F3(Status,City)

   則符合3NF的FIRST被拆分為

        F1(Sno,Sname,Status)

        F2(Sno,Pro,Qty)

        F3(Status,City)

   根據BCNF的定義來看,上述分解已經符合BCNF正規化了。

【總結】

    通過這次軟考複習,感覺自己終於弄懂這幾個正規化的關係,感覺自己萌萌噠!其實自己有反思一下為什麼之前不能理解,得過且過的心態害死人啊。其中多重複幾遍,對其中涉及到的基礎概念耐心理解一下,這幾個正規化也就那麼一回事!

    如有理解偏頗之處,請各位大神不惜賜教,不勝感激!

相關推薦

總結——資料庫正規化

    設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,而這些不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。 在理解資料庫正規化之間,先理解幾個概念更能幫助我們掌握和

總結不負韶光--I eat konwledge like air.

軟考於我 昨天看狗大兵的微博,才知道我們居然準備了三個月的軟考,這真是,太不可思議了。 早在大概半年前我就對軟考充滿了好奇,覺得它有點神祕,前輩說大概就是學過的自考科目的彙總,但是隻有自己經歷了才知道到底是怎麼回事兒。 一想到自己即將擁有一個“中級職稱”就驕傲的不行,雖然我不

總結付出必要回報

軟考結束了。壓在身上的一個重擔遠去了。 三個月,任務量巨大,戰線很長。但是我們準備的很充分,有條不紊的前進。 回想這三個月,小組學習是核心。大家從一本書學到了四本書,從一套試題學到了一摞試題,從短袖學到了棉襖,頭髮都變少了! 其實學習軟考的道路並不是一帆風順的,剛開始學習的時候那是第一遍

總結---軟體工程(一)

     這篇博文主要分享軟考中關於軟體工程部分的例題: 1、根據活動圖計算鬆弛時間 1、某軟體專案的活動圖如下圖所示,其中頂點表示專案里程碑,連線頂點的邊表示包含的活動,邊上的數字表示相應活動的持

總結感觸

軟考結束了,從8月25號開始準備,到11月10號結束,有些收穫,有些感觸 學習在平時 之前的我,養成了臨陣突擊的習慣,大學的期末考試、自考、平時任務的完成都是被逼到無路可退的時候,才去奮起,每次都讓自己很痛苦,我戲稱之為痛苦學習法。 這樣的學習並不是學習,只是讓我疲於應付,無論什

總結-動態規劃法--最長公共子序列

一、什麼是最長公共子序列?    公共子序列:字元序列的子序列是指從給定字元序列中隨意地(不一定連續)去掉若干個字元(可能一個也不去掉)後所形成的字元序列。令給定的字元序列X=“x0,x1,…,xm-

路上——用例圖include和extend

       記得去年剛學UML的時候,寫了一篇用例圖的部落格——《UML圖—用例圖》。        2011年5月的軟考下午題,考到了用例圖,突然感覺對用例圖中的include和extend概念

--知識點總結(一)

        軟考到現在準備工作也做的差不多了,在做選擇題的過程中,發現了一些自己的薄弱點,總是愛出錯的幾個點, 這裡稍微進行一下總結。        編譯程式和解釋程式        編譯程式

學習設計模式——策略模式

【背景】 設計模式是非常重要的一塊知識,每個設計模式都值得深入瞭解和學習。 【內容】 結構型設計模式總結: 橋接設計模式總結:     一、定義:策略模式定義了一系列的演算法,並將每一個

學習設計模式——單例模式

【背景】 設計模式是非常重要的一塊知識,每個設計模式都值得深入瞭解和學習。 【內容】 單例設計模式總結:     一、定義:保證一個類僅有一個例項,並提供一個訪問它的全域性觀點。     二、UML

學習設計模式——原型模式

【背景】 設計模式是非常重要的一塊知識,每個設計模式都值得深入瞭解和學習。 【內容】 原型設計模式總結:     一、定義:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

教程作業系統知識

這幾天的軟考複習,一直在和“真正”的計算機打交道,對計算機又有了一次整體結構上的認識。正是因為它那強大而又豐富的硬體資源,使得這一章要學習的軟體資源的重頭戲——作業系統知識,也很是龐大。 從第1章我

軟體過程模型總結

前言: 軟體過程模型,這個名詞聽起來可能有些陌生,但說軟體開發模型,大家可能都知道了,軟體過程模型也叫做軟體開發模型,它是軟體開發全過程,活動和任務的結構框架。軟體開發模型:常見的有瀑布模型、增量模

校驗碼詳細總結

這一知識點困擾我許久了,在光光的指導下,我們小組成功攻克海明碼!徹底解決這一問題。 正文 一、奇偶校驗碼 1.概念: 通過在編碼中增加一位校驗位來使編碼中的1的個數為奇數(奇校驗)或偶數(偶校驗),從而使碼距為2 2.實踐,前提條件:只有一位錯誤。 1)奇校驗:

總結

轟轟烈烈的軟考過去了,整整兩個月的時間,點點滴滴,感受很多。一、準備歷程: 第一階段 看視訊     這個軟考分為三個階段,第一個階段,看視訊階段。分為J2SE視訊和軟考視訊。看J2SE視訊,主要了

件project第五、六章總結

term 方法 工作量 article mar sso 就會 jsb .net 軟件project的前幾章各自是軟件計劃、需求分析、軟件設計。整體的都規劃好了以後,就該著手去實踐了。所謂的理論體系足夠強大了以後,實踐就顯得尤為輕松。我們設計軟

考前 設計模式總結

總:      設計模式分為 建立型,結構型和行為型 建立型:抽象了例項化的過程,系統關於這些物件知道的是由物件類所定義的介面。              一個類建立模式使用繼承改變被

下午題 解題思路總結

總:      下午題就是閱讀理解題,考察的是對題幹資訊的理解總結能力。 分: 試題一 考察資料流圖 1-3題    (寫實體名,資料儲存,補充缺失的資料流及其起點和終點。)可以一起做。 方法: 在加工的描述文字

中級軟體設計師考試總結

前言:   備戰近三個月的軟考結束了,整個過程中,知識,能力,學習方法等各個方面,都有收穫。 正文: 考試的情況: 地點:北京科技大學附屬中學 去:前一天晚上的火車,到站倒地鐵,走到旅館18點左右 住

下午題答題經驗總結

【資料流圖】 1、讀題的時候,在題目中把外部實體、儲存表甚至資料流都標記出來,最好用不同的標記。 2、補充資料流的時候,採用圖中詞語,圖中用D2表示,就寫D2 ,不用把它轉換成具體的內容。 3、補充