資料庫設計之間的正規化:
正規化(資料庫設計正規化
,資料庫的設計正規化)是符合某一種級別的關係模式
的集合。構造資料庫必須遵循一定的規則。在關聯式資料庫
中,這種規則就是正規化。關聯式資料庫
中的關係必須滿足一定的要求,即滿足不同的正規化。
目前關聯式資料庫
有六種正規化:第一正規化
(1nf)、第二正規化
(2nf)、第三正規化
(3nf)、boyce-codd正規化(bcnf
)、第四正規化
(4nf)和第五正規化
(5nf)。
1 第一正規化(1nf)
在任何乙個關聯式資料庫
中,第一正規化(1nf) [2] 是對關係模式的基本要求,不滿足第一正規化(1nf)的資料庫就不是關聯式資料庫。
所謂第一正規化(1nf)是指資料庫表
的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體
中的某個屬性
不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化(1nf)中表的每一行只包含乙個例項的資訊。
簡而言之,第一正規化就是無重複的列。
2 第二正規化(2nf)
第二正規化(2nf) [2] 是在第一正規化(1nf)的基礎上建立起來的,即滿足第二正規化(2nf)必須先滿足第一正規化(1nf)。第二正規化(2nf)要求資料庫表中的每個例項
或行必須可以被唯一地區分。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識。這個唯一屬性列被稱為主關鍵字
或主鍵、主碼。
第二正規化(2nf)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性。如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成乙個新的實體,新實體與原實體之間是一對多的關係。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識。
簡而言之,第二正規化就是非主屬性完全依賴於主關鍵字,在1nf基礎上消除非主屬性對碼的部分函式依賴。
/*幾個概念:
1.函式依賴: a-->b,如果通過al;j性(hj性組)的值,可以確定唯一-b後性的值。 則稱b依賴於a
2.完全函式依賴: a-->b,如果a是 乙個的性組,則b脂性值行確定出要依賴於aj性組中所有的:性值。
3.部分函式依賴: a-->b,如果a是一 個時性組,則b)s性值行確定只,要依賴於al;s性組中某-些值即可。
4.傳遞函式依賴: a-->b,b -- >c。如果通過a:性(店性組)的值,可以確定唯一-b]本性的值, 在通過bl性(後性組)的值可以確定唯一-c
後性的值,則稱c傳遞函式依賴於a
5.碼:如果在一張表中,乙個的性或後性組,被其他所有原性所完全依賴,則稱這個時性(:性組)為該錶的碼
*主屬性:碼屬性組中的所有屬性
*非主屬性:除過碼屬性組的屬性
*/
3 第三正規化(3nf)
滿足第三正規化(3nf) [2] 必須先滿足第二正規化(2nf)。簡而言之,第三正規化(3nf)要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。
例如,存在乙個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等資訊。那麼在圖3-2的員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的資訊再加入員工資訊表中。如果不存在部門資訊表,則根據第三正規化(3nf)也應該構建它,否則就會有大量的資料冗餘。
簡而言之,第三正規化就是非主屬性屬性不依賴於其它非主屬性。
資料庫設計正規化
目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 第四正規化 4nf 第五正規化 5nf 和第六正規化 6nf 滿足最低要求的正規化是第一正規化 1nf 在第一正規化的基礎上進一步滿足更多要求的稱為第二正規化 2nf 其餘正規化以次類推。一般說來,資料庫只需滿...
資料庫設計正規化
前言 為什麼要寫這篇文章呢,從去年年底開始,就和很多做技術的朋友交流過,從資料庫設計到資料庫架構各個方面的內容。有一些朋友執著於orm,執著於所謂的資料庫設計,卻忘記了一切技術是要為業務服務這個基石。當然這文章裡也有一些自己的理解,想向大家表達。正規化是什麼 正規化是符合某一種級別的關係模式的集合。...
資料庫正規化設計
在軟體開發過程中,資料庫的設計是非常重要的。可以說,良好的資料庫設計,是對使用者需求的理解的精準定位。它不僅能夠使得軟體開發起來非常便捷,而且還能夠使軟體系統高效執行,同時,為日後的維護或者更換資料庫提供便利。在最近開發系統的過程中,感覺收穫最大的也是關於資料庫的操作。最初開發機房收費系統的時候,由...