程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 數據庫-關系模式函數依賴

數據庫-關系模式函數依賴

編輯:DB2教程

數據庫-關系模式函數依賴


關系數據庫邏輯設計
針對具體問題,如何構造一個適合於它的數據模式
數據庫邏輯設計的工具──關系數據庫的規范化理論
關系模式由五部分組成,即它是一個五元組:

                    R(U, D, DOM, F)
R:      關系名
U:       組成該關系的屬性名集合
D:       屬性組U中屬性所來自的域
DOM: 屬性向域的映象集合
F:       屬性間數據的依賴關系集合

數據依賴

一個關系內部屬性與屬性之間的約束關系
現實世界屬性間相互聯系的抽象
數據內在的性質
語義的體現
2. 數據依賴的類型
函數依賴(Functional Dependency,簡記為FD)
多值依賴(Multivalued Dependency,簡記為MVD)
其他

關系模式R(U, D, DOM, F)
    簡化為一個三元組:
                    R(U, F)
當且僅當U上的一個關系r滿足F時,r稱為關系模式 R(U, F)的一個關系

數據依賴對關系模式的影響

[例1]建立一個描述學校教務的數據庫:
    學生的學號(Sno)、所在系(Sdept)
    系主任姓名(Mname)、課程名(Cname)
    成績(Grade)

單一的關系模式 :   Student <U、F>
U ={ Sno, Sdept, Mname, Cname, Grade }
   屬性組U上的一組函數依賴F:
    F ={ Sno → Sdept,  Sdept → Mname, 
                (Sno, Cname) → Grade }

關系模式Student(U, F)中存在的問題
1. 數據冗余太大
2. 更新異常(Update Anomalies)
3. 插入異常(Insertion Anomalies)
4. 刪除異常(Deletion Anomalies)
結論:
Student關系模式不是一個好的模式。
“好”的模式:
不會發生插入異常、刪除異常、更新異常,
數據冗余應盡可能少
原因:由存在於模式中的某些數據依賴引起的(這也是對關系
模式進行分解的根本理由)
解決方法:通過分解關系模式來消除其中不合適的數據依賴

分解關系模式

把這個單一模式分成3個關系模式:
     S(Sno,Sdept,Sno → Sdept);
     SC(Sno,Cno,Grade,(Sno,Cno) → Grade);
     DEPT(Sdept,Mname,Sdept→ Mname)

規范化

規范化理論正是用來改造關系模式,通過分解關系模式來消除其中不合適的數據依賴,以解決插入異常、刪除異常、更新異常和數據冗余問題。最終使各關系模式達到某種程度的分離,即“一事一地”的模式設計原則

函數依賴

函數依賴(Functional Dependency,FD)
平凡函數依賴與非平凡函數依賴
完全函數依賴與部分函數依賴
傳遞函數依賴

   設R(U)是一個屬性集U上的關系模式,X和Y是U的子集。
    若對於R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函數確定Y” 或  “Y函數依賴於X”,記作X→Y。  
設有關系模式R(U),X和Y是屬性集U的子集,函數依賴(functional dependency,簡記為FD)是形為X→Y的一個命題,若對於R(U)的任意一個可能的關系r ,對r中任意兩個元組t和s,都有t[X]=s[X]蘊涵
    t[Y]=s[Y],那麼稱FD X→Y在關系模式R(U)中成立。
所有關系實例均要滿足 語義范疇的概念

例如:姓名→年齡這個函數依賴只有在該部門沒有
同名人的條件下成立

平凡函數依賴與非平凡函數依賴

在關系模式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
若X→Y,則X稱為這個函數依賴的決定屬性組,也稱為決定因素(Determinant)。
若X→Y,Y→X,則記作X←→Y。
若Y不函數依賴於X,則記作X→Y。

完全函數依賴與部分函數依賴

在R(U)中,如果X→Y,並且對於X的任何一個真子集X’,都有X’     Y, 則稱Y對X完全函數依賴,記作
     X F  Y。
  若X→Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴,記作X   P   Y。

[例1] 中(Sno,Cno)→Grade是完全函數依賴,
             (Sno,Cno)→Sdept是部分函數依賴
              因為Sno →Sdept成立,且Sno是(Sno,Cno)的真子集

傳遞函數依賴

在R(U)中,如果X→Y,(Y ?X) ,Y→X Y→Z,Z ∈Y, 則稱Z對X傳遞函數依賴。
    記為:X → Z

 注: 如果Y→X, 即X←→Y,則Z直接依賴於X。

例: 在關系Std(Sno, Sdept, Mname)中,有:
      Sno → Sdept,Sdept → Mname
      Mname傳遞函數依賴於Sno

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved