資料庫 第一 二 三正規化

2021-09-06 18:03:24 字數 1244 閱讀 5607

1nf:字段不可分;

2nf:有主鍵,非主鍵字段依賴主鍵;

3nf:非主鍵字段不能相互依賴;

解釋:

1nf:原子性 字段不可再分,否則就不是關聯式資料庫;

2nf:唯一性 乙個表只說明乙個事物;

3nf:每列都與主鍵有直接關係,不存在傳遞依賴;

第一正規化的合理遵循需要根據系統的實際需求來定。比如某些資料庫系統中需要用到「位址」這個屬性,本來直接將「位址」屬性設計成乙個資料庫表的字段就行。但是如果系統經常會訪問「位址」屬性中的「城市」部分,那麼就非要將「位址」這個屬性重新拆分為省份、城市、詳細位址等多個部分進行儲存,這樣在對位址中某一部分操作的時候將非常方便。這樣設計才算滿足了資料庫的第一正規化,如下表所示。

第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在乙個資料庫表中,乙個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。

比如要設計乙個訂單資訊表,因為訂單中可能會有多種商品,所以要將訂單編號和商品編號作為資料庫表的聯合主鍵,如下表所示。

這樣就產生乙個問題:這個表中是以訂單編號和商品編號作為聯合主鍵。這樣在該表中商品名稱、單位、商品**等資訊不與該錶的主鍵相關,而僅僅是與商品編號相關。所以在這裡違反了第二正規化的設計原則。

而如果把這個訂單資訊表進行拆分,把商品資訊分離到另乙個表中,把訂單專案表也分離到另乙個表中,就非常完美了。如下所示。

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

比如在設計乙個訂單資料表的時候,可以將客戶編號作為乙個外來鍵和訂單表建立相應的關係。而不可以在訂單表中新增關於客戶其它資訊(比如姓名、所屬公司等)的字段。如下面這兩個表所示的設計就是乙個滿足第三正規化的資料庫表。

這樣在查詢訂單資訊的時候,就可以使用客戶編號來引用客戶資訊表中的記錄,也不必在訂單資訊表中多次輸入客戶資訊的內容,減小了資料冗餘。

參考:

資料庫第一 二 三正規化

第一正規化 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,...

資料庫第一 二 三正規化

正規化 normal form 是正規化是符合某一種級別的關係模式的集合。通俗一點就是對資料庫中表的屬性的約束條件。第一正規化的條件 元組中的每乙個分量都必須是不可分割的資料項。反例 應該修改為 第二正規化的條件 在第一正規化的基礎上,所有的非主屬性完全依賴於主鍵。完全依賴意味著不能依賴於主鍵的一部...

資料庫一二三正規化

一 正規化介紹 主要有六種正規化 第一正規化 第二正規化 第三正規化 bc正規化 第四正規化和第五正規化。滿足最低要求的叫第一正規化,簡稱1nf。在第一正規化基礎上進一步滿足一些要求的為第二正規化,簡稱2nf。其餘依此類推 事物往往具有多面性,設計正規化也會帶來一定的麻煩 操作困難,因為需要聯絡多個...