ErdDocs

SQLを貼り付けるだけで、ER図とテーブル定義書

ErdDocs は、手元にあるスキーマから ER図を自動生成するツールです。SQL のダンプ、Prisma スキーマ、マイグレーションを貼り付けると、インタラクティブな ER図ができあがります。あわせてテーブル定義書も作られ、そのまま印刷できます。テーブル・カラム・型・リレーションを一覧にした資料です。登録もインストールも不要。解析はブラウザの中だけで行われ、スキーマが外部に送信されることはありません。

スキーマ

アップロードは一切ありません。スキーマはこのブラウザの中だけに保存され、サイトデータを消去すると削除されます。

使い方

SQL のダンプから ER図とテーブル定義書を作るには:

  1. 01スキーマを出力します。PostgreSQL なら pg_dump --schema-only、MySQL なら mysqldump --no-data を使います。
  2. 02上のパネルに貼り付けるか、.sql ファイルをそのままドロップします。
  3. 03ER図を確認します。テーブルにカーソルを合わせるとリレーションが強調され、クリックで固定できます。
  4. 04「テーブル定義書」タブに切り替えると、カラム・型・デフォルト値・インデックス・リレーションが一覧になり、PDF として印刷できます。

本番のダンプを前提に作っています

本番のスキーマは、きれいに並んだ CREATE TABLE 文の一覧ではありません。そこでパーサーは実在のスキーマで検証しています。pagila、sakila、GitLab、Discourse、WordPress、PrestaShop です。形式ごとの読み取り精度は、公開されている 89 のスキーマで測っています。

EC サイトのスキーマの ER図。customers・orders・products・order_items の各テーブルが IE記法(鳥の足)のリレーション線で結ばれている。SQL から生成したものEC サイトのスキーマの ER図。customers・orders・products・order_items の各テーブルが IE記法(鳥の足)のリレーション線で結ばれている。SQL から生成したもの
上のショップのスキーマを、エクスポート機能が描いたままの姿で載せています。
  • パーティションは一つのテーブルのままです。 payment の月別パーティションが 55 個あるダンプでも、カードは 56 枚ではなく payment の 1 枚です。
  • 定義されていない外部キーを補います。 Rails や Django のプロジェクトは、データベースに外部キーを一つも宣言していないことがよくあります。それでもカラム名を見れば、どこがどこを指すかはわかります。そうしたリレーションは破線で描きます。
  • 読めない文が一つあっても、ファイル全体は止まりません。 読めない部分は飛ばして報告し、残りのスキーマはそのまま描きます。
  • 大きなスキーマも切り捨てません。 数百テーブルのスキーマでも、貼り付けたものはすべて解析して配置します。

ErdDocs の特長

  • 図だけでなく、テーブル定義書まで。 納品・引き継ぎ・監査で実際に求められるのは、ER図と一緒に渡す定義書です。
  • 登録不要、インストール不要。 結果を見る前にアカウントを作る必要はなく、プロジェクトに何かを追加する必要もありません。
  • 買い切り。 サブスクリプションではなく、一度だけの支払いです。
  • スキーマは手元から出ません。 解析はブラウザ内で完結し、スキーマはサーバーに送られません。本番のスキーマも、データベースの構造が漏れる心配なく貼り付けられます。

形式どうしの変換

ErdDocs は 10 種類の形式を読み、8 種類の形式で書き出します。どれも上のパネルでできます。下のページは変換ルートを一つずつ扱い、サンプルが入った状態で開きます(ページは英語です)。

よくある質問

テーブル定義書とは何ですか?

データベースの全テーブルについて、カラム名・データ型・NULL 可否・デフォルト値・インデックス・リレーションを一覧にした資料です。開発の引き継ぎや納品、監査で使われます。ErdDocs は貼り付けたスキーマからこれを自動で作り、そのまま印刷できます。

カラムの日本語名(論理名)は表示されますか?

はい。PostgreSQL の COMMENT ON TABLE / COMMENT ON COLUMN や MySQL の COMMENT 句に書いた日本語名は、そのまま読み込まれてテーブル定義書の説明欄に表示されます。物理名はテーブル名・カラム名として、論理名はコメントとして並びます。

スキーマはどこかにアップロードされますか?

いいえ。解析と描画はすべてブラウザの中で行われます。SQL が端末の外に出ることはなく、作成するアカウントもありません。ErdDocs は稼働中のデータベースにあえて接続しないので、接続情報を渡す必要もありません。ページビューは Cookie を使わない計測ビーコンで数えています。ビーコンにわかるのは開いたページだけで、そこに書かれた中身は一切わかりません。

どのデータベースと形式に対応していますか?

SQL は PostgreSQL・MySQL・SQL Server・SQLite に対応しています。ALTER TABLE ONLY ... ADD CONSTRAINT 文を含む pg_dump、mysqldump、SSMS で生成したスクリプト、SQLite の .schema コマンドの出力のどれでも読めます。SSMS の GO バッチや角かっこで囲んだ名前も読み取ります。ほかに 9 種類の入力をそのまま読みます。Prisma スキーマ、DBML、Mermaid の erDiagram、PlantUML、Django のモデル、SQLAlchemy のモデル、Sequelize のモデル、TypeORM のエンティティ、Laravel のマイグレーションです。Prisma では、@map の名前、リレーションフィールド、暗黙の多対多の中間テーブルを、データベースに実際にできるテーブルとして解決します。形式は貼り付けた内容から判定し、その判定は手で変えられます。

外部キーが定義されていないダンプでも描けますか?

はい。Rails や Django、Laravel のプロジェクトではリレーションをアプリ側だけで管理していることがよくあります。ErdDocs は命名規則も読むので、user_id は users テーブルにつながります。名前から推定したリレーションは破線で描かれ、データベースが宣言しているものと区別できます。

dbdiagram、drawSQL、sqltoerdiagram とは何が違いますか?

ErdDocs の支払いは一度だけです。dbdiagram と drawSQL の有料プランは、サブスクリプションしかありません。ErdDocs は Prisma のスキーマ、Django・SQLAlchemy・Sequelize・TypeORM のモデル、Laravel のマイグレーションを読めます。dbdiagram と drawSQL は、そのどれも読めません。Mermaid や PlantUML への書き出しも、どちらにもありません。drawSQL では、アカウントがないと画像さえ書き出せません。DBML は取り込めますが、書き出せません。dbdiagram で外部キーのないリレーションを見つけるのは AI アシスタントで、有料プランでしか使えません。ErdDocs はカラム名から、無料で見つけます。sqltoerdiagram には、印刷できるテーブル定義書がありません。また、ダンプ内のパーティションを一つずつ別のテーブルとして描きます。ErdDocs はそれを親テーブルにまとめます。sqltoerdiagram は Laravel のマイグレーションを読めません。Django と TypeORM では、先にモデルから SQL を生成するよう求めます。

料金はかかりますか?

25 テーブルまでのスキーマは登録なしで無料ですべて表示でき、画像の書き出しも無料です。それより大きいスキーマも全体を解析し、上限を超えたテーブルはロックされた状態で表示されます。一度だけ $9 を支払うと、上限がなくなり、テーブル定義書も全体が使えるようになります。税は決済時に Paddle が加算します。

もっと見る