關系型數據庫的1NF、2NF、3NF


一直是似懂非懂,今天似乎搞明白了,當然也希望有人幫我指正。

這有一文,說得不錯:https://zhidao.baidu.com/question/624751186930899444.html

首先我們明確符合3NF的,必然符合2NF;符合2NF,也符合1NF;三者是一個包含關系。所以我認為重點是如何界定符合2NF,但不符合3NF的情形。

先來看看這個關系

R(學號,姓名,性別,年齡,所在系的編號,所在系的名稱)

在這個關系中,主碼是(學號),各個非主屬性對主碼的依賴關系有:學號→姓名,學號→性別,學號→年齡,學號→所在系編號,

另外還存在依賴關系:所在系的編號→所在系的名稱,即所在系名稱對主碼(學號)存在傳遞依賴,所以屬於2NF。

2NF是關系中存在傳遞依賴,但不存在部分依賴的關系,3NF是關系中既不存在部分依賴,也不存在傳遞依賴的關系。

可以分割為兩個關系,以消除傳遞依賴,使其符合3NF:
R1(學號,姓名,性別,年齡,所在系的編號),R2(所在系的編號,所在系的名稱)

 

那么什么叫部分依賴關系呢?

看這個關系

R(課程號,學生編號,姓名,性別,考試成績,課程名)

在這個關系中,主碼是(課程號,學生編號),各大非主屬性對主碼的依賴關系有:(課程號,學生編號)→考試成績,同時存在部分依賴關系學生編號→姓名,學生編號→性別,課程號→課程名

所以以上關系不屬於2NF,只能算是1NF。部分依賴關系是指非主屬性只依賴於部分主碼。

 


免責聲明!

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



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