規範資料庫設計 -資料庫三大正規化
阿新 • • 發佈:2021-01-24
規範資料庫設計 -資料庫三大正規化 之 簡單理解 通俗易懂
第一正規化(1NF):
原子性: 保證每一列不可再分
大白話來講就是一張表中的“列”項裡的內容 不能再分割 。
舉個例子:
( 圖片 第一正規化)
第二正規化(2NF):
前提 滿足第一正規化
每張表只描述一件事情
舉個例子:
(圖片)
訂單號 和產品號相關聯 但是 產品號不一定跟訂單金額 和訂單時間相掛鉤, 所以 拆開來
第三正規化(3NF):
前提: 滿足第二正規化
第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,不能間接相關
舉個例子:(圖)
學號 和姓名掛鉤 對應姓名有所屬的班主任管轄, 但是班主任是男是女 就是另一回事 對於學號來說 是不重要的資訊 ,想要描述 則 需要另外建立一張表來描述“班主任”。
三大正規化有時 是有一定問題的。 所以:
擴充套件:
規範性 和 效能 的問題
關聯查詢的表不得超過三張表
- 考慮商業化的需求和目標 ,(成本, 使用者體驗! ) 資料庫的效能更加重要
- 在規範效能的問題的時候 , 需要適當的考慮一下 規範性!
- 故意給某些表增加一些榮譽的欄位(從奪標查詢中變為單表查詢)【例如 在訂單表裡 加了商品id的其他資訊】、
- 故意增加一些計算列(從大資料量降低為小資料量的查詢 )【例如 count() 計數】
好啦 以上就是本次內容小分享, 不知道各位碼友看了後 有沒有一點點幫助, 歡迎指正
(ps 以上素材 用到了網上的 例子 結合了狂神老哥的分享 再自己敲了一遍 雖然說 內容 上 差不多哈哈哈 ) 有錯別字的話 歡迎斧正 謝謝