資料庫設計三大正規化

2022-06-04 07:33:07 字數 1364 閱讀 4913

為了建立冗餘較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。

目前,主要有六種正規化:第一正規化、第二正規化、第三正規化、bc正規化、第四正規化和第五正規化。滿足最低要求的叫第一正規化,簡稱1nf。在第一正規化基礎上進一步滿足一些要求的為第二正規化,簡稱2nf。其餘依此類推。

定義:如果關係模式r的每個關係r的屬性都是不可分的資料項,那麼就稱r是第一正規化的模式。

第一正規化是最基本的正規化。如果資料庫表中的所有字段值都是不可分解的原子值,就說明該資料庫表滿足了第一正規化。

定義:如果關係模式r是1nf,且每個非主屬性完全函式依賴於候選鍵,那麼就稱r是第二正規化。

第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。

也就是說在乙個資料庫表中,乙個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。

不符合第二正規化的例子:  

表:學號, 姓名, 年齡, 課程名稱, 成績, 學分;  

存在問題:

資料冗餘,每條記錄都含有相同資訊; 

刪除異常:刪除所有學生成績,就把課程資訊全刪除了; 

插入異常:學生未選課,無法記錄進資料庫; 

更新異常:調整課程學分,所有行都調整。 

修正: 

學生:student(學號, 姓名, 年齡); 

課程:course(課程名稱, 學分); 

選課關係:selectcourse(學號, 課程名稱, 成績)。 

第三正規化(3nf)

定義:如果關係模式r是2nf,且關係模式r(u,f)中的所有非主屬性對任何候選關鍵字都不存在傳遞依賴,則稱關係r是屬於第三正規化。  

第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。

不符合第三正規化的例子: 

學號, 姓名, 年齡, 所在學院, 學院地點,學院聯絡**,關鍵字為單一關鍵字"學號"; 

存在依賴傳遞: (學號) → (所在學院) → (學院地點, 學院**) 

存在問題: 

資料冗餘:有重複值; 

更新異常:有重複的冗餘資訊,修改時需要同時修改多條記錄,否則會出現資料不一致的情況 

刪除異常 

修正: 

學生:(學號, 姓名, 年齡, 所在學院); 

學院:(學院, 地點, **)。 

1nf:確保每列保持原子性,字段不可分;   

2nf:確保表中每列都和主鍵相關,非主鍵字段完全依賴主鍵,消除部分依賴;  

3nf:確保每列都和主鍵列直接相關,而不是間接相關,消除傳遞依賴;  

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

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...