Mysql的三範式設計

在使用Mysql數據庫進行數據表設計時,需要明確什麼是反範式設計?常用的反範式設計有哪些?

一、Mysql數據表的三範式設計

後一個範式都是在滿足前一個範式的基礎上建立的.

1NF:無重複的列.表中的每一列都是不可分割的基本數據項.不滿足1NF的數據庫不是關係數據庫.
    例如:聯繫人表(姓名,電話),一個聯繫人有家庭電話和公司電話,則不符合1NF,應拆分爲(姓名,家庭電話,公司電話).
    原子性,數據不可再分
2NF:屬性完全依賴於主鍵.不能存在僅依賴於關鍵一部分的屬性. 數據沒有冗餘
    例如:選課關係(學號,課程名稱,成績,學分),組合關鍵字(學號,課程名稱)作爲主鍵.其不滿足2NF,
    因爲存在決定關係:課程名稱->學分即存在組合主鍵中的部分字段決定非主屬性的情況.會導致數據冗餘,更新/插入/刪除異常.
 3NF:屬性不傳遞依賴於其它非主屬性.非主鍵列必須直接依賴於主鍵,而不能傳遞依賴。
        即不能是:非主鍵A依賴於非主鍵B,非主鍵B依賴於主鍵.
        
    例如:學生表(學號,姓名,學院編號,學院名稱),學號是主鍵,姓名、學院編號、學院名稱都完全依賴於學號,
            滿足2NF,但不滿足3NF,因爲學院名稱直接依賴的是學院編號 ,它是通過傳遞才依賴於主鍵.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章