數據庫三大範式以及mysql存儲引擎

數據庫三範式:
第一範式,(一個表,每一列都是原子性;)  
    所有的域都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項。
    
比如一張用戶表,用戶信息,包括了姓名和電話,能夠再進行拆分的,就不滿足第一範式。

第二範式,(也就是說在表中存在多對多的關係,就不滿足第二範式,必須再加一箇中間表來區分)
          (要求一張表,只描述一件事)  
    要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性
要求數據庫表中的每個實例或記錄必須可以被唯一地區分。

比如訂單表,既保存了訂單信息又保存商品信息,那麼就不滿足第二範式。

第三範式,是第二範式的子集,第一和第二範式主要區分能不能拆成兩張表,
而第三範式要求一個表中不能包含其他表已經包含的非主鍵信息。
如果能通過其他主鍵查到,那麼就不能繼續保存,否則就數據冗餘。還可能造成更新丟失異常。


BC範式:一張表中,不能出現兩組,兩個組合關鍵字索引。
比如一張商品表包含了供應商名稱,商品ID,供應商聯繫人,商品數量等字段。
那麼當供應商剛籤合同,還沒供應商品數量的時候,就查不到供應商的信息,就會出現插入異常。  而且供應商名稱,商品ID 能組合查到唯一,商品ID,供應商聯繫人也能組合查到唯一,這時候就應該分表。供應商表,和商品表。

 

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