1. 程式人生 > 其它 >規範資料庫設計 -資料庫三大正規化

規範資料庫設計 -資料庫三大正規化

技術標籤:java路mysql資料庫sql

規範資料庫設計 -資料庫三大正規化 之 簡單理解 通俗易懂

第一正規化(1NF):

原子性: 保證每一列不可再分

​ 大白話來講就是一張表中的“列”項裡的內容 不能再分割 。

舉個例子:

( 圖片 第一正規化)

在這裡插入圖片描述
在這裡插入圖片描述

第二正規化(2NF):

​ 前提 滿足第一正規化

	每張表只描述一件事情

舉個例子:

(圖片)
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

訂單號 和產品號相關聯 但是 產品號不一定跟訂單金額 和訂單時間相掛鉤, 所以 拆開來

第三正規化(3NF):

前提: 滿足第二正規化

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

舉個例子:(圖)

在這裡插入圖片描述


在這裡插入圖片描述

在這裡插入圖片描述

學號 和姓名掛鉤 對應姓名有所屬的班主任管轄, 但是班主任是男是女 就是另一回事 對於學號來說 是不重要的資訊 ,想要描述 則 需要另外建立一張表來描述“班主任”。

三大正規化有時 是有一定問題的。 所以:

擴充套件:

規範性 和 效能 的問題

關聯查詢的表不得超過三張表

  • 考慮商業化的需求和目標 ,(成本, 使用者體驗! ) 資料庫的效能更加重要
  • 在規範效能的問題的時候 , 需要適當的考慮一下 規範性!
  • 故意給某些表增加一些榮譽的欄位(從奪標查詢中變為單表查詢)【例如 在訂單表裡 加了商品id的其他資訊】、
  • 故意增加一些計算列(從大資料量降低為小資料量的查詢 )【例如 count() 計數】

好啦 以上就是本次內容小分享, 不知道各位碼友看了後 有沒有一點點幫助, 歡迎指正

(ps 以上素材 用到了網上的 例子 結合了狂神老哥的分享 再自己敲了一遍 雖然說 內容 上 差不多哈哈哈 ) 有錯別字的話 歡迎斧正 謝謝