04第六章關係數據理論

  • 6.1問題的提出
    • 數據庫設計步驟

    • 關係模式的形式化定義
      • 關係模式由五部分組成,是一個五元組:R(U, D, DOM, F)
      • 關係名R是符號化的元組語義
      • U爲一組屬性
      • D爲屬性組U中的屬性所來自的域
      • DOM爲屬性到域的映射
      • F爲屬性組U上的一組數據依賴
      • 討論R(U,F)
    • 數據依賴
      • 是一個關係內部屬性與屬性之間的一種約束關係。
      • 是現實世界屬性間相互聯繫的抽象,是數據內在的性質,是語義的體現
      • 函數依賴(FD)在數據依賴中,函數依賴是最基本、最重要的一種依賴之一
        • 例如y=f(x)中一個x對應一個y 表中一個學號對應一個學生姓名
      • 多值依賴(自學)
    • Student關係中函數依賴
      • 在Student關係中:Sname=f(Sno),Sdept=f(Sno) 即Sno函數決定Sname Sno函數決定Sdept
      • 記作Sno→Sname,Sno→Sdept
      • x決定y y依賴X
      • 關係模式Student的屬性集合爲:U={Sno,Sdept,Mname,Cno,Grade}
      • 現實世界的已知事實(語義) :
        • (1)一個繫有若干學生,但一個學生只屬於一個系;Sno→Sdept
        • (2)一個系只有一名(正職)負責人;Sdept→Sname
        • (3)一個學生可以選修多門課程,每門課程有若干學生選修;
        • (4)每個學生學習每一門課程有一個成績( Sno,Cno)→grade
    • Student關係模式存在的問題
      • (1)數據冗餘
      • (2)修改異常
      • (3)插入異常
      • (4)刪除異常
      • 由這個關係模式中的某些數據依賴存在某些不好的性質,用規範化理論改造關係模式來消除其中不合適的數據依賴,把這個單一的模式分成三個關係模式
  • 6.2規範化(重點)
    • 6.2.1  函數依賴
      • 對於R(A,B),如果A的每個值都是與B中惟一一個值對應,就稱B函數依賴於A(表示爲A→B)

      • 平凡的函數依賴與非平凡的函數依賴
        • 在關係模式R(U)中,對於U的子集X和Y,如果X→Y,但Y 不屬於X,則稱X→Y是非平凡的函數依賴 若X→Y,但Y 屬於 X,   則稱X→Y是平凡的函數依賴
        • 例:在關係SC(Sno, Cno, Grade)中 非平凡的函數依賴: (Sno, Cno) → Grade 平凡的函數依賴:     (Sno, Cno) → Sno (Sno, Cno) → Cno
        • 對於任一關係模式,平凡的函數依賴都是必然成立的,它不反映新的語義。若不特別聲明, 我們總是討論非平凡的函數依賴。
        • 非平凡函數
          • 完全函數依賴與部分函數依賴
            • 定義:在R(U)中,如果X→Y,並且對於X的任何一個真子集X,都有X/→Y(即缺一不可,必須全部出動)則稱Y對X完全函數依賴,記作X F→  Y
            • 若X→Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴,記作X  P →  Y
          • 傳遞函數依賴
            • 定義:在R(U)中,如果X→Y,(Y不屬於X) ,Y→X,Y→Z, 則稱Z對X傳遞函數依賴。
            • 記爲:X → Z 注: 如果Y→X, 即X←→Y,則Z直接依賴於X
    • 6.2.2  碼
      • 第一章 碼是能夠唯一確定某一個元組或某一條記錄
      • 第二章唯一確定元組的最小屬性組
      • 第六章 屬性/屬性集合能夠完全決定R所有的屬性
      • 定義:設K爲R<U,F>中的屬性或屬性組合。若K  → F U, 則K稱爲R的侯選碼若候選碼多於一個,則選定其中的一個做爲主碼(Primary Key)。
      • 設K爲R<U,F>中的屬性或屬性組合。若K —>  U, 則K稱爲R的侯選碼  
      • 超碼
        • 如果U部分函數依賴於K,即K →U,則稱K爲超碼。候選碼是最小的超碼,即K的任意一個真子集都不是候選碼。 候選碼+屬性=超碼
      • 主屬性與非主屬性
        • 包含在任何一個候選碼中的屬性 ,稱爲主屬性(Prime attribute)不包含在任何碼中的屬性稱爲非主屬性(Nonprime attribute)或非碼屬性(Non-key attribute)

      • 全碼
        • 整個屬性組是碼,稱爲全碼(All-key)

      • 外部碼
        • 定義6.5  關係模式 R中屬性或屬性組X 並非 R的碼,但 X 是另一個關係模式的碼,則稱 X 是R 的外部碼(Foreign key)也稱外碼
        • 主碼與外部碼一起提供了表示關係間聯繫的手段
    • 6.2.3  範式
      • 範式的作用
        • 衡量關係模式好壞的標準就是模式的範式,(Normal Forms,簡記爲NF)。範式的種類與數據依賴有着直接的聯繫,基於FD的範式有1NF,2NF,3NF,BCNF等多種。

        • 規範化

        • 第一範式
          • 1NF的定義
          • 如果一個關係模式R的所有屬性都是不可分的基本數據項,則R∈1NF。
          • 第一範式是對關係模式的最起碼的要求。不滿足第一範式的數據庫模式不能稱爲關係數據庫
          • 但是滿足第一範式的關係模式並不一定是一個好的關係模式
    • 6.2.4  2NF(重點)
    • 第二範式

    • 習題

      • 存在問題
        • (1)插入異常
          • 要插入的學生還未選課,即Cno爲空值。
        • (2)刪除異常
          • 某個學生只選修一門課程。
        • (3)修改複雜
          • 某學生從數學系轉到計算機系,修改內容較多
      • 模式分解算法

        • 關係模式:S-L-C(Sno, Sdept, Sloc, Cno, Grade)
          • 分解成:(1)SC(Sno,Cno,Grade)(2)S-L(Sno,Sdept,Sloc)SC ∈2NF,S-L∈2NF

          • 箭頭左邊不可分,右邊可以
            • AB➡️C AB➡️D AB爲碼 A→D 部分函數依賴 (有非主屬性部分函數依賴碼)
          • 1NF通過模式分解可以轉化成2NF,主要消除了非主屬性對碼的部分函數依賴
          • 單個屬性做碼首先一定是第二範式
    • 6.2.5  3NF(重點)
      • 3NF 不傳遞依賴於任何的碼 存在非主屬性傳遞依賴與碼的不是3NF

      • 模式分解算法
      • 非主屬性傳遞依賴的優化

    • 6.2.6  BCNF(重點)
      • 消除主屬性問題 如果一個關係數據庫中的所有關係模式都屬於BCNF,那麼在函數依賴範疇內,它已實現了模式的徹底分解,達到了最高的規範化程度,消除了插入異常和刪除異常。

      • 所有的函數依賴左邊決定方是否含有候選碼,有則爲BCDF 非主屬性爲空

      • 3NF與BCNF的關係

    • *6.2.7  多值依賴
    • *6.2.8  4NF
    • 6.2.9  規範化小結
      • 基本思想:逐步消除數據依賴中不合適的部分
      • 實質:概念的單一化

  • 6.3數據依賴的公理系統(重難點)
  • 6.4模式分解
  • 6.5小結
    • 內容要求:1,瞭解什麼是一個不好的數據庫模式,關係模式的沉餘和異常問題
    • 2.掌握數據依賴的基本概念,範式的概念,從1NF到BCNF的定義
    • 3.靈活掌握各級範式中存在的問題和解決辦法---模式分解
  • 數據庫邏輯設計的工具──關係數據庫的規範化理論
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章