為了提高資料庫應用系統的效能,這裡,我們引入一個傳統的概念——關聯式資料庫正常化理論。
今天,我們主要瞭解一下——範式。
什麼是範式呢?
當關係滿足不同層次的要求時稱為範式,滿足最低要求的是第一範式,即1NF。
在關聯式資料庫中,對關係模式的基本要求是滿足1NF,實際應用中通常要求滿足3NF。
關係模式的正常化過程是通過對關係模式的分解實現的,把低一級的關係模式分解為高一級的關係模式。
第一範式:
如果關係模式的每一個屬性只包含單一的值,則關係模式滿足1NF。
學號 |
姓名 |
課程名 |
成績 |
090504001 |
陳麗 |
電腦輔助教育 |
89 |
課程整合 |
90 |
090504002 |
李輝 |
電腦輔助教育 |
85 |
課程整合 |
92 |
090504003 |
閆娜 |
電腦輔助教育 |
93 |
課程整合 |
87 |
上表中的課程名和成績出現重複,不是單一值——每個學生的有多個成績;為了滿足1NF,我們可以得出下表:
學號 |
姓名 |
課程名 |
成績 |
090504001 |
陳麗 |
電腦輔助教育 |
89 |
090504001 |
陳麗 |
課程整合 |
90 |
090504002 |
李輝 |
電腦輔助教育 |
85 |
090504002 |
李輝 |
課程整合 |
92 |
090504003 |
閆娜 |
電腦輔助教育 |
93 |
090504003 |
閆娜 |
課程整合 |
87 |
第二範式:
如果關係模式滿足1NF,而且它的所有非主屬性完全依賴於主屬性,則關係模式滿足2NF。
要得到一列的資訊,需要通過所有主鍵,還是只需要使用部分的主鍵?
如果只需用到部分主鍵,則必須考慮拆分該表,使得所有的列確實匹配所有主鍵。
由1NF表可知:知道學生的學號便可知道學生的姓名,知道學生的學號和課程名便可知道成績,所以,姓名完全依賴於學號,成績完全依賴於學號和課程名。所以得到下面兩個滿足2NF的表:
學號 |
姓名 |
090504001 |
陳麗 |
090504002 |
李輝 |
090504003 |
閆娜 |
學號 |
課程名 |
成績 |
090504001 |
電腦輔助教育 |
89 |
090504001 |
課程整合 |
90 |
090504002 |
電腦輔助教育 |
85 |
090504002 |
課程整合 |
92 |
090504003 |
電腦輔助教育 |
93 |
090504003 |
課程整合 |
87 |
第三範式:
如果關係模式滿足2NF,而且它的所有非主屬性都不傳遞依賴於主屬性,則關係模式滿足3NF。
任何資料都不能衍生自表中其他資料。
每個班級都有一名固定的老師,就是高中的班主任,大學的輔導員,師生關係如下:
師生關係(學號,班級,教師姓名)
但是如果現在更換教師,就要打亂整體的學號與班級的關係,班級與教師的關係;應該在班級與學生不改變的前提下更換教師,使得資料的更改在最小範圍內,便得到以下的關係:
班級(學號,班級)
師生關係(班級,教師姓名)
現在如果更換教師,只需更改教師與班級之間的關係,而班級和學生的關係是不會發生改變的。
以上總結純屬個人拙見,若有不妥,懇請各位高手們指點~