資料庫的三大正規化理解

2021-10-10 11:16:34 字數 1121 閱讀 6272

1. 第一正規化:要求所有字段值不可再分,保持每個欄位的原子性

2. 第二正規化 :表中的每個欄位都要和主鍵相關,而不能之和主鍵(聯合主鍵)的一部分相關,即不存在部分依賴

一張表中只儲存一種資料。比如要設計乙個學生課程資訊表【學號,課程號,姓名,學分】,該錶包含了兩類資訊:學生資訊與課程。由於非主鍵必須依賴主鍵,所以表的聯合主鍵為(學號,課程號),該錶中學分依賴課程號,姓名依賴學號,所以不符合第二正規化

若不滿足第二正規化,會出現以下問題:

資料冗餘:每條記錄都含有相同的資訊

刪除異常:如果要刪除所有學生的成績,就會把課程資訊全刪除了

更新異常:調整課程學分時,所有行都要修改

正確的做法:表一:【學號,姓名】 表二:【課程號,學分】 表三【學號,課程號,成績】

3. 第三正規化:確保每個欄位都和主鍵直接相關,要求任何字段不能由其他字段派生出來,保證字段沒有冗餘,即不存在傳遞依賴

第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。比如在設計乙個學院學生表【學號,姓名,年齡,學院名稱,學院**】,就存在傳遞依賴:學號->學生->學院->**。

存在的問題:

資料冗餘

更新異常

正確做法:表一【學號,姓名,年齡,學院】 表二【學院,**】

沒有冗餘的資料庫設計可以做到。但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是:在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加字段,允許冗餘達到以空間換時間的目的

〖例〗:有一張存放商品的基本表,「金額」這個欄位的存在,表明該錶的設計不滿足第三正規化,因為「金額」可以由「單價」乘以「數量」得到,說明「金額」是冗餘字段。但是,增加「金額」這個冗餘字段,可以提高查詢統計的速度,這就是以空間換時間的作法。

在rose2002中,規定列有兩種型別:資料列計算列。。「金額」這樣的列被稱為「計算列」,而「單價」和「數量」這樣的列被稱為「資料列」。

1.正規化化

2.反正規化

資料庫三大正規化理解

1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 不符合第一正規化的例子 關聯式資料庫中create不出這樣的表 表 欄位1,欄位2 欄位2.1,欄位2.2 欄位3 存在的問題 因為設計不出這樣的表,所以沒有問題 不符合第二正規化的例子 假定選課關係表為sele...

資料庫 三大設計正規化(概念 三大正規化的理解)

1 概念 設計正規化 正規化,資料庫設計正規化,資料庫的設計正規化 是符合某一種級別的關係模式的集合。構造資料庫必須遵循一定的規則。在關聯式資料庫中,這種規則就是正規化。關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf ...

資料庫三大正規化簡單理解

資料庫設計當中三正規化是經常遇到的,如果實際專案資料庫設計中能達到第三正規化基本也就滿足要求了,那麼如何快速有效的理解三個正規化,同時應用於實際專案中去呢?首先看看標準定義的三個正規化 第一正規化 1nf 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即...