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

數據庫核心知識體系:從數據類型到架構設計

     編輯:MySQL 綜合教學

數據庫核心知識體系:從數據類型到架構設計

本文系統梳理 MySQL 核心知識點,涵蓋數據類型選型、存儲引擎差異、核心名詞解析、實體關係建模與關係型/面向對象映射,幫助開發者建立完整的數據庫技術體系。

1. 數據類型精準選型

整數類型

TINYINTSMALLINTINTBIGINT
類型存儲有符號範圍適用場景
1 byte-128 ~ 127狀態碼、布爾標誌
2 bytes-32,768 ~ 32,767小範圍計數
4 bytes-2.1B ~ 2.1B通用主鍵、外鍵
8 bytes-9.2E18 ~ 9.2E18海量數據主鍵、時間戳

避坑指南:INT(20) 與 INT(11) 存儲範圍完全相同,括號內數字僅影響 ZEROFILL 顯示寬度,不影響存儲。

精確數值類型

DECIMAL(10,2):定點數,精確存儲金額。超出精度會四捨五入(非截斷),金融系統必須使用,嚴禁 FLOAT/DOUBLE。

字符串類型

類型特點索引行為
CHAR(N)定長,空格填充,讀取時去除尾部空格全長索引,適合固定長度代碼(如 MD5、身份證)
VARCHAR(N)變長,1-2 字節存長度,無填充前綴索引常用,節省空間
TEXT大文本,最大 64KB,不支持默認值,索引需指定前綴長度全文索引或前綴索引

時間類型

類型範圍時區行為適用場景
DATETIME1000-01-01 ~ 9999-12-31不轉換,存什麼顯示什麼業務時間、創建時間
TIMESTAMP1970-01-01 ~ 2038-01-19存儲時轉 UTC,讀取轉會話時區自動更新時間戳、跨時區應用

枚舉類型

ENUM('Y','N') 內部以整數存儲(1,2...),比 CHAR(1) 節省空間且內建約束,但修改枚舉值需 ALTER TABLE(鎖表),高頻變更場景慎用。

2. 存儲引擎核心差異

特性InnoDBMyISAMMemory
事務支持✅ ACID❌❌
鎖粒度行鎖表鎖表鎖
外鍵✅❌❌
崩潰恢復✅ Redo/Undo Log❌ 易損壞❌ 重啟丟失
全文索引5.6+ 支持✅ 早期優勢❌
適用場景OLTP、高併發、數據安全只讀、全文搜索、非關鍵日誌臨時表、緩存、查找表

結論:MySQL 5.5+ 默認 InnoDB,通用場景首選 InnoDB,無特殊理由不建議使用 MyISAM。

3. 核心名詞解析

  • 完整性:實體完整性(主鍵)、引用完整性(外鍵)、域完整性(類型/約束)、用戶定義完整性
  • 冗餘:受控冗餘(提升查詢性能)vs 非受控冗餘(導致異常)
  • 實體:現實世界可區分的對象(如「用戶」、「訂單」)
  • 關係:實體間的聯繫(1:1、1:N、M:N)

4. 實體 vs 類:兩種建模思維

維度自底向上(傳統 ER)自頂向下(DDD/領域建模)
起點數據庫表結構領域對象/業務語言
流程ER 圖 → 代碼 → 界面界面/用例 → 領域模型 → 數據庫
核心關注數據存儲、範式業務行為、不變量、聚合根
映射關係表 ≈ 類,列 ≈ 屬性聚合根 ≈ 表,值對象可能內嵌或單獨表

代碼與表結構對應示例

// 領域模型
class Order {
    OrderId id;
    Money totalAmount;
    List items; // 值對象集合
    OrderStatus status;
}

// 對應表結構(簡化)
orders: id, total_amount, status, version
order_items: id, order_id, product_id, quantity, unit_price

5. 關係型 vs 面向對象:阻抗失配與應對

  • 對象圖:引用導航、繼承、多態、身份標識
  • 關係表:外鍵關聯、無繼承、集合論基礎、主鍵標識

主流解決方案:

  1. ORM 框架:Hibernate、MyBatis、JPA — 自動映射,需理解延遲加載、N+1 問題
  2. 手寫 Repository:精準控制 SQL,領域層純淨
  3. CQRS:讀寫模型分離,讀端用視圖/物化表,寫端用領域模型

總結:數據庫優化的前提是理解基礎

許多開發者急於學「優化」,卻不懂 TINYINT vs INT、CHAR vs VARCHAR、索引原理、鎖機制。基礎不牢,地動山搖。 建議學習路徑:

  1. 精通數據類型選型與存儲原理
  2. 深入理解 InnoDB 架構(Buffer Pool、Redo/Undo Log、MVCC、鎖)
  3. 掌握索引設計原則(B+ 樹、最左前綴、覆蓋索引、索引下推)
  4. 學會 EXPLAIN 分析與慢查詢優化
  5. 了解主從復制、讀寫分離、分庫分表架構演進

夯實基礎,優化自然水到渠成。

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