1nf是對屬性的原子性
,要求屬性具有原子性,不可再分解;
表:欄位1、 欄位2(欄位2.1、欄位2.2)、欄位3 ......如學生(學號,姓名,性別,出生年月日),如果認為最後一列還可以再分成(出生年,出生月,出生日),它就不是一正規化了,否則就是;
2nf是對記錄的惟一性
,要求記錄有惟一標識,即實體的惟一性,即不存在部分依賴;
表:學號、課程號、姓名、學分;這個表明顯說明了兩個事務:學生資訊, 課程資訊;由於非主鍵字段必須依賴主鍵,這裡學分依賴課程號,姓名依賴與學號,所以不符合二正規化。
可能會存在問題:
正確做法:
學生:student
(學號, 姓名);
課程:course
(課程號, 學分);
選課關係:studentcourse
(學號, 課程號, 成績)。
3nf是對字段的冗餘性
,要求任何字段不能由其他字段派生出來,它要求字段沒有冗餘,即不存在傳遞依賴;
表: 學號, 姓名, 年齡, 學院名稱, 學院**因為存在依賴傳遞: (學號) → (學生)→(所在學院) → (學院**) 。
可能會存在問題:
正確做法:
學生:(學號, 姓名, 年齡, 所在學院);
學院:(學院, **)。
一般說來,資料庫只需滿足第三正規化(3nf
)就行了。
沒有冗餘的資料庫設計可以做到。但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是:在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加字段,允許冗餘,達到以空間換時間的目的
。
〖例〗:有一張存放商品的基本表,「金額」這個欄位的存在,表明該錶的設計不滿足第三正規化,因為「金額」可以由「單價」乘以「數量」得到,說明「金額」是冗餘字段。但是,增加「金額」這個冗餘字段,可以提高查詢統計的速度,這就是以空間換時間的作法。
在rose 2002
中,規定列有兩種型別:資料列和計算列。「金額」這樣的列被稱為「計算列」,而「單價」和「數量」這樣的列被稱為「資料列」。
優點:
缺點:
優點:
缺點:
1、通俗地理解資料庫三個正規化
2、資料庫模型設計,第一正規化、第二正規化、第三正規化簡單例子理解
3、資料庫三大正規化最簡單的解釋
資料庫設計之三正規化(通俗解釋)
size medium b 資料庫設計之三正規化 通俗解釋 b b 一正規化就是屬性不可分割。屬性是什麼?就是表中的字段。b 不可分割的意思就按字面理解就是最小單位,不能再分成更小單位了。這個字段只能是乙個值,不能被拆分成多個字段,否則的話,它就是可分割的,就不符合一正規化。不過能不能分割並沒有絕對...
資料庫設計之三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫設計之三大正規化
背景 表設計後,很可能結構不合理,出現資料重複儲存,簡稱資料的冗餘,這對資料的增刪改查帶來很多後患,所以我們需要審核是否合理,如何審核呢?需要一些有關資料庫設計的理論指導規則,這些規則業界簡稱資料庫的正規化。兩個重要概念 1 部分函式依賴 1 存在資料冗餘 2 新增資料會有異常 3 更新資料會有異常...