數據庫系統概論(一)關系數據理論--函數依賴、碼和范式


函數依賴

平凡/非平凡函數依賴

  平凡函數依賴:對X→Y,Y⊆X

  非平凡的函數依賴:對X→Y,Y⊈X

  在后續討論中,均以非平凡函數依賴進行討論

完全/部分函數依賴

  在關系模式R(U)中,若X→Y,且x的任何一個真子集X'不存在X→Y,則稱Y完全函數依賴於X

  

傳遞/直接函數依賴

  X→Y,Y!→X,Y→Z,稱X→傳遞Z為傳遞依賴

  X→Y,Y←X,稱X←→Y為直接依賴

候選碼(Candidate Key)=碼

  在R(U,F)中,K為U的屬性或者屬性集合,若KU,則稱K為候選碼

  超鍵(Super Key)

    能夠唯一標識一條記錄的屬性或屬性集

    若U部分函數依賴於K,即KU,則K為超碼

    候選碼是最小的超碼

    超碼包含候選鍵

    超鍵不一定是碼,候選鍵和主鍵才是

  主碼(Primary Key)

    若R有多個候選碼,選一個作為主碼

  主屬性(Prime Attribute)與非主屬性(Nonprime Attribute)

    包含在任意一個候選鍵中的屬性都被稱為主屬性

    不包含在任意一個的候選鍵中的屬性被稱為非主屬性

  全碼(ALL-Key)

    整個屬性值U就是碼(候選鍵),則U被稱為全碼

  外碼(Foreign Key)  

    關系模式R(U,F)中屬性或屬性組X並非R的碼,但是是另外一個關系模式的碼,則X稱為外碼

規范化

  關系數據庫中的關系滿足某一定的要求,不同程度的要求稱為范式

  一個低一級范式的關系模式,通過模式分解(Schemm Decomposition)轉化為更高級的范式,被稱為規范化

  1NF

    一個關系模式R(U,F)所有屬性都是不可分割的基本數據項

    不滿足第一范式的數據庫模式不能稱為關系數據模式

  2NF

    在1NF的基礎上,去除非主屬性對碼(候選碼)的部分函數依賴,即每一個非主屬性都是完全依賴於主鍵的

  3NF

    在2NF的基礎上,消除非主屬性對碼(候選碼)的傳遞依賴

  BCNF

    在3NF中,依然有可能存在主屬性傳遞依賴或者部分依賴的情況,如

    關系模式STC(S,T,C)中,S表示學生,T表示教師,J表示課程。

    函數依賴:(S,C)→T,(S,T)→C, T→C 其中,(S,C)和(S,T)都是候選碼。

    可以看出STJ是屬於第三范式的,因為沒有哪一組依賴關系中,非主屬性傳遞或者部分依賴於碼(候選碼)(記住是非主屬性,T在候選碼中),但它不屬於BC范式,因為T是決定因素,T不包含碼(候選碼的任何一個真子集都不能叫候選碼)

    則BCNF具有兩個特征:

    1.所有非主屬性完全依賴於每一個碼 

    2.所有主屬性對不包含它的碼也是完全依賴

各范式存在的問題

1NF

(學號,課程號)→(學院,學院電話,成績,學分)

①部分函數依賴:課程→學分  這將導致
  數據冗余:一門課程被選了N次那么學分就重復出現了N-1次

  更新異常:如果一門課學分更改,則所有該課程的行都要修改
  插入異常:如果要新增一門課程和它的學分,但是因為不存在學號所以不能插入
  刪除異常:如果刪掉選修一門課程的所有學生的學號,那么該課程對應的學分關系也被刪除

②傳遞函數依賴:學號→學院→學院電話  (實際上學號已經決定了學院電話)
  數據冗余:有N個某學院的學生,那么該學院電話重復出現了N-1次
  更新異常:如果要修改學院電話,那么所以該學院的學生元組都要修改
  插入異常:如果要新增一個學院和它的電話,由於缺少學號無法插入
  刪除異常:如果刪除一個學院所有學號,那么學院對應的電話關系也將刪除

兩種函數依賴導致的問題內容上都是一樣的,只是引起的原因不盡相同

2NF

只有傳遞函數依賴的問題

3NF

消除了各類問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM