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

2022-05-05 14:06:08 字數 1542 閱讀 1036

資料庫正規化

正規化的級別

設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。

目前關聯式資料庫有六種正規化:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴斯-科德正規化(bcnf)、第四正規化(4nf)和第五正規化(5nf,又稱完美正規化)。

正規化越高,冗餘最低,一般到三正規化,再往上,表越多,可能導致查詢效率下降。所以有時為了提高執行效率,可以讓資料冗餘(反三正規化,一般某個資料經常被訪問時,比如資料表裡存放了語文數學英語成績,但是如果在某個時間經常要得到它的總分,每次都要進行計算會降低效能,可以加上總分這個冗餘字段)。

後面的正規化是在滿足前面正規化的基礎上,比如滿足第二正規化的一定滿足第一正規化。

第一正規化(1nf):確保每一列的原子性

如果每一列都是不可再分的最小資料單元,則滿足第一正規化。

id位址

1中國廣東

2中國雲南

id國家省份1

中國廣東2中國

雲南但是具體位址到底要不要拆分 還要看具體情形,比如看看將來會不會按國家或者省市進行分類彙總或者排序,如果需要,最好就拆,如果不需要而僅僅起字串的作用,可以不拆,操作起來更方便。

第二正規化:非鍵字段必須依賴於鍵欄位

如果乙個關係滿足1nf,並且除了主鍵以外的其它列,都依賴與該主鍵,則滿足二正規化(2nf),第二正規化要求每個表只描述一件事。

例如:字段

例子訂單編號

001產品編號

a011

訂購日期

2017-4-8

**¥30

而實際上,產品編號與訂單編號並沒有明確的關係,訂購日期與訂單編號有關係,因為一旦訂單編號確定下來了,訂購日期也確定了,**與訂單編號也沒有直接關係,而與產品有關,所以上面的表實際上可以拆分:

訂單表:

訂單編號

001日期

2017-4-8

產品表:

產品編號

a011

**¥30

第三正規化:在1nf基礎上,除了主鍵以外的其它列都不傳遞依賴於主鍵列,或者說: 任何非主屬性不依賴於其它非主屬性

(在2nf基礎上消除傳遞依賴)

例如:字段

例子訂單編號

001訂購日期

2017-4-8

顧客編號

a01顧客姓名

howard

上面的滿足第一和第二正規化,但是不滿足第三正規化,原因如下:

通過顧客編號可以確定顧客姓名,通過顧客姓名可以確定顧客編號,即在這個訂單表裡,這兩個字段存在傳遞依賴,只需要乙個就夠了。

又如:主鍵

學號姓名成績1

111howard902

222tom

90上面的表,學號和姓名存在傳遞依賴,因為(學號,姓名)->成績,學號->成績,姓名->成績。所以學號和姓名有乙個冗餘了,只需要保留乙個。

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

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

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

資料庫有三大正規化。正規化的簡介 正規化的英文名稱是normal form,它是英國人e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的。正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次...

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

正規化 英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是 1nf,2nf,3nf,b...