關係型資料庫三正規化 筆記

2021-09-25 09:17:02 字數 1227 閱讀 9284

正規化理解

關係型資料庫在設計過程中需要考慮儲存效能,所以建立規範的的資料庫是需要滿足一定的要求,用來規範資料資料儲存方式以減少冗餘,在關係型資料庫中這些規範就可以稱為正規化。但是有些時候一昧的追求正規化減少冗餘,反而會降低資料讀寫的效率,這個時候就要反正規化,利用空間來換時間。

目前關聯式資料庫有跡可循共有8種正規化,一般說來,資料庫只需滿足三正規化即可

三正規化第一正規化(1nf):字段不可分,強調列的原子性

第二正規化(2nf):首先是1nf,然後有主鍵,並且非主鍵字段完全依賴主鍵

第三正規化(3nf):首先是2nf,非主鍵字段不能相互依賴,即不能通過傳遞依賴

第一正規化(1nf)

即表的列的具有原子性,不可再分解,即列的資訊,不能分解,資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。如果實體中的某個屬性有多個值時,必須拆分為不同的屬性 。

第二正規化(2nf)

第二正規化(2nf)是在第一正規化(1nf)的基礎上建立起來的,要求資料庫表中的每個例項或行必須可以被惟一地區分,為實現區分通常需要我們設計乙個主鍵來實現,如有兩個主鍵,不能存在這樣的屬性,它只依賴於其中乙個主鍵,這就是不符合第二正規化,通俗理解是任意乙個欄位都只依賴表中的同乙個字段。

第三正規化(3nf)

第三正規化(3nf)必須先滿足第二正規化(2nf);第三正規化(3nf)要求表的資訊,如果能夠被推導出來,就不應該單獨的設計乙個欄位來存放(能盡量外來鍵join就用外來鍵join);很多時候,我們為了滿足第三正規化往往會把一張表分成多張表。如果某一屬性依賴於其他非主鍵屬性,而其他非主鍵屬性又依賴於主鍵,那麼這個屬性就是間接依賴於主鍵,稱為傳遞依賴於主屬性。

反三正規化

沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,提高讀效能,就必須降低正規化標準,適當保留冗餘資料。具體做法是: 在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加字段,減少了查詢時的關聯,提高查詢效率,因為在資料庫的操作中查詢的比例要遠遠大於dml的比例。但是反正規化化一定要適度,並且在原本已滿足三正規化的基礎上再做調整的。

關係型資料庫三正規化解釋

書上講了好多,歸結起來3句話 1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫...

關係型資料庫 三大正規化

關係型資料庫 三大正規化 一 關係性資料庫的 三大正規化是什麼?1 正規化是什麼?設計關係型資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些規範被稱作正規化。越高的正規化資料庫的冗餘度就越低。2 三大正規化 第一正規化 1nf 每個列都不可以再拆分。第二正規化 2nf 在第一正規化的基礎...

關係型資料庫三大正規化

基礎概念 關鍵字 主關鍵字 候選關鍵字,非關鍵字 如果某個欄位或多個欄位的值可以唯一地標識一條記錄,則該字段或字段組就稱為關鍵字。如果乙個關鍵字是用以標識每條記錄的唯一性,並作為該錶與其他表實現關聯之用,則稱其為主關鍵字 主鍵,primary key 或主碼。除主關鍵字以外的其他關鍵字稱為候選關鍵字...