1. 程式人生 > >mysql範式簡單總結

mysql範式簡單總結

mysql範式簡單總結

1.第一範式 最基本的範式,數據表中每一列的屬性都是單一的,不可再分!
例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分為國家、省、市、區等。

2.第二範式 確保表中每列都和主鍵相關 ,一個關系滿足第一範式,除了主鍵以外其它列,都依賴該主鍵
例如:訂單表(訂單編號、產品編號、定購日期、價格、……),"訂單編號"為主鍵,"產品編號"和主鍵列沒有直接的關系,即"產品編號"列不依賴於主鍵列,應刪除該列。

3.第三範式 滿足第二範式關系,除了主鍵外其它列都不依賴主鍵列!

例如:訂單表(訂單編號,定購日期,顧客編號,顧客姓名,……),初看該表沒有問題,滿足第二範式,每列都和主鍵列"訂單編號"相關,再細看你會發現"顧客姓名"和"顧客編號"相關,"顧客編號"和"訂單編號"又相關,最後經過傳遞依賴,"顧客姓名"也和"訂單編號"相關。為了滿足第三範式,應去掉"顧客姓名"列,放入客戶表中。

****原則:****

原則:當出現字段與字段的組合重復,如上的A和C的組合重復,首先要考慮的就是把他們拆分為2個表,具體是C拆到表1, 還是A拆到表1,看情況而定

關鍵要理解定義這種範式標準的主要目的是為了減少數據冗余,數據冗余產生的本質就是在一個表中存在字段與字段之間的一對多,或者多對多關系。解決這個幾對幾的關系問題,就能輕易實現滿足第三範式的數據庫設計。

****總結***

歸結起來3句話:

1NF:字段不可分;
2NF:有主鍵,非主鍵字段依賴主鍵;
3NF:非主鍵字段不能相互依賴;

解釋:
1NF:原子性 字段不可再分,否則就不是關系數據庫;
2NF:唯一性 一個表只說明一個事物;
3NF:每列都與主鍵有直接關系,不存在傳遞依賴;

mysql範式簡單總結