秒懂資料庫三範式

來源:互聯網
上載者:User

標籤:資料庫   範式   1nf   2nf   3nf   

懂得資料庫範式,對於設計出一個合理的資料庫有很大的協助。本文根據自己對資料庫範式的理解,結合具體的例子,嘗試著用通俗易懂的語言講明白資料庫三範式。

第一範式(列不可拆分)
如果資料庫中所有的欄位值都是不可拆分的原子值,那麼就滿足第一範式了。簡單點說就是不能有表中表,所以關聯式資料庫都滿足第一範式。例子略。
第二範式(完全依賴)
第二範式是在第一範式的基礎上,保證所有非主鍵都依賴於主鍵,對於聯合主鍵,非主鍵得完全依賴(也就是說不能依賴於聯合主鍵的一部分)。

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

 訂單資訊表

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

第三範式(消除非主屬性對鍵的傳遞依賴)第三範式是在滿足第二範式的基礎上,保證所有非主鍵都跟主鍵直接相關而不是間接相關。如下表所示:
訂單編號 客戶編碼 客戶姓名 連絡方式
001 1 張三 1234567
002 2 王麻子 1222222
003 3 李四 7654321

如所示,一定訂單只有一個客戶,把訂單編號作為主鍵,上表每個屬性都依賴於訂單編號,依賴的意思是說訂單編號相等時,其他屬性也得一樣。那麼就有定單編號確定客戶編碼,而客戶編碼又可以確定客戶姓名,這就產生了一個傳遞關係,所以不滿足三範式。要滿足三範式,應該拆分為兩個表,一個是訂單資訊表,一個是客戶資訊表。一般我們設計資料庫中得滿足第三範式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.