數據庫設計範式

轉自:https://blog.csdn.net/sinat_28729797/article/details/50634978

首先我們看看函數依賴定義:

設R(U)是一個屬性集U上的關係模式,X,Y是U的子集,若對R(U)上任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱爲“X函數確定Y“或者”Y函數依賴於X“,記爲X--->Y.X稱爲這個函數依賴的決定屬性集。簡單來說,如果一個表中某一個字段Y的值是由另一個字段或一組字段X來確定的,就稱爲函數Y依賴於X。

1、第1範式:1NF

數學定義:

如果一個關係模式R的所有屬性都是不可分的基本數據項,則R∈1NF。屬性不可拆。

2、第2範式:2NF

數據庫中通常加入id,使得所有屬性完全依賴於關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性。

通常在複合主鍵中,例如

有選課關係表 (學號, 姓名, 年齡, 課程號, 成績, 學分),關鍵字爲組合關鍵字(學號, 課程號),存在如下決定關係

(學號)------>(姓名,年齡)

 (課程號)-------->(學分)

 由於上面存在組合關鍵字中的部分字段決定非關鍵字的情況,因此不滿足2NF。這種現象有種官方說法叫做:局部函數依賴:指存在組合關鍵字中的某些字段決定非關鍵字段的情況。故需拆分

數學定義:若關係模式R∈1NF,並且每一個非主屬性都完全依賴於R的碼,則R∈2NF


3、第3範式:3NF

百度上有一句對第3NF非常經典的解釋:“簡而言之,第三範式就是屬性不依賴於其它非主屬性。”

官方加高大上解釋如下:“傳遞函數依賴:指如果存在X → Y,且Y → Z,則Z傳遞函數依賴於X。3NF指在2NF的基礎上,數據表中不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴。”

例如學生檔案表(學號,姓名,年齡,生源地編號,生源地,郵政編碼)

學號---->生源地編號

生源地編號----->生源地,郵政編碼

上面可知,存在非關鍵字段生源地,郵政編碼對關鍵字學號傳遞函數依賴,故不符合3NF

4、BCNF

不存在任何字段對任一候選關鍵字段的傳遞函數依賴

大家常用解釋如下:

寢室管理關係表 (寢室ID,室長ID,物品ID,數量),選主鍵的時候

(寢室ID,物品ID)---->(室長ID,數量)

也可以

(室長ID,物品ID)------>(寢室ID,數量)

也就是說(寢室ID,物品ID)中的寢室ID可被室長ID決定,反過來也成立。故此表該拆分。不符合BCNF

 

5、4NF

官方說法如下:多值依賴:表示屬性間的一種依賴關係,如有屬性X、Y、Z,對於X的每個值,Y有一個值集,Z有一個值集,並且Y的值集和Z的值集彼此獨立。

例如(商品,買商品的客戶,附贈品)

(商品)-->-->(買商品的客戶),

(商品)-->-->(附贈品)

都是1:N關係,且聯繫獨立,存在多值依賴關係。
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章