首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 效能調優實戰(三):資料庫表設計的範式與反範式權衡

     編輯:MySQL 綜合教學

核心概念速覽

  • 完全函數相依:屬性集 Y 完全函數相依於 X,若 X→Y 且 X 的任何真子集 X' 都不決定 Y。
  • 傳遞函數相依:X→Y 且 Y→Z,則 Z 傳遞函數相依於 X。

六大範式層級關係

5NF ⊂ 4NF ⊂ BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF

範式層級關係圖

1NF(第一範式)

每個欄位皆為不可再分的原子值,滿足關係型資料庫最低要求。

2NF(第二範式)

在 1NF 基礎上,消除非主屬性對碼的部分函數相依(即非主屬性必須完全函數相依於候選碼)。

3NF(第三範式)

在 2NF 基礎上,消除非主屬性對碼的傳遞函數相依(非主屬性不依賴於其他非主屬性)。

BCNF(巴德斯-科德範式)

嚴格版 3NF:任何決定因素必須是候選碼,消除主屬性對碼的部分與傳遞相依。

工程實踐:範式與效能的博弈

原則:開發階段盡量遵循 3NF,保證資料一致性、減少冗餘異常。

妥協:高頻查詢場景下,3NF 導致多表 JOIN 過多,嚴重拖慢查詢效能。此時可適度反範式化:引入冗餘欄位、物化視圖、匯總表等,以空間換時間。

決策清單

場景建議策略
核心交易表、高寫入場景嚴格 3NF,確保 ACID
報表/分析查詢、大量 JOIN適度冗餘、建立匯總表
頻繁讀取的配置/字典表全量快照、應用層緩存

記住:沒有銀彈,只有權衡。每一次反範式化都要有明確的效能基準測試支撐,並建立資料同步修復機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved