范式:關系數據庫中的關系是要滿足一定要求的,滿足不同程度要求的不同范式。滿足最低要求的叫第一范式,簡稱1NF ,在第一范式中滿足進一步要求的為第二范式,其余以此類推。通俗來說是滿足數據庫關系表中的一套規則。
范式理論研究:Codd提出1NF,2NF,3NF概念
2NF
例如:有關系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc為學生的住處,並且每個系的學生住在同一個地方。S-L-C的碼為(Sno,Cno)。則函數依賴:Grade對(Sno,Cno)是完全依賴函數。這就屬於2NF。
當然 (Sno,Cno)—>Sdept 只需要其中一個Sno或Cno就能推出Sdept。記做Sdept對(Sno,Cno)碼的部分函數依賴,那么這就不屬於2NF。
一個R關系模式不屬於2NF就會產生以下幾個問題:
(1).插入異常:假若要插入一個學生Sno=S7,Sdept=PHY,Sloc=BLD2,但該學生還沒有選課。即這個學生無Cno。這樣的元組就插不進S-L-C中。因而學生的固有信息無法插入
(2)刪除異常:當要刪除如一個學生要刪除某一個門課程,而課程屬性是主屬性,刪除了課程整個元組就必須一起刪除,使這個學生的信息也被刪除了,從而造成刪除異常。
3NF
沒有傳遞依賴,如:關系模式SJP(S,J,P)中,S是學生,J代表課程,P代表名次,T表示教師。每一個學生選修每門課程的成績有一定的名次,每門課程中每一名次只有一個學生。由此得到函數依賴
(S,J)—>P;(J,P)—>S T—>J 這就是3NF
總結: 1NF就是不能有表中表
2NF就是非主屬性全部依賴
3NF就是沒有傳遞函數