sql 范式:1NF、2NF、3NF、BCNF(函數依賴)


第一范式(1NF)

每個屬性都是不可分的基本數據項.(必須有主鍵,列不可分)

eg:非第一范式的表:(列可再分)

學院名稱 高級職稱人數
教授 副教授
信電學院 3 34
管理學院 5 23
外語學院 3 12

滿足第一范式的表

學院名稱 教授 副教授
信電學院 3 34
管理學院 5 23
外語學院 3 12




 

第二范式(2NF)

 1NF基礎上消除部分函數依賴,  消除數據冗余和增、刪、改異常。

每個非主屬性都完全函數依賴於主鍵

2NF關系舉例:

不滿足2NF的關系:

(學號, 課程名稱) → (姓名, 年齡, 成績, 學分)

滿足2NF的關系:

(學號,課程名稱) → (成績)
(課程名稱) → (學分)
(學號) → (姓名, 年齡)
ps:

完全函數依賴:在關系模式R(u)中,X,Y是U的子集,Y函數依賴於X 並且 Y函數依賴於X的子集,則稱Y完全函數依賴於X。X  f >Y)

部分函數依賴:在關系模式R(u)中,X,Y是U的子集,Y函數依賴於X 並且 Y函數依賴於X的子集)

函數依賴:某個屬性集決定另一個屬性集時,例如學生學號屬性集Sno決定學生姓名屬性集Sname,稱Sname函數依賴於Sname )

平凡函數依賴:Y函數依賴於X,並且Y包含於X,例如(Sno)->(Sno)、(Sno、Sname)->(Sno))

非平凡函數依賴:Y函數依賴於X,並且Y不包含於X,例如(Sno,Sname)->(Ssex))


 

第三范式(3NF) 

 2NF基礎上消除傳遞函數依賴,屬性集直接依賴於主鍵。

非第三范式表(Sno->BounsLevel,BounsLevel->BounsMoney)

Sno Sname Sage BounsLevel BounsMoney
1 Carrie 21 A 2000
2 Cherry 20 B 1500

 

第三范式表:(消除傳遞函數依賴)

Sno Sname Sage Bno
1 Carrie 21 1
2 Cherry 20 2

 

Bno BounsLevel BounsMoney
1 A 2000
2 B 1500

 

傳遞函數依賴:Y函數依賴於X,Z函數依賴於Y,且X不包含Y,X非函數依賴於Y,則稱Z傳遞函數依賴於X。X  t  >Z)

 

 

 


 

鮑依斯-科得(巴斯)范式(BCNF)

 3NF基礎上消除主屬性依賴,即不存在關鍵字段決定關鍵字段的情況。

(非主屬性 :不包含在主碼中的屬性稱為非主屬性。)

反例:(SID->GID,GID->SID存在關鍵字決定關鍵字的情況)

 

SID(倉庫ID)

GoodsID(商品ID)

MID(管理員ID)

GoodsNum(商品數量)

001

20170510

1

200

符合BCNF

StoreHouseID(倉庫ID)

GoodsID(商品ID)

GoodsNum(商品數量)

001

20130104

200 

 

StoreHouseID(倉庫ID)

ManagerID(管理員ID)

001

1

 

 


免責聲明!

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



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