資料庫(關係型)設計三大範式

來源:互聯網
上載者:User

標籤:

為了建立資料冗餘小,沒有資料異常(更新、刪除、插入)的資料庫。設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為範式。範式是符合某一種設計要求的總結。要想設計一個結構合理的關係型資料庫,必須滿足一定的範式。

設計資料庫的時候遵循下面三個範式基本就能滿足業務需要。

第一範式(1NF):資料庫表中的所有欄位都是單一屬性,不可再分。

解釋:第一範式要求資料庫中的表都是二維表。一般情況下,關係型資料庫是只能設計出二維表的。

例如,下面這張就是違反第一範式的表。因為它的“使用者資訊”欄位可以再拆分。

                                                使用者資訊表

使用者ID 帳號 密碼 使用者資訊
1 zhangsan ****** 姓名 手機
張三 13588888888

 

 

 

將“使用者資訊”欄位拆分後的表。

                                                使用者資訊表

使用者ID 帳號 密碼 姓名 手機
1 zhangsan ****** 張三 13588888888

 

 

 

 第二範式(2NF):資料庫的表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴。

解釋:部分函數依賴是指存在著組合關鍵字段的某一個關鍵字段決定非關鍵字段的情況。只要確保表中的每個欄位都和關鍵字段相關就符合第二範式。

例如,下面這張就是違反第二範式的表。

                                               社團加入資訊表

學生 社團 加入時間 社團簡介 性別
張三 動漫社 2015.9.30 動漫迷的聚集地 男
周玉 動漫社 2015.9.29 動漫迷的聚集地 女

 

 

 

學生與社團的關係是,一個學生可以加入多個社團,一個社團也可以擁有多個學生,即的,多對多關係。

“學生”欄位與“社團”欄位組合在一起,才能決定“加入時間”欄位。所以這是一張組合關鍵字段(“學生”,“社團”)的表。

但是“學生”決定了“性別”,“社團”決定了“社團簡介”,所以存在組合關鍵字段的某個關鍵字段決定非關鍵字段的情況。

違反第二範式的表存在的問題:

1、插入異常

如果沒有任何人加入動漫社,那麼是不是意味著,動漫社的簡介是不存在的。

2、刪除異常

如果把動漫社的同學都刪除掉,是不是意味著,動漫社的簡介是不存在的。

3、更新異常

如果要更新動漫社的簡介,是不是要更新多條記錄。

4、資料冗餘

很明顯,動漫社的簡介存在多條簡介資訊。

下面是按第二範式拆分後的表。

                                               學生表

學生 性別
張三 男
周玉 女

 

 

 

                                               社團表

社團 社團簡介
動漫社 動漫迷的聚集地

 

 

 

                                               學生與社團關係表

學生 社團 加入時間
張三 動漫社 2015.9.30
周玉 動漫社 2015.9.29

 

 

 

第三範式(3NF): 資料庫的表中不存在非關鍵字段對任意候選關鍵字段的傳遞函數依賴。

解釋:傳遞函數依賴是指候選關鍵字段間接決定非關鍵字段。

例如,下面這張就是違反第三範式的表。

                                                  商品資訊表

商品名稱 分類 分類描述
狼皮大衣 外套 一種可以裝x的衣服。

 

 

“商品名稱”決定了“分類”,然而“分類”又決定了“分類描述”。所以,存在非關鍵字段“分類描述”對候選關鍵字段“商品名稱”的傳遞函數依賴。

即:“商品名稱” ---> “分類” ---> “分類描述”

“分類描述”間接與“商品名稱”相關。

                                                  商品資訊表

商品名稱 分類 分類描述
狼皮大衣 外套 一種可以裝x的衣服。

 

 

下面是按第三範式拆分後的表。

                                                  分類資訊表

分類 分類描述
外套 一種可以裝x的衣服。

 

 

                                                  商品資訊表

商品名稱 分類
狼皮大衣 外套

 

資料庫(關係型)設計三大範式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.