資料庫正規化

2021-09-01 20:59:41 字數 1021 閱讀 5388

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

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

第一正規化(1nf):屬性不可分。

第一正規化是指資料庫的每一列都是不可分割的基本資料項,強調列的原子性,即實體中的某個屬性有多個值時,必須拆分為不同的屬性。比如資料表的**號碼列,這個列就不明確,既可以填手機號碼也可以填座機號碼,或者兩者都填。這不符合第一正規化,這個列就是可以再分的,可以分成「手機號碼」和「座機號碼」兩列。第一正規化(1nf)是對關係模式的設計基本要求,一般設計中都必須滿足第一正規化(1nf)。

第二正規化(2nf):符合1nf,並且非主屬性完全依賴於主鍵。

第二正規化建立在第一正規化的基礎上,即滿足第二正規化一定滿足第一正規化,第二正規化要求資料表每乙個例項或者行必須被唯一標識。除滿足第一正規化外還有兩個條件,一是表必須有乙個主鍵;二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。

第三正規化(3nf):符合2nf,並且消除傳遞依賴。

若某一正規化是第二正規化,且每乙個非主屬性都不傳遞依賴於該正規化的候選鍵,則稱為第三正規化,即不能存在:非主鍵列 a 依賴於非主鍵列 b,非主鍵列 b 依賴於主鍵的情況。

舉例來說:員工表employee(emp_id,emp_name,emp_age,dept_id,dept_name,dept_info),當員工表中emp_id能夠唯一確定員工員工資訊,但是dept_name可由dept_id唯一確定,此時,該錶不符合第三正規化,此時可以刪除除了dept_id之外的其他部門資訊,把所有部門資訊單獨建立一張部門表。這樣如果員工調動部門,只需修改dept_id列即可,否則需要修改很多部門相關的資訊,而且有可能造成資料不一致。

一般開發中資料庫設計到第三正規化也就可以了,其它正規化如果有興趣可以參考專業書籍和資料。其實在開發中為了提高開發效率會冗餘一些字段,未必非要完全遵守第三正規化,但它仍然對我們設計資料庫具有重要指導意義。

資料庫 資料庫正規化

關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...

資料庫正規化 三正規化

所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...

資料庫正規化

注 表在定義中被稱為關係,記作r 欄位在定義中被稱作屬性 模式 資料庫中有三種模式,外模式,內模式,模式 粗體是關鍵字的意思 斜體為外來鍵 以前寫下來的,但是用了多年的帳號已經忘了,唯有把文章轉到這裡來了 真暈哦 http blog.csdn.net fantasylu archive 2004 0...