範式:
目前存在六種範式,其之間的關係爲:
5NF4NFBCNF3NF2NF1NF
如圖所示關係:
第一範式(1NF):
若一個關係模式R的所有屬性都是不可分的基本數據項,則R1NF。
在任何一個關係數據庫系統中,第一範式是對關係模式最基本的要求。不滿足第一範式的數據庫模式不能稱爲關係數據庫。
但是滿足第一範式的關係模式並不一定是一個好的關係模式。例如,關係模式
SLC(Sno,Sdept,Sloc,Cno,Grade)
其中函數依賴包括:
(Sno,Cno)->Grade
Sno->Sdept
(Sno,Cno)->Sdept
Sno->Sloc
(Sno,Cno)->Sloc
Sdept->Sloc
在其中Sdept和Sloc 部分依賴於(Sno,Cno)。
SLC關係存在以下4個問題:
1、插入異常:假若需要插入一個Sno=2,Sdept=002,Sloc=m,但該學生並未選課,但Cno爲主碼,所以不能插入
2、刪除異常:假如某個學生只選修了一門課,如95002只選擇了3號課程,若他3號課程不選了,則刪除後3號課程就不存在了。
3、數據冗餘度高:如果一個學生選修了10門課程,則Sdept和Sloc需要存10次。
4、修改複雜:某個學生從數學系轉到化學系不僅需要修改Sdept 還需要修改Sdept.
第二範式(2NF)
若關係模式R1NF,並且每一個非主屬性都完全函數依賴於R的碼,則R2NF
關係模式SLC出現上述問題是因爲Sdept,Sloc,對碼的部分函數依賴。爲了消除這個依賴,可採用投影分解法。
可分解爲:
SC(Sno,Cno,Grade)
SL(Sno,Sdept,Sloc)
這樣非主屬性就完全依賴於碼了。
可是依然存在問題:
1、插入異常:如果某個系因種種原因(例如剛剛成立),目前暫且沒有在校學生,就無法把這個系的信息存入數據庫
2、刪除異常:如果某個系的學生全部畢業了,在刪除該系學生信息的同時,把這個系的信息也丟掉了
3、數據冗餘度大:每個系的住處相同,若該繫有多名學生則住處重複出現多次
4、修改複雜:若系的住處信息發生變化,則需要修改多名學生的住處信息。
第三範式(3NF)
如果關係模式R<U,F>中不存在候選碼X,屬性組Y以及非主屬性Z(ZY),使得X->Y,Y->Z和Y-\>X成立,則R3NF
關係模式SL中Sloc傳遞依賴於Sno.爲了消除該傳遞函數依賴,課採用投影分解法。
SL分解爲:
SD(Sno,Sdept)
DL(Sdept,Sloc)
但滿足了三範式的關係模式仍有一定的問題:
例如,在關係模式(S,T,J)中,S表示學生,T表示教師,J表示課程。假設每一教師只教一門課。每門課由若干教師教,某一學生選定某門課,就確定了一個固定的教師。於是有了如下的函數依賴
(S,J)->T
(S,T)->J
T->J
存在的問題:
1、插入異常:如果某個學生剛剛入校,尚未選課,但受主屬性不能爲空的限制,有關信息無法存入數據庫中。
2、刪除異常:如果選修某門課的學生全部畢業了,則在刪除學生元組的同時,相應教師開設該門課程的信息同時丟掉。
3、數據冗餘大:雖然某個老師只教一門課,但選修了該門課的學生元組都要記錄該教師的信息。
4、修改複雜:某個教師開設的某門課程改名後,所有選修了該教師該門課程的學生元組都要進行相應修改。
BC範式(BCNF)
設關係模式R<U,F>,F>1NF,如果對於R的每個函數依賴X->Y,若YX,則X必含有候選碼,那麼RBCNF
關係模式STJ出現上述問題的原因在於主屬性J依賴於T,即主屬性J部分依賴於碼(S,T)使用投影法將其分解。
ST(S,T)
TJ(T,J)
由定義看出,BCNF具有以下性質:
1、所有非主屬性都完全函數依賴於每個候選碼。
2、所有主屬性都完全依賴依賴於每個不包含它的候選碼。
3、沒有任何屬性完全函數依賴於非碼的任何任何一組屬性。
第四範式(4NF)
關係模式R<U,F>1NF,如果對於R的每個非平凡多值依賴X->->Y(YX),X都含有候選碼,則R4NF
例如,設學校某一門的課程由多個教授講授,他們使用相同的一套參考書。可以用一個關係模式Teach(C,T,B)表示課程C,教師T,和參考書B之間的關係。
Teach具有唯一候選碼(C,T,B)即全碼,因而TeachBCNF,但Teach模式存在一些問題:
1、數據冗餘度大:每一門課程的參考書都是固定的,但在Teach關係中,有多少名任課教師就有多少本參考書被存儲,造成大量數據冗餘。
2、增加操作複雜:當某一課程增加一名任課教師時,該課程有多少本參考書,就必須要插入多少個元組。例如:物理課增加一名教室劉高,需要插入兩個元組:
(物理,劉高,微分方程) (物理,劉高,光學原理)
3、刪除操作複雜:某一門課要去除某一門書,該課程有多少名教師,就必須刪除多少個元組。
例如,數學課去掉《微分方程》書,需要刪除兩個元組:
(數學,鄧軍,微分方程)(數學,陳思,微分方程)
4、修改操作複雜:某一門課程修改一門參考書、該課程有多少名教師、就必須有多少個元組。
之所以產生上述問題,是因爲參考書的的取值和教師的取值是彼此獨立毫無關係的,它們都只取決於課程名。也就是說,該關係模式存在一種多值依賴。
使用投影分解法將其分解爲:
CT(C,T)
CB(C,B)