資料庫三大正規化--大白話
第一正規化(1NF):強調的時列的原子性,即列不能再被分成其他列
如:[聯絡人](姓名,性別),姓名和性別時不能被拆分了,所以滿足INF,電話可以拆分為家庭電話,公司電話,不滿足1NF
[聯絡人](姓名,性別,電話)-->1NF:[聯絡人](姓名,性別,家庭電話,公司電話)
第二正規化(2NF):首先滿足1NF,另外包含兩部分內容:
①表必須有主鍵
②沒有包含在主鍵中的列必須完全依賴主鍵,而不能只依賴主鍵的一部分
如:[OrderDetail](OrderID, ProductID, UnitPrice, Discount, Quantity,ProductName)
主鍵(OrderID,ProductID),Discount,Quantity完全依賴與主鍵,而UnitPrice,ProductName只依賴與ProductID,所以[OrderDetail]不滿足2NF.
修改:[OrderDetail](OrderID, ProductID, Discount, Quantity)和[Product](ProductID,UnitPrice,ProductName)
第三正規化:首先滿足2NF,另外非主鍵列必須直接依賴與主鍵,不能存在傳遞依賴,即不能存在:非主鍵列A依賴與非主鍵列B,非主鍵列依賴於主鍵的情況
如:[Order](OrderID,OrderDate,CustomerID,CustomerName,CustomerAddress,CustomerCity)
主鍵是OrderID,其中OrderDate, CustomerID, CustomerNameCustomerAddress,CustomerCity都完全依賴於OrderID符合2NF,但是
CustomerNameCustomerAddress,CustomerCity都直接依賴於CustomerID,通過傳遞才依賴於主鍵,不符合3NF.
修改:[Order](OrderID,OrderDate,CustomerID)和 [CustomerID](CustomerName,CustomerAddress,CustomerCity)