【軟考總結】——資料庫之正規化
設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,而這些不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。
在理解資料庫正規化之間,先理解幾個概念更能幫助我們掌握和區分資料庫的幾個正規化。
基礎概念
函式依賴:設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、補充