三個范式的理解


 

三范式理解

第一范式: 屬性不可分割性

如: 學生表(姓名,年齡,性別,班級,宿舍號,家庭成員其中家庭成員為可分割的所以不符合第一范式

第二范式: 不存在組合關鍵字中的某些字段決定非關鍵字段的情況

如:

(學號課程名稱) → (姓名年齡成績學分這個數據庫表不滿足第二范式,因為存在如下決定關系: 
 (課程名稱) → (學分)
 (學號) → (姓名年齡)

部分屬性依賴於關鍵字中的部分字段。

(1) 數據冗余: 
 同一門課程由n個學生選修,"學分"就重復n-1次;同一個學生選修了m門課程,姓名和年齡就重復了m-1次。
 
 (2) 更新異常: 
 若調整了某門課程的學分,數據表中所有行的"學分"值都要更新,否則會出現同一門課程學分不同的情況。
 
 (3) 插入異常:
 假設要開設一門新的課程,暫時還沒有人選修。這樣,由於還沒有"學號"關鍵字,課程名稱和學分也無法記錄入數據庫。
 
 (4) 刪除異常:
 假設一批學生已經完成課程的選修,這些選修記錄就應該從數據庫表中刪除。但是,與此同時,課程名稱和學分信息也被刪除了。很顯然,這也會導致插入異常。 

第三范式:每個非關鍵字之間相互獨立,並依賴於關鍵字,不能存在傳遞依賴關系。

例:學生(學號,姓名,所在系,系名稱,系地址) 

關鍵字學號決定各個屬性。由於是單個關鍵字,沒有部分依賴的問題,肯定是2NF

但這關系肯定有大量的冗余,有關學生所在的幾個屬性:所在系,系名稱,系地址將重復存儲,插入,刪除和修改時也將產生類似以上例的情況。

原因:關系中存在傳遞依賴造成的。即:學號-> 所在系。 而所在系-> 學號卻不存在,所在系-> 系地址因此關鍵字:學號對所在系函數決定是通過傳遞依賴,學號-> 系地址,實現的。也就是說,學號不直接決定非主屬性系地址。

解決目地:每個關系模式中不能留有傳遞依賴。

解決方法:分為兩個關系 S(學號,姓名,所在系),D(所在系,系名稱,系地址) 

注意:關系S中不能沒有外關鍵字DNO。否則兩個關系之間失去聯系。 


免責聲明!

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



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