下面說明每一范式的具體規范化方法,操作在邏輯數據模型ER圖中進行。
第一范式(1NF):實體的屬性必須是原子的。必須去除實體中的多值屬性,并將它們放入一個新的實體。例如上面例子中實體“機構”中的屬性“聯系電話”,每個機構可能登記有多個電話,這是個多值屬性,根據第一范式,必須為這個屬性創建一個新的實體。
第二范式(2NF):遵循第二范式的實體首先必須遵循第一范式,而且它的所有非鍵屬性要完全依賴于主鍵中的每個組成鍵(滿足1NF,消除部分依賴)。
第二范式只針對具有復合主鍵的實體。當實體的主鍵為復合主鍵時,非鍵屬性不能只依賴于主鍵的一個部分。
對于下面的例子,實體“機構資產質量”用來表示某機構在某個月的資產質量情況,它的主鍵是“機構編號”和“年月”的復合主鍵。但是,非鍵屬性“機構名稱”卻只依賴于機構編號,所以違反了第二范式,應該將這個屬性拆分出來,如圖4-10所示。
第三范式(3NF):遵循第三范式的實體首先必須遵循第二范式,而且它的非鍵屬性必須直接依賴于主鍵,而不能依賴于其他非鍵屬性(滿足2NF,消除傳遞依賴)。
檢查每個實體的非鍵屬性,看是否有非鍵屬性依賴于其他非鍵屬性。
下面的例子中,實體“機構”的非鍵屬性“負責人姓名”依賴于非鍵屬性“負責人編號”(雖然“負責人姓名”依賴于“機構編號”,但這是傳遞依賴而不是直接依賴),所以這個實體違反了第三范式,應該將這個屬性拆分,如圖4-11所示。