數據庫三範式:
第一範式,(一個表,每一列都是原子性;)
所有的域都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項。
比如一張用戶表,用戶信息,包括了姓名和電話,能夠再進行拆分的,就不滿足第一範式。
第二範式,(也就是說在表中存在多對多的關係,就不滿足第二範式,必須再加一箇中間表來區分)
(要求一張表,只描述一件事)
要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性
要求數據庫表中的每個實例或記錄必須可以被唯一地區分。
比如訂單表,既保存了訂單信息又保存商品信息,那麼就不滿足第二範式。
第三範式,是第二範式的子集,第一和第二範式主要區分能不能拆成兩張表,
而第三範式要求一個表中不能包含其他表已經包含的非主鍵信息。
如果能通過其他主鍵查到,那麼就不能繼續保存,否則就數據冗餘。還可能造成更新丟失異常。
BC範式:一張表中,不能出現兩組,兩個組合關鍵字索引。
比如一張商品表包含了供應商名稱,商品ID,供應商聯繫人,商品數量等字段。
那麼當供應商剛籤合同,還沒供應商品數量的時候,就查不到供應商的信息,就會出現插入異常。 而且供應商名稱,商品ID 能組合查到唯一,商品ID,供應商聯繫人也能組合查到唯一,這時候就應該分表。供應商表,和商品表。