數據庫系統概論課堂筆記-規範化理論1

一、問題的提出

1.關係模式設計的不合理導致數據庫性能較差

2.評價關係數據庫好壞的標準:關係模式符合的範式的級別

二、函數依賴

一個關係模型的簡短定義爲R(U,F),其中U爲關係模式的屬性集,F稱爲關係模式R的函數依賴。函數依賴即爲一個關係模式內部的屬性間的決定關係。

三、幾種範式

1.1NF

    1NF即爲數據庫滿足的最基本的範式,內容即爲數據模式的屬性不可再分,是原子項。

2.2NF

    在1NF的基礎上,無非主屬性對候選碼的部分函數依賴。

    舉例:-non 2NF

       設關係模式S(S#,Sname,Sage,Addr,C#,Grade),主碼可知爲(S#,C#),對主碼(S#,C#)來說,S#->(Sname,Sage),即關係模式S非第二範式。

       非2NF帶來的危害:

          1.插入異常:假設一批學生剛入學,還沒有進行選課,即C#還沒有分配,那麼學生的姓名、年齡等屬性均無法插入,因爲(S#,C#)爲主鍵,C#不可爲空。

          2.刪除異常:如果某一學生休假,就會退掉所有的課程,那麼相應的學生的基本信息也會被一併刪除。

          3.更新異常:數據冗餘問題以及數據冗餘帶來的更新不一致性,如果一名學生選了五十門課,那麼該表中就會冗餘50條學生的基本信息,如果學生的某個屬性如地址需要改變,那麼需要同時該50條信息,很難保證更改的過程中50條信息會一致地更改。

3.3NF

    在2NF的基礎上,無非主屬性對候選碼的傳遞函數依賴。

    舉例:-non 3NF

       設關係模式EMP(EMP#,SAL_LEVEL,SALARY),EMP#(編號)爲主鍵,EMP#決定SAL_LEVEL,SAL_LEVEL決定SALARY,可知關係模式EMP非第三範式。

       非第三範式帶來的危害:

          1.插入異常:例如公司剛招一批新員工,員工的工資等級還沒有確定,那麼就無法插入(或者說可以插入,但是工資等級和工資兩個屬性列均爲空值,不太符合現實語義)。

          2.刪除異常:例如公司內,位於三級工資水平的只有一個人,有一天該員工跳槽,刪除該條記錄,那麼會隨之把三級工資的對應關係刪除掉。

          3.更新異常:仍是數據冗餘和不一致性的問題。

4.BCNF範式

    在3NF的基礎上,無主屬性對候選碼的部分或傳遞函數依賴。

    這裏再強調一下BCNF的判定條件:

       1.函數依賴集F中每一個決定因素均包含碼

       2.沒有任何屬性對碼部分函數依賴與傳遞函數依賴

四、幾種範式的關係

發佈了31 篇原創文章 · 獲贊 7 · 訪問量 3487
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章