資料庫正規化設計和反正規化設計

2021-10-02 08:10:22 字數 726 閱讀 5546

1> 庫表設計遵從三大正規化。

a、資料庫設計的第一大正規化:資料庫表中的所有欄位都只具有單一屬性;單一屬性的列是由基本資料型別所構成的;設計出來的表都是簡單的二維表。(乙個列存放的資訊只是乙個屬性的資訊,不能乙個字段存放多個屬性的組合資訊。即資料庫表中的所有字段值都是不可分解的原子值)。

b、資料庫設計的第二大正規化:確保表中的每列都完全依賴主鍵。也就是說在乙個資料庫表中,乙個字段必須完全依賴於這個主鍵,不可以只部分依賴主鍵。

但不可以存放其它表的其它字段。其它欄位與該錶主鍵沒有直接關係。

如果完全遵從資料庫的三大正規化設計,那麼資料庫表關係比較清晰,資料種類區分比較明顯。對於開發人員來說是十分有利工作的。但是,如果業務複雜的話,對資料庫效能是乙個極大的挑戰。如乙個複雜的join sql。如果資料量大。資料資料查詢的時候,資料量級別倍增。導致查詢緩慢等影響軟體的效能。所以設計資料庫表的時候要適當的採用反正規化設計。否則,以後再怎麼優化sql也不一定能提公升sql效能。

2>反正規化設計。

不遵從正規化設計規則就是反正規化設計。在反正規化的設計模式,我們可以允許適當的資料的冗餘,用這個冗餘去取運算元據時間的縮短。本質上就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯。如商品表和分類表。遵從正規化設計,則商品資訊乙個表,分類資訊乙個表,兩個表的乙個中間關聯表。我們要查詢乙個商品的分類時,避免不了多表聯查的情況。如果適當採用反正規化設計,可以在商品表中冗餘分類名稱時,那麼要顯示查詢這個商品的型別時,直接單錶查詢解決效能問題。 

資料庫設計的正規化和反正規化介紹

正規化化 總結 一正規化就是屬性不可分割,二正規化就是要有主鍵,其他欄位都依賴於主鍵,三正規化就是要消除傳遞依賴,消除冗餘,就是各種資訊只在乙個地方儲存,不出現在多張表中 反正規化化 不滿足正規化的模型,就是反正規化模型,反正規化跟正規化所要求的正好相反,在反正規化的設計模式,並不是完全不遵守正規化...

資料庫設計 三大正規化和反正規化

總共有六大正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf 第四正規化 4nf 和第五正規化 5nf,又稱完美正規化 只記前三正規化 三大正規化 第一正規化 資料表中欄位滿足原子性,字段不可再分 如學生資訊字段 儲存 張三,手機號 這個可以再分姓名,手機...

mysql資料庫設計正規化與反設計正規化操作思考

資料庫結構優化的目的 減少資料冗餘,盡量避免資料維護中出現更新 插入和刪除異常,節約資料儲存空間。資料庫設計正規化 第一正規化 1 資料表中的所有欄位都只具有單一屬性 2 單一屬性的列是由基本的資料型別所構成的 3 設計出來的表都應該是簡單的二維表 第二正規化 1 要求乙個表中具有乙個業務主鍵,也就...