MySQL轉出DB設計文件方法
有時候專案做一做,資料表越加越多,接著某一天就會突然收到一句話:「把目前 DB 結構整理成設計文件給我。」這種需求如果手動複製貼上,通常又慢又容易漏欄位,所以比較實際的做法是直接從 MySQL schema 反查出來。
這篇整理幾種常見做法,包含現成工具和自己查 information_schema 的方式。對工程師來說,重點不是工具多炫,而是能不能快速產出可以交付的文件。
先釐清你要的設計文件是什麼
不同團隊講的 DB 設計文件其實差很多,常見會需要下面幾類資訊:
- Table 名稱與用途。
- 欄位名稱、型態、長度、是否可為 NULL。
- 主鍵、索引、外鍵。
- 預設值。
- 欄位註解與資料表註解。
如果你只是要快速交差,通常能先把欄位資訊、註解、索引整理出來就很夠用了。
方法 1:直接用現成工具
如果你的專案剛好是 Laravel 生態,可以看看 doc-us 這類工具:
- GitHub - UniSharp/doc-us: A MySQL Schema Documentation Generator for Laravel.
- Laravel 好用工具,幫你快速生成 MySQL schema 文件 - UniSharp blog
- 快速繪製 Db Schema(ERD) 的軟體 - DbSchema | Tsung’s Blog
這類工具的優點是產出快、格式通常也不差;缺點是維護狀態、框架相依性、客製化彈性要先確認。
方法 2:自己從 information_schema 查出來
如果需求是「我要可控、可篩選、可輸出成 Excel 或 Word」,我反而比較推薦直接查 MySQL 內建的 information_schema。
下面是常見的欄位查詢:
|
|
如果還想補上資料表註解:
|
|
這種方式最實用的地方在於,你可以把查詢結果直接匯出,再丟進 Excel、報表工具,甚至自己產 Word、HTML 或 markdown 文件。
方法 3:接到 Word 或報表模板
如果團隊最後指定一定要 Word 格式,PHPWord 這一類方式就派得上用場。
- 使用 PHPWord 產生 MySQL 資料庫結構文件 | hoyo 學習紀錄
- http://sandbox.onlinephpfunctions.com/code/c04fc96a535281378127cb498591c5b6136f68fb
實務上通常是:
- 先查出 schema 資訊。
- 整理成陣列或中繼資料。
- 再用 PHPWord 或其他工具套版輸出。
我自己會怎麼選
如果是我自己處理,大概會這樣判斷:
- 臨時要交文件:直接查 information_schema 匯出。
- 需要長期維護:做一套固定 SQL 或小工具自動產生。
- 需要視覺化關聯:補一個 ERD 工具。
- 需要正式文件格式:再接 Word 或 HTML 模板。
注意事項
1. 註解很重要
如果資料表和欄位都沒有 comment,再好的匯出工具也只是把欄位名稱整理出來而已,可讀性還是有限。
2. 不要只交 DDL
很多人會把 SHOW CREATE TABLE 貼出去當設計文件,但非 DBA 或 PM 通常不容易讀。適合工程師看的設計文件,還是應該整理成欄位表格。
3. 外鍵不一定完整
不少舊系統根本沒有真的建立外鍵,所以匯出時不要太期待工具能自動推斷所有關聯。
小結
MySQL 轉出 DB 設計文件最務實的方法,通常不是找最華麗的工具,而是先想清楚要交什麼格式。若只是要快速整理資料表欄位與註解,直接查 information_schema 幾乎是最穩的;如果還要視覺化或正式文件,再補上 ERD 工具或 Word 產生流程即可。