通俗地理解三個正規化,對於資料庫設計大有好處。在資料庫設計中,為了更好地應用三個正規化,就必須通俗地理解三個正規化(通俗地理解是夠用的理解,並不是最科學最準確的理解):
第一正規化:1nf是對屬性的原子性約束,要求屬性具有原子性,不可再分解;(只要是關係型資料庫都滿足1nf)
第二正規化:2nf是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
第三正規化:3nf是對字段冗餘性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗餘。 沒有冗餘的資料庫設計可以做到。
但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是: 在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加字段,允許冗餘。
舉例說明什麼事適度冗餘,或者說有理由的冗餘!
*上面這個就是不合適的冗餘,原因是:
在這裡,為了提高學生活動記錄的檢索效率,把單位名稱冗餘到學生活動記錄表裡。單位資訊有500條記錄,而學生活動記錄在一年內大概有200萬資料量。 如果學生活動記錄表不冗餘這個單位名稱字段,只包含三個int欄位和乙個timestamp欄位,只占用了16位元組,是乙個很小的表。而冗餘了乙個 varchar(32)的字段後則是原來的3倍,檢索起來相應也多了這麼多的i/o。而且記錄數相差懸殊,500 vs 2000000 ,導致更新乙個單位名稱還要更新4000條冗餘記錄。由此可見,這個冗餘根本就是適得其反。
資料庫設計三大正規化資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫表設計的三大正規化
關係表的規範化 規範化主要是決定關係表應該擁有哪些屬性,其目的是建立良好結構的關係表,去除關係表中的重複資料,去除關係表中的不一致的依賴性,避免在新增 刪除或者更新資料時造成錯誤或者資料不一致的異常情況。關係表的規範化首要工作是處理主鍵與屬性之間的 功能依賴 它是 正規化的基礎。第一正規化 1nf ...
資料庫表設計三大正規化原則
a 所有字段值都是不可分解的原子值 b 也就是說在乙個資料庫表中,乙個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中 c 資料表中的每一列資料都和主鍵直接相關,而不能間接相關 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化。如果資料庫表中的所有字段值都是不可分解的原子值...