關聯式資料庫的三正規化

2021-09-01 18:17:28 字數 1771 閱讀 5044

關聯式資料庫的三正規化

1、第一正規化(1nf) 同一列不能儲存多個屬性 (應保持列的原子性)

在任何乙個關聯式資料庫中,第一正規化(1nf)是對關係模式的基本要求,不滿足第一正規化(1nf)的資料庫就不是關聯式資料庫。 所謂第一正規化(1nf)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化(1nf)中表的每一行只包含乙個例項的資訊。 中的員工資訊表,不能將員工資訊都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工資訊表的每一行只表示乙個員工的資訊,乙個員工的資訊在表中只出現一次。簡而言之,第一正規化就是無重複的列。

2、第二正規化(2nf) 所有列完全只依賴於全部主鍵 (如果只依賴與主鍵的一部分,請優化)

第二正規化(2nf)是在第一正規化(1nf)的基礎上建立起來的,即滿足第二正規化(2nf)必須先滿足第一正規化(1nf)。第二正規化(2nf)要求資料庫表中的每個例項或行必須可以被唯一地區分。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識。員工資訊表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主鍵、主碼。 第二正規化(2nf)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成乙個新的實體,新實體與原實體之間是一對多的關係。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識。簡而言之,第二正規化就是非主屬性非部分依賴於主關鍵字。

3、第三正規化(3nf) 相同的屬性不能出現在不同的表中 (非主鍵字段不能相互依賴) (某一列不由其他列計算得到)

滿足第三正規化(3nf)必須先滿足第二正規化(2nf)。簡而言之,第三正規化(3nf)要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。例如,存在乙個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等資訊。那麼在圖3-2的員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的資訊再加入員工資訊表中。如果不存在部門資訊表,則根據第三正規化(3nf)也應該構建它,否則就會有大量的資料冗餘。簡而言之,第三正規化就是屬性不依賴於其它非主屬性。

個人認為,如果全部達到第二正規化,大部分達到第三正規化,系統會產生較少的列和較多的表,因而減少了資料冗餘,也利於效能的提高。

2、合理的冗餘

完全按照規範化設計的系統幾乎是不可能的,除非系統特別的小,在規範化設計後,有計畫地加入冗餘是必要的。

冗餘可以是冗餘資料庫、冗餘表或者冗餘字段,不同粒度的冗餘可以起到不同的作用。

冗餘可以是為了程式設計方便而增加,也可以是為了效能的提高而增加。從效能角度來說,冗餘資料庫可以分散資料庫壓力,冗餘表可以分散資料量大的表的併發壓力,也可以加快特殊查詢的速度,冗餘字段可以有效減少資料庫表的連線,提高效率。

3,唯一約束:

建立乙個唯一約束會預設建立乙個唯一索引, 對於查詢優化有極大的幫助,

通常在乙個表中, 無論是無意義的自增值, 還是有意義的業務字段, 應該至少有乙個唯一約束存在.

4,不要在過濾欄位上使用任何的計算, 包括函式,邏輯,普通的計算等, 計算將造成查詢優化器無法使用相應的字段索引

5,盡量使用有索引的字段排序

6,排序時,應將排序操作控制在結果集盡量小的查詢中, 避免對大批量資料進行排序操作

不得不對大量資料進行排序時, 適當的建立一些索引對排序操作有一定的幫助

關聯式資料庫三正規化

正規化就是規範,就是關係型資料庫在設計表時,要遵循的三個規範。要想滿足第二正規化必須先滿足第一正規化,要滿足第三正規化必須先滿足第二正規化。第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。列資料的不可分割第二...

關聯式資料庫的三正規化

簡單的說,第一正規化就是原子性,字段不可再分割 第二正規化就是屬性完全依賴於主鍵,沒有部分依賴 第三正規化就是沒有傳遞依賴,屬性不依賴於其它非主屬性。1nf的定義為 符合1nf的關係中的每個屬性都不可再分。下表所示的情況,就不符合1nf的要求。1nf是所有關係型資料庫的最基本要求,也就是說,只要在r...

關聯式資料庫正規化

在建立乙個資料庫的過程中,必須依照一定的準則,這些準則被稱為正規化,從第一到第六共六個正規化,一般資料庫設計只要遵循第一正規化,第二正規化,和第三正規化就足夠了。滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂...