MySQL Workbench 可視化建模實戰:從 E-R 圖到正向工程生成數據庫的完整教程
MySQL Workbench 是官方提供的可視化數據庫設計工具,支援物理模型建模、正向工程生成 DDL、逆向工程導入現有庫、模型同步對比等專業功能。本文以「訂單系統」為例,演示從創建 Schema、繪製 EER 圖、定義表結構與關係、導出 SQL 腳本、執行建庫的完整流程。
1. 創建 Schema(模式/數據庫)
- 啟動 Workbench → 「Models」面板 → 點擊 + 創建新模型。
- 雙擊默認
mydb 重命名為 order_schema,Collation 選 utf8mb4_general_ci。
- 關閉 Schema 對話框,模型已加入 Catalog。
2. 創建 EER 圖並添加表
- 雙擊 Add Diagram 創建圖表
order_er。
- 工具欄選 Table 圖標 → 畫布點擊放置表 → 重複創建 3 表:
orders、sales_orders、purchase_orders。
- 拖拽調整佈局,保持清晰。
3. 定義表結構(雙擊表打開編輯器)
orders 表(父表)
- Columns 標簽:
order_no BIGINT, PK, NN, AI (Auto Increment)
order_date DATETIME, NN
order_type CHAR(1), NN, Default 'S' (S=銷售, P=採購)
- Indexes:主鍵自動創建。
- Options:Engine=InnoDB, Collation=utf8mb4_general_ci, Comment='訂單主表'。
sales_orders 表(子表,1:1 識別關係)
- Columns:
order_no BIGINT, PK, NN (不勾選 AI,外鍵同時為主鍵)
- 業務列:
customer_name, shipping_address, total_amount DECIMAL(10,2)...
purchase_orders 表(子表,1:1 識別關係)
- Columns:
order_no BIGINT, PK, NN
- 業務列:
supplier_name, procurement_cost, expected_date DATE...
4. 建立關係(Relationships)
- 工具欄選 1:1 Identifying Relationship (實線菱形,子表主鍵含父表主鍵)。
- 點擊
sales_orders (子) → 再點擊 orders (父) → 彈出對話框確認外鍵列映射 (order_no → order_no) → 確定。
- 同理建立
purchase_orders → orders 的 1:1 識別關係。
- 圖上顯示實線菱形連接,子表主鍵圖標變為 FK+PK 組合。
5. 正向工程生成 DDL 腳本
- 菜單 File → Export → Forward Engineer SQL CREATE Script。
- 向導選項:
- ✅ Generate DROP SCHEMA / CREATE SCHEMA
- ✅ Generate DROP TABLE / CREATE TABLE
- ✅ Generate INSERT statements for tables (可選)
- ✅ Quote identifiers with backticks
- ✅ Use IF NOT EXISTS
- 保存為
order_schema.sql。
6. 執行腳本建庫驗證
- Workbench 自身無直接執行能力,需外部客戶端:
- 命令行:
mysql -u root -p < order_schema.sql
- Workbench 連接實例 → 「File → Run SQL Script」選擇文件執行。
- 驗證:
SHOW TABLES FROM order_schema;、DESC orders;、SHOW CREATE TABLE sales_orders; 確認外鍵約束存在。
7. 進階功能速覽
| 功能 | 入口 | 用途 |
| 逆向工程 | Database → Reverse Engineer | 連接現有庫導入模型,生成 EER 圖 |
| 模型同步 | Database → Synchronize Model | 雙向對比模型與實例差異,生成 ALTER 腳本 |
| 模型文檔導出 | File → Export → Model Documentation | 生成 HTML/PDF 數據字典 |
| 版本控制集成 | File → Model → Version Control | 支援 Git/SVN 管理 .mwb 文件 |
最佳實踐建議
- 命名規範:表名單數小寫下劃線 (
sales_orders)、列名小寫下劃線、主鍵統一 id 或 表名_id。
- 所有表顯式指定
ENGINE=InnoDB、CHARSET=utf8mb4。
- 識別關係 (Identifying) 用於子表主鍵依賴父表主鍵;非識別關係 用於普通外鍵。
- .mwb 文件納入代碼倉庫,隨項目迭代同步更新。
- 大型模型分圖:按業務域拆分多個 EER Diagram,避免單圖過大卡頓。
Workbench 讓數據庫設計「所見即所得」,從圖到庫一氣呵成,是架構師與 DBA 的利器。
- 上一篇文章: MySQL 批量插入數據 Shell 腳本實戰指南
- 下一篇文章: MySQL 實時備份方案:從雙機同步到單機增量備份全解析
Copyright ©
程式碼之家 All Rights Reserved