豆利

摘要:數據庫的設計中,關系模式設計在整個數據庫的設計過程中起著重要的指導作用。一個數據庫模式設計的好壞主要取決于各個關系模式的質量。本文以教務管理數據庫的關系模式講述設計準則、函數依賴、模式分解以及規范化處理。
關鍵詞:關系模式;教務管理;函數依賴;規范化
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)19-0029-02
1問題提出
在數據庫系統中,經常會出現數據冗余度大,且數據操作出現異常等問題,很多情況下,是由于數據庫設計階段沒有選擇好的關系模式。
建立一個描述學校教務管理的數據庫,該數據庫涉及的對象有學生的學號(Sno),學生的姓名(Sname),出生日期(Birthday),所在系(Dept)、系主任姓名(Dname),課程號(Cno),課程名稱(Cname),學分(Credit)和成績(Grade)。該關系模式如下:Student=(Sno,Sname,Birthday,Dept,Dname,Cno,Cname,Credit,Grade),其中Sno和Cno作為該關系模式的主鍵。
但是,這個Student關系模式存在很大問題,具體問題分析如下:
(1)數據冗余大
例如在該關系模式中,假設有1000個學生,就會存儲1000次系主任姓名,每個系的系主任的姓名大量重復出現,系主任姓名重復的次數和本系學生人數保持一致,造成了存儲空間的浪費。
(2)插入異常
插入異常指的是本應該插入的數據而不能插入到數據庫中。不能插入的原因不是系統代碼設計的問題,而是數據庫設計的問題造成的。學號和課程號共同組成了該關系模式的主鍵,要錄入課程信息,必須知道學生的學號這個關鍵字。但對于新開設的課程,由于還沒有人選修,就沒有辦法錄入課程信息。也就是無法給出開課計劃,只能有人選修后才能錄入課程信息。再比如新轉入一個學生,由于還沒有選課,就沒法確定課程號,那么就無法插入到數據庫中。
(3)更新異常
由于數據出現了大量的冗余,系統需要更新數據,必然會花費很大的代價進行維護數據庫,否則會面臨數據不一致的情況。例如某個系需要更換系主任,那么就需要更新與這個系有關的所有行的信息。由于工作量非常大,若錄入不慎,就會出現數據不一致的問題。
(4)刪除異常
刪除異常指的是當需要刪除數據時,不能刪除該數據或出現刪除錯誤,后者刪除數據后,把相關聯不應該刪除的數據也刪除了。例如在該關系模式中,如果某個學生因特殊情況退學,那么就會把課程號、課程名稱、系號、系主任等相關信息刪除。
鑒于以上分析,說明該模式不是一個優質的關系模式。一個質量優的關系模式不會出現大量的數據冗余現象、不會出現操作異常、不會造成數據的不一致性等相關問題。
為什么發生這些問題,主要因為這個模式中存在函數依賴相關問題。
2函數依賴
函數依賴指的是數據庫中各屬性之間的聯系,例如在學生中,每個學號對應一個姓名,每個學號對應一個出生日期等。每門課可以對應多個教師等,這類聯系稱為函數依賴。類似于函數Y=F(x),給出一個x的值,對應一個Y的值。函數依賴的定義如下:
(1)平凡函數依賴與非平凡函數依賴
在關系模式R(U)中,對于U的子集X和Y,如果[X→Y],但Y不是X的子集,則稱[X→Y]是非平凡函數依賴。若Y是X的子集,則稱[X→Y]是平凡函數依賴。
(2)完全函數依賴與部分函數依賴
在關系模式R(U)中,如果[X→Y],并且對于X的任何一個真子集[X']都有[X'→Y],即[X'→Y]不成立,則稱Y完全函數依賴X,記[X→Y]。
例如在關系SC(Sno,Cno,Grade)中,(Sno,Cno)[→]Grade, 且Grade不單獨依賴Sno,也不單獨依賴Cno,而是由Sno和Cno共同決定。則Grade完全依賴Sno和Cno。又例如在關系Student(Sno,Sname,Dept,Dname,Cno,Cname,Grade)中,Sno和Cno是主鍵,則Cname是有Cno決定的,與Sno無關,則Cname部分依賴(Sno,Cno)。
(3)傳遞函數依賴
在關系模式R(U)中,如果[X→Y],[Y→Z],且[Y→X]不成立,則稱Z傳遞函數依賴于X。
在傳遞函數依賴中加入條件[Y→X]不成立,是因為如果[Y→X],則認為X與Y存在互相依賴的關系,這實際上是Z直接依賴于X,而不是傳遞依賴關系了。例如在關系Student(Sno,Sname,Dept,Dname,Cno,Cname,Grade)中,[Sno→Dept], [Dept→Dname],可以看出[Sno→Dname],Dname傳遞依賴于Sno。
3范式
關系模式的好與壞,用什么標準衡量呢?這個標準就是模式的范式。范式是一種標準用來衡量關系模式的優劣,范式級別越高,符合的標準越高。
(1)第一范式
如果關系R中每個屬性都是簡單的屬性,且為原子性,不可再分割,則屬于第一范式,記作1NF。
第一范式是對關系數據庫的最低要求,不滿足第一范式的要求,不屬于關系型數據庫,不滿足第一范式的關系稱為非規范化關系。
對于U=(Sno,Sname,Birthday,Dept,Dname,Cno,Cname,Credit,Grade),滿足第一范式的關系模式還會存在插入異常、更新異常、刪除異常、數據冗余等相關現象,需要滿足更高范式要求,以消除以上不利影響。