從關係模型三大核心(鍵、模式、關系)到範式設計六大原則,再到經典 Web 數據庫交互流程,本文為開發者構建完整的 MySQL 理論基石與架構視野。
CustomerID),非空、唯一。Orders.CustomerID),建立表間關聯,維護引用完整性。數據庫所有表結構的完整設計藍圖,包含:表名、欄位、數據類型、主鍵、外鍵、約束。不包含實際數據,僅定義結構。
-- 模式表示例 Customers (CustomerID PK, Name, Address, City) Orders (OrderID PK, CustomerID FK, Amount, Date)
| 類型 | 說明 | 實例 |
|---|---|---|
| 一對一 (1:1) | 雙方各對應唯一記錄 | 用戶表 ↔ 用戶詳情表 |
| 一對多 (1:N) | 一方記錄對應多方多條 | 客戶 ↔ 訂單 |
| 多對多 (M:N) | 雙方均對應多條,需中間表 | 學生 ↔ 課程(通過 選課表) |
Order_Items)┌─────────┐ HTTP請求 ┌─────────┐ 轉發/解析 ┌─────────┐ SQL查詢 ┌─────────┐
│ 瀏覽器 │ ──────────▶ │ Web服務器 │ ──────────▶ │ PHP引擎 │ ────────▶ │ MySQL │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
▲ │
│ ▼
│ 返回HTML 結果集
└────────────────────────────────────────────────────────────────────┘
result.php。.php 後綴,轉發給 PHP-FPM。SELECT * FROM books WHERE author='Thomson'。| 階段 | 架構特徵 | 痛點 | 演進方向 |
|---|---|---|---|
| 單體 | Web + DB 同機 | 單點故障、擴展受限 | 讀寫分離、主從複制 |
| 讀寫分離 | 一主多從,寫主讀從 | 主寫瓶頸、同步延遲 | 分庫分表、中間件 |
| 分庫分表 | ShardingSphere/MyCat | 分布式事務、跨庫 Join | NewSQL (TiDB/OceanBase) |
| 雲原生 | RDS/PolarDB/Serverless | 廠商鎖定、成本 | 多雲/混合雲、HTAP |
掌握 鍵/模式/關系 三大核心概念,遵循 六大設計法則 落地範式模型,理解 六步交互流程 定位性能瓶頸,是每位後端工程師從「寫 SQL」進階為「設計數據系統」的必修課。架構無銀彈,唯有根據業務體量、一致性要求、團隊能力,在 ACID 與 BASE、集中與分佈、自建與雲託管間做動態權衡。