【學習數據庫】範式

把關係數據庫的規範化過程中爲不同程度的規範化要求設立的不同標準稱爲範式

關係數據庫規範中建立了一個範式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級比一級有更嚴格的要求。

第一範式

所有屬性均爲簡單屬性,每個屬性不可再分。
例如:

組長 組員
馬化騰 馬雲
馬克思
馬丁路德金

組員屬性還可以分,所以這不是第一範式。

將(組合項)組員拆開,就變爲第一範式了:

組長 組員
馬化騰 馬雲
馬化騰 馬克思
馬化騰 馬丁路德金

第二範式

在第一範式的基礎上,每個非主屬性都完全函數依賴關係的主碼。
例如:

學號 姓名 課程名 成績
001 小明 語文 85
001 小明 數學 90
001 小明 英語 100

該關係中主碼是(學號,課程名)
主屬性有學號,課程名(主屬性是主碼中的每個屬性)
非主屬性有姓名,成績(所有屬性中去除主屬性就是非主屬性)
姓名可以由學號決定,而不必用主碼(學號,課程名)決定,所以姓名不是完全依賴關係中的主碼,而是部分依賴於學號

將上面的關係拆成下面兩個關係,就變成了第二範式
學生關係

學號 姓名
001 小明

選課成績關係

學號 課程名 成績
001 語文 85
001 數學 90
001 英語 100

第三範式

在第二範式的基礎上,非主屬性都不傳遞依賴關係的主碼
例如:

學號 姓名 系號 系名
001 小明 5 計算機工程系

該關係的主碼是學號
主屬性有學號,非主屬性有姓名,系號,系名
學號可以決定姓名,系號,系名。系號可以決定系名。這樣系名就是傳遞依賴學號。

將上面的關係拆成下面兩個關係,就變成了第三範式
學生關係

學號 姓名 系號
001 小明 5

系部關係

系號 系名
5 計算機工程系

BC範式

在第一範式的基礎上,在所有的依賴中,決定因素都包含關係的主碼。
性質:所有屬性(主屬性,非主屬性)不存在對關係的主碼的部分依賴和傳遞依賴

比如:

老師 課程 學生
孔老師 計算機圖形學 小明
孔老師 計算機圖形學 小文
侯老師 數據庫原理及應用 小明
傅老師 計算機圖形學 小羊

分析一下:一門課可以被多個老師講,一門課可以被多個學生學,一個學生可以學習多門課。
主碼是(課程,學生)。也就是知道學生的姓名和它所學的課程就知道是誰教的。
由於存在根據老師可以決定其所授課程這一依賴,決定因素老師沒有包含主碼,所以不是BC範式。

將上面的關係拆成下面兩個關係,就變成了BC範式
授課關係

老師 課程
孔老師 計算機圖形學
侯老師 數據庫原理及應用
傅老師 計算機圖形學

選課關係

學生 課程
小明 計算機圖形學
小明 數據庫原理及應用
小文 計算機圖形學
小羊 計算機圖形學

這兩個關係都是雙目關係,雙目關係一定滿足BC範式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章