異常
不符合範式的關係,會產生很多異常,主要有以下四種異常:
冗餘數據:例如 學生-2 出現了兩次。
修改異常:修改了一個記錄中的信息,但是另一個記錄中相同的信息卻沒有被修改。
刪除異常:刪除一個信息,那麼也會丟失其它信息。例如刪除了 課程-1 需要刪除第一行和第三行,那麼 學 生-1 的信息就會丟失。
插入異常:例如想要插入一個學生的信息,如果這個學生還沒選課,那麼就無法插入。
範式
範式理論是爲了解決以上提到四種異常。 第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯-科德範式(BCNF)、第四範式(4NF)、第五範式(5NF)。高級別範式的依賴於低級別的範式,1NF 是最低級別的範式。
1NF:
屬性不可分。
2NF:
第二範式(Second Normal Form,2nd NF)是指每個表必須有一個(而且僅有一個)數據元素爲主關鍵字(Primary key),其他數據元素與主關鍵字一一對應。
通常稱這種關係爲函數依賴(Functional dependence)關係,即表中其他數據元素都依賴於主關鍵字,或稱該數據元素惟一地被主關鍵字所標識。其改進是,2NF在1NF的基礎之上,消除了非主屬性對於碼的部分函數依賴。
3NF:
第三範式(Third Normal Form,3rd NF)就是指表中的所有數據元素不但要能惟一地被主關鍵字所標識,而且它們之間還必須相互獨立,不存在其他的函數關係。也就是說,對於一個滿足 2NF 的數據結構來說,表中有可能存在某些數據元素依賴於其他非關鍵字數據元素的現象,必須消除。
通俗的說,第三範式(3NF)3NF在2NF的基礎之上,消除了非主屬性對於碼的傳遞函數依賴。也就是說, 如果存在非主屬性對於碼的傳遞函數依賴,則不符合3NF的要求。
BCNF:
在某些特殊情況下,即使關係模式符合 3NF 的要求,仍然存在着插入異常,修改異常與刪除異常的問題,仍然不是 ”好“ 的設計。
造成此問題的原因:存在着主屬性對於碼的部分函數依賴與傳遞函數依賴。
解決辦法就是要在 3NF 的基礎上消除主屬性對於碼的部分與傳遞函數依賴。
這樣,之前的插入異常,修改異常與刪除異常的問題就被解決了。