- 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)修改複雜
- 某學生從數學系轉到計算機系,修改內容較多
- (1)插入異常
- 模式分解算法
- 關係模式: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,主要消除了非主屬性對碼的部分函數依賴
- 單個屬性做碼首先一定是第二範式
- 關係模式:S-L-C(Sno, Sdept, Sloc, Cno, Grade)
- 存在問題
- 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.2.1 函數依賴
- 6.3數據依賴的公理系統(重難點)
- 6.4模式分解
- 6.5小結
- 內容要求:1,瞭解什麼是一個不好的數據庫模式,關係模式的沉餘和異常問題
- 2.掌握數據依賴的基本概念,範式的概念,從1NF到BCNF的定義
- 3.靈活掌握各級範式中存在的問題和解決辦法---模式分解
- 數據庫邏輯設計的工具──關係數據庫的規範化理論
04第六章關係數據理論
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.