ErdDocs

ER 圖工具

ErdDocs 不要你手畫 ER 圖,而是幫你產生。貼上 SQL dump、Prisma 結構、migration 或 ORM model,幾秒內就會出現實體、屬性,以及用鴉爪表示法畫出的關聯。免費、免帳號、免安裝,結構也不會上傳到任何地方。

你的結構

依左側 SQL 產生的電影目錄 ER 圖。把你自己的結構貼上去覆蓋即可。

由電影目錄結構產生的 ER 圖:studios、people、films、film_credits、theaters 與 screenings,每條關聯都有鴉爪標記。由電影目錄結構產生的 ER 圖:studios、people、films、film_credits、theaters 與 screenings,每條關聯都有鴉爪標記。
同一份電影目錄結構,和 SVG 匯出畫出來的一模一樣。

這是繪圖工具嗎?

不是。ErdDocs 從你貼上的結構推導出圖,所以沒有圖形面板、沒有畫線工具,也沒有從空白開始的畫布。在這裡,ER 圖是讀取結構的結果,不是你親手組裝的東西。你貼上原本就描述資料庫的文字,方框、欄位、鍵與基數都從中推導出來。你仍然可以拖曳資料表調整位置,排好的版面也會保存在分享連結裡。但圖上顯示的一切都來自你的結構,不必再手動輸入一次。

這個搜尋結果裡的其他工具,幾乎都是反過來的做法。下一節要談 ErdDocs 交給繪圖工具處理的唯一情況:還不存在的資料庫。

手畫,還是產生?

關鍵只有一個:結構是否已經存在。

  • 結構還不存在:那就畫。 ErdDocs 讀的是結構,所以這是它唯一不處理的情況。資料庫還不存在時,手畫是對的。模型是在白板或繪圖工具上討論實體時決定的。訂單是擁有自己的地址,還是指向一筆地址?這個關聯真的是多對多嗎?畫布或白板正適合這種討論。等討論的結果寫成 migration 或 CREATE TABLE,之後就交給 ErdDocs 讀取。
  • 結構已經存在:那就產生。 資料表一旦真的建立,就已經被精確地描述在 CREATE TABLE 陳述式、Prisma 結構、migration 檔案與 ORM model 類別裡。把現有的結構再手畫一次,等於抄寫一份你已經有的描述。花了你的時間,得到的只是一份比原本更不可靠的副本。

在 ER 圖工具裡,ErdDocs 是為已經存在的資料庫而做的。這個類別的其他工具,則是為了從零開始畫草圖。大多數搜尋 ERD 工具的人手上已經有結構。他們還是會選繪圖工具,因為搜尋結果給的就是這些。

ErdDocs 做得到、其他 ER 圖工具做不到的事

下面每個工具都能畫 ER 圖。這張表比較的是 ErdDocs 做得到的事。

功能ErdDocsdbdiagramEraserdiagrams.netLucidchartSmartDrawMiroFigma FigJam
自動從 SQL 產生圖,包括資料表和所有關聯✓ 有✓ 有部分:把 SQL 當成 AI 提示詞部分:只有資料表,關聯線要手畫部分:資料表要手動拖到畫布上部分:用 CSV,不是 SQL部分:透過 AI 或 Mermaid 程式碼部分:只能用 Mermaid 程式碼
讀取 Prisma 與 ORM model✓ 有× 無部分:把程式碼當成 AI 提示詞× 無× 無× 無× 無× 無
免費找出沒有外鍵的關聯✓ 有部分:要用付費方案的 AI未說明× 無× 無× 無部分:由 AI 建議關聯未說明
結構不會傳到廠商的伺服器✓ 有部分:只在連結產生器裡× 無✓ 有× 無× 無× 無× 無
不需帳號就能匯出圖片✓ 有未說明× 無✓ 有× 無× 無部分:只限基本白板× 無
匯出 Mermaid、DBML 與 PlantUML✓ 有部分:只有 DBML× 無× 無部分:Mermaid 只能透過 MCP× 無部分:只有 Mermaid× 無
可列印的資料字典✓ 有部分:網頁文件,沒有 PDF未說明× 無× 無× 無未說明× 無
不必訂閱也能用✓ 有× 無× 無✓ 有部分:免費方案不能匯入 ERD× 無× 無× 無

這張表依各廠商自己的頁面整理,資料截至 2026 年 11 月。「未說明」表示廠商沒有提到這一點。產品名稱屬於各自的擁有者。

最接近 ErdDocs 的是 dbdiagram,它也是從 SQL 產生圖。不過它不讀 Prisma 和 ORM model,也不能匯出 Mermaid 或 PlantUML。沒有外鍵的關聯,只能靠付費方案的 AI 來找。它的付費方案只有訂閱制,ErdDocs 則是一次付清。

Eraser 不會解析 SQL,而是把它當成提示詞交給 AI 模型,所以結構會離開你的電腦。匯出需要帳號,支援的格式裡也沒有 Mermaid、DBML 和 PlantUML。

diagrams.net 會把貼上的 SQL 變成資料表,但資料表之間的關聯要自己手畫。它不讀 ORM model,也不會產生資料字典。

Lucidchart 需要帳號,還要對運作中的資料庫執行一段查詢。匯入的資料表之後要手動擺到畫布上,關聯也只來自已宣告的外鍵。

SmartDraw 用 CSV 產生 ERD,這份 CSV 要用查詢從運作中的資料庫匯出。它不讀 SQL dump 或 ORM model,而且只能在線上使用。

Miro 和 Figma FigJam 產生 ERD 靠的是 AI 或 Mermaid 程式碼,而不是 SQL。結構存放在它們的雲端,匯出也要透過帳號。

為什麼手畫的 ERD 會過時,產生的不會

手畫的圖是一張快照,和資料庫之間沒有任何連結。下一次 migration 新增了欄位、改了資料表名稱,或刪掉一個外鍵。圖還是顯示舊的樣子,直到有人想起它的存在、找到檔案、有編輯軟體的授權,還願意花時間。通常它只在畫好的那一週是對的,之後再也沒人改。很多程式庫裡都放著一張和旁邊結構互相矛盾的圖。

產生的圖沒有需要保持同步的另一個版本。它只是結構文字的一種呈現,所以用最新的 dump 重新產生只要幾秒,結果因為做法本身就一定正確。你可以每次發布都重新產生。同一次貼上,就能匯出放進 README 的 Mermaid、放進文件網站的 SVG,或是交接用的完整資料字典。

可以貼上什麼

十種格式,會自動判斷。檔案照原樣貼上,工具會自己認出那是什麼。

  • SQL: PostgreSQL、MySQL、SQL Server 與 SQLite 的指令碼,照伺服器與工具寫出來的樣子讀取(pg_dump、mysqldump、SSMS 的「產生指令碼」)。反引號、AUTO_INCREMENT、SSMS 的 GO 批次,以及之後才用 ALTER TABLE 宣告的鍵,全都讀得到。dump 裡有什麼,請看 MySQL 頁面。
  • 結構語言: Prisma、DBML、Mermaid 與 PlantUML。它們本來就是以文字寫成的圖,只需要畫出來。
  • ORM model: Django、SQLAlchemy、Sequelize 與 TypeORM 的類別,以及 Laravel 的 migration。這些結構從來沒有圖,因為資料庫是在應用程式碼裡定義的。

結果也能匯出成 Mermaid、DBML、PlantUML 或 SQL,直接貼進 README 或專案文件。格式頁面列出每一種格式讀取什麼、刻意略過什麼。

產生的圖會顯示什麼?

每個資料表一個方框,裡面列出欄位與實際的型別,鍵會加上標記,每條關聯的兩端都用鴉爪表示法標出。所以圖會明確寫出基數,而不是讓人去猜。在上面的電影目錄裡,film_credits 是帶有自己欄位的中介資料表。多對多關聯真正進到資料庫時,就是這個樣子。

許多 Rails、Django、Laravel 專案不在資料庫裡宣告外鍵。結構沒有宣告的關聯,會從欄位名稱還原(film_id 指向 films)。這些關聯以虛線畫出,所以推斷出的線不會被誤認為資料庫強制執行的關聯。這一步在接手的正式環境資料庫上最重要,資料庫圖工具頁面會說明原因。

常見問題

這是拖曳方框來畫的 ERD 工具嗎?

不是。ErdDocs 從你貼上的結構產生圖,所以沒有圖形面板,也沒有畫線工具,這是刻意的設計。你仍然可以拖曳資料表調整版面,排好的位置也會保存在分享連結裡。但沒有任何東西是手畫的。每個方框、每條線都來自 SQL。

應該手畫 ERD,而不是用產生的嗎?

資料表真的建立之後,ErdDocs 就會產生 ERD。大多數人所處的就是這種情況,因為通常在有人要一張圖之前,結構就已經存在了。它唯一略過的,是還沒建立的資料庫。在任何人寫 migration 之前,資料模型是靠在畫布上畫實體、反覆討論來決定的,這部分交給通用的繪圖工具。等草圖變成 migration 或 CREATE TABLE,就貼到這裡,圖會直接從結構本身產生。

可以貼上什麼?

十種格式:PostgreSQL、MySQL、SQL Server 與 SQLite 的 SQL、Prisma 結構、DBML、Mermaid、PlantUML、Django model、SQLAlchemy model、Sequelize model、TypeORM entity 與 Laravel migration。格式會自動判斷。檔案照原樣貼上即可,不必先整理,也不必先匯出。

需要帳號、安裝或資料庫連線嗎?

三樣都不需要。解析器是在你瀏覽器裡執行的 JavaScript,所以沒有要連線的伺服器,也沒有要上傳的結構。資料表與欄位名稱不會離開你的電腦。打開頁面、貼上,圖就出現了。

適合用在資料庫課的作業或專題嗎?

適合。用 SQL 寫好資料表並貼上,就會得到含基數的 ER 圖,還有可列印的資料字典。如果老師要求先有概念模型再寫資料表,就要先做設計。ErdDocs 畫的是已經寫好的東西。

結構改了怎麼辦?

貼上新的 dump,幾秒內就會重新產生。手畫的 ERD 要靠記得它存在的人去修改,所以從下一次 migration 起就開始和資料庫脫節。產生的 ER 圖每次都來自結構本身,所以不可能脫節。

免費嗎?

25 個資料表以內的結構免帳號就能完整繪出,匯出 PNG、SVG、Mermaid、DBML、PlantUML 和 SQL 也都免費。更大的結構也會完整分析,超過上限的資料表會鎖定顯示。一次付清 9 美元,即可解除上限並開啟資料字典。

相關頁面