Contents

MySQL轉出DB設計文件方法

有時候專案做一做,資料表越加越多,接著某一天就會突然收到一句話:「把目前 DB 結構整理成設計文件給我。」這種需求如果手動複製貼上,通常又慢又容易漏欄位,所以比較實際的做法是直接從 MySQL schema 反查出來。

這篇整理幾種常見做法,包含現成工具和自己查 information_schema 的方式。對工程師來說,重點不是工具多炫,而是能不能快速產出可以交付的文件。

先釐清你要的設計文件是什麼

不同團隊講的 DB 設計文件其實差很多,常見會需要下面幾類資訊:

  1. Table 名稱與用途。
  2. 欄位名稱、型態、長度、是否可為 NULL。
  3. 主鍵、索引、外鍵。
  4. 預設值。
  5. 欄位註解與資料表註解。

如果你只是要快速交差,通常能先把欄位資訊、註解、索引整理出來就很夠用了。

方法 1:直接用現成工具

如果你的專案剛好是 Laravel 生態,可以看看 doc-us 這類工具:

這類工具的優點是產出快、格式通常也不差;缺點是維護狀態、框架相依性、客製化彈性要先確認。

方法 2:自己從 information_schema 查出來

如果需求是「我要可控、可篩選、可輸出成 Excel 或 Word」,我反而比較推薦直接查 MySQL 內建的 information_schema。

下面是常見的欄位查詢:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SELECT
    TABLE_NAME,
    COLUMN_NAME,
    COLUMN_TYPE,
    IS_NULLABLE,
    COLUMN_DEFAULT,
    COLUMN_KEY,
    EXTRA,
    COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
ORDER BY TABLE_NAME, ORDINAL_POSITION;

如果還想補上資料表註解:

1
2
3
4
5
SELECT
    TABLE_NAME,
    TABLE_COMMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name';

這種方式最實用的地方在於,你可以把查詢結果直接匯出,再丟進 Excel、報表工具,甚至自己產 Word、HTML 或 markdown 文件。

方法 3:接到 Word 或報表模板

如果團隊最後指定一定要 Word 格式,PHPWord 這一類方式就派得上用場。

實務上通常是:

  1. 先查出 schema 資訊。
  2. 整理成陣列或中繼資料。
  3. 再用 PHPWord 或其他工具套版輸出。

我自己會怎麼選

如果是我自己處理,大概會這樣判斷:

  1. 臨時要交文件:直接查 information_schema 匯出。
  2. 需要長期維護:做一套固定 SQL 或小工具自動產生。
  3. 需要視覺化關聯:補一個 ERD 工具。
  4. 需要正式文件格式:再接 Word 或 HTML 模板。

注意事項

1. 註解很重要

如果資料表和欄位都沒有 comment,再好的匯出工具也只是把欄位名稱整理出來而已,可讀性還是有限。

2. 不要只交 DDL

很多人會把 SHOW CREATE TABLE 貼出去當設計文件,但非 DBA 或 PM 通常不容易讀。適合工程師看的設計文件,還是應該整理成欄位表格。

3. 外鍵不一定完整

不少舊系統根本沒有真的建立外鍵,所以匯出時不要太期待工具能自動推斷所有關聯。

小結

MySQL 轉出 DB 設計文件最務實的方法,通常不是找最華麗的工具,而是先想清楚要交什麼格式。若只是要快速整理資料表欄位與註解,直接查 information_schema 幾乎是最穩的;如果還要視覺化或正式文件,再補上 ERD 工具或 Word 產生流程即可。