規范化理論是研究如何將一個不好的關系模式轉化為好的關系模式的理論,規范化理論是圍繞范式而建立的。規范化理論認為,一個關系數據庫中所有的關系,都應滿足一定的規范(約束條件)。規范化理論把關系應滿足的規范要求分為幾級,滿足最低要求的一級叫做第一范式(1NF),在第一范式的基礎上提出了第二范式(2NF),在第二范式的基礎上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF。范式的等級越高,應滿足的約束集條件也越嚴格。規范的每一級別都依賴于它的前一級別,例如若一個關系模式滿足2NF,則一定滿足1NF。下面我們只介紹1NF,2NF,3NF范式。
2.2. 1NF
1NF是關系模型的最低要求,它的規則是:
每一列必須是原子的,不能分成多個子列。
每一行和列的位置只能有一個值。
不能具有多值列。
例:如果要求一個學生一行,一個學生可選多門課,則下面的“學生”表就不滿足1NF:
student(s-no,s-name,class-no)
其中:s-no為學號,s-name為學生姓名,class-no為課程號。因為一個學生可選多門課,所以列class-no有多個值,所以空不符合1NF。
規范化就是把它分成如下兩個表:“學生”表和“選課”表,則這兩個表就都滿足1NF了。
student(s-no,s-name)
stu-class(s-no,class-no)
2.3. 2NF
對于滿足2NF的表,除滿足1NF外,非主碼的列必須依賴于所有的主碼,而不是組合主碼的一部分。如果滿足1NF的表的主碼只有一列,則它自動滿足2NF。
例:下面的“選課”表,不符合2NF。
stu-class(s-no,class-no,class-name)
其中:class-name為課程名稱。因為詞表的主碼是:(s-no,class-no),非主碼列class-name依賴于組合主碼的一部分class-no,所以它不符合2NF。
對該表規范化也是把它分解成兩個表:“選課”表和“課程”表,則它們就都滿足2NF了。
stu-class(s-no,class-no)
class(class-no,class-name)
2.4. 3NF
3NF的規則是除滿足2NF外,任一非主碼列不能依賴于其它非主碼列。
例:下面的“課程”表,不符合3NF。
class(class-no,class-name,teacher-no,teacher-name)
其中:teacher-no為任課教師號,teacher-name為任課教師姓名。因為非主碼列teacher-name依賴于另一非主碼列teacher-no,所以它不符合3NF! ∑浣鉀Q辦法也是把它分解成兩個表:“課程”表和“教師”表,則它們就都滿足3NF了。
class(class-no,class-name,teacher-no)
teacher(teacher-no,teacher-name)
文章來源于領測軟件測試網 http://www.kjueaiud.com/