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