關係型資料的關係模式是乙個五元組:
r(u,d,dom,f)
r —— 關係名;
u —— 屬性名的集合,即屬性組;
d —— u中屬性所來自的域(相同型別的值的集合);
dom —— 屬性(u)到域(d)的對映;
f —— 屬性組u上的一組資料依賴。
由於d和dom對模式設計關係不大,本文把關係模式化簡成為乙個三元組,即:r(u, f)。
設r(u)是屬性集u上的關係模式,x、y是u的子集。
1.函式依賴:
若對r(u)上的任意乙個可能的關係r,r中不存在兩個元組在x子集上的屬性相等而y子集上的屬性不等,即y函式依賴於x,記作x→y。(人話就是:y=f(x),f是乙個單值函式)。
2.非平凡函式依賴:
如果x→y且y⊈x,則稱x→y是非平凡函式依賴。
平凡函式依賴
如果x→y且y⊆x,則稱x→y是平凡函式依賴。
3.完全函式依賴
如果x→y且對於x的任何乙個真子集x』,都有x』不能決定y,則稱y對x完全依賴,記作x□(→┴f )y。(例子:(x』, x』』) →y,對於x』或者x』』都不能決定y,即(x』, x』』)□(→┴f )y)
4.部分依賴
如果x→y且y對x不完全依賴,記作x□(→┴p )y。
5.傳遞依賴
如果x→y,y⊈x且y→z,則z對x傳遞依賴。
(一)第一正規化(1nf)
若關係模式r中的每乙個分量是不可再分的資料項,則關係模式r屬於第一正規化。(理解:對屬性的原子操作,要求屬性具有原子性,不可再分解)
對於一張二維表來說,最起碼的要求是滿足1nf,即:每個分量都是必須是乙個不可分的資料項。這是最基本的正規化,若只是滿足1nf,則該關係模式可能存在下面的問題:
例1:記關係模式r(u, f),u=;,f=;(二)第二正規化(2nf)若關係模式r∈1nf,且每乙個非主屬性完全依賴於碼(屬性的組合,能唯一標識實體的屬性),則關係模式r屬於第二正規化,即當1nf消除了非主屬性對碼的部分函式依賴,則稱2nf。(理解:2nf是對記錄的唯一性約束,要求記錄具有唯一標識,即實體的唯一性)資料冗餘: 屬性c, d, e等資訊在表中可能會重複出現,浪費大量儲存空間。(即函式依賴導致了大量的冗餘)
更新異常: 由於屬性c, d, e等資訊在表中可能會重複出現,因此如果它們需要修改需要重複修改對應的每一項,否則可能導致資料不一致。(即資料冗餘導致了更新異常)
插入異常: 如果屬性a, b, e中有新添的元素暫時沒有對應的c,d,那麼就無法將這個新添元素插入該錶。(即函式依賴導致了插入異常)
刪除異常:若需要刪除屬性b,e的元素,則該元素對應的元組所有元素也將被刪除。(即函式依賴導致了刪除異常)
由例1可以看出依賴往往導致了資料冗餘、更新異常、插入異常、刪除異常等問題,對屬性間依賴情況進行規範可以一定程度上減少少這些問題。屬性間的依賴程度就是區分不同正規化的依據。由例1可以看出:例1中的碼是屬性a,b,其中a→c,即屬性c是對碼的部分函式依賴,則2nf對例1的處理就是是消除非主屬性對碼的部分函式依賴。如下:(三)第三正規化(3nf)若關係模式r(u, f)中不存在這樣的碼x,屬性組y及非主屬性組z(z⊆y)使得x→y(y↛x),y→z成立,則關係模式r屬於第三正規化。(理解:對字段的冗餘性的約束(消除了非主屬性對碼的傳遞函式依賴),即任何字段不能由其它字段派生出來,它要求字段沒有冗餘)例2:記關係模式r1(u, f),u=;,f=;記關係模式r2(u, f),u=;,f=;
例2中通過把例1的表分割成了兩個表,下面還是從上面的幾方面分析:
資料冗餘:屬性c, d,等資訊在表中依舊可能會重複出現,浪費大量儲存空間,但對比例1的屬性e,例2中的屬性e則消除了冗餘。
更新異常:除了屬性e消除了更新異常其它的和例1中的分析一樣。
插入異常:解決了例1中的問題,但也會存在其它問題,如屬性c,d有了新添元素而沒有對應的屬性a。
刪除異常:解決了例1中的問題,能保留對應屬性a,c,d的元素,但也會存在其它問題,如需要刪除屬性a,c的乙個元素,則對應的d屬性的元素也要被刪除。
例2中看來2nf對例1確實能夠進行改進,但依然會有一些問題存在,這些問題主要是傳遞依賴造成的,例2中對例1最大的改進就是使得例2中每乙個表都的記錄都有了唯一的標識。
例3:記關係模式r1(u, f),u=;,f=;記關係模式r2(u, f),u=;,f=;記關係模式r3(u, f),u=;,f=;(四)其它正規化還存在其它的正規化,如bcnf、4nf。其它的正規化我還不是很清楚如何理解表達和應用,下面只是給出我查資料時看到的圖表。以後的內容以後有時間再深入研究和補充。例3中把例2的傳遞依賴部分又分成了兩個錶即r2、r3,現在再次簡單檢查一下發現上面的冗餘和異常解決了(在我目前的水平看來應該解決了)。
參考文獻:
王珊,薩師煊,資料庫系統概論[m],第4版,北京:高等教育出版社,2006,5.
胡聖明,軟體設計師教程[m],第3版修訂版,北京:清華大學出版社,2013,3.
關聯式資料庫規範化總結
最近本人在準備軟考,所以不得不拿起大一大二時的書本,再次複習一遍。在做軟考的試題中遇到了幾個常遇到的問題,在這裡就討論一下關係型資料庫規範化的問題。關係型資料庫設計的理論核心是資料間的函式依賴問題,衡量的標準是關係規範化的程度及分解的無損連線和保持函式的依賴性。函式依賴是最重要的資料依賴。函式依賴又...
關聯式資料庫規範化總結
最近本人在準備軟考,所以不得不拿起大一大二時的書本,再次複習一遍。在做軟考的試題中遇到了幾個常遇到的問題,在這裡就討論一下關係型 資料庫規範化的問題。關係型資料庫設計的理論核心是資料間的函式依賴問題,衡量的標準是關係規範化的程度及分解的無損連線和保持函式的依賴性。函式依賴是最重要的資料依賴。函式依賴...
關係型資料庫規範化的通俗理解
在大學的時候就已經對資料庫正規化的概念有所耳聞,但是一直是僅僅知道有這麼乙個概念。最近參加資料庫系統工程師的考試,結合自己的工程經驗,終於對資料庫規範化理論有了一知半解。本文試圖從工程化的角度,用大白話去解釋資料庫規範化的結論,如果有不嚴謹之處,敬請指正。我不會去詳細介紹每個正規化的嚴格定義,重複別...