テーブル定義書の自動生成
ErdDocs は、SQL ダンプや Prisma スキーマからテーブル定義書を自動で作ります。全テーブルのカラム、データ型、NULL 可否、デフォルト値、主キー・外部キー、インデックス、リレーションを一つの資料にまとめます。ブラウザの印刷から PDF として保存できます。COMMENT に書いた日本語の論理名は説明欄に入ります。登録不要、スキーマはブラウザの外に出ません。
下のスキーマは COMMENT に論理名を書いた例です。「テーブル定義書」タブに切り替えると、論理名が説明欄に入ります。
データベースからテーブル定義書まで 3 ステップ
- 01スキーマを書き出します。PostgreSQL なら
pg_dump --schema-only mydb > schema.sql、MySQL ならmysqldump --no-data mydb > schema.sqlです。Prisma ならschema.prismaをそのまま使えます。 - 02上に貼り付けるか、ファイルをパネルにドロップします。スキーマを読み込むそばから定義書ができあがります。
- 03PDF で保存 をクリックすると、ブラウザの印刷ダイアログから資料ができます。ここでもサーバーには何も送られません。
説明欄はスキーマから入ります(物理名と論理名)
データベースには説明を書く場所がもともと用意されていますが、そこに書いた説明が資料になることはめったにありません。日本のテーブル定義書では、コード上の物理名(books、loan_date)と、日本語の論理名(図書、貸出日)を並べるのが一般的です。ErdDocs では、論理名をデータベースのコメントとして書いておけば、そのまま定義書の説明欄に入ります。
- PostgreSQL:
COMMENT ON TABLE orders IS '…'とCOMMENT ON COLUMN orders.status IS '…'。pg_dump はスキーマと一緒に自動で書き出します。 - MySQL:
CREATE TABLEの中で、カラム定義に書くCOMMENT '…'句と、テーブルのCOMMENT=オプション。mysqldump はこれを残します。 - Prisma: モデルやフィールドの上に書いた
///のドキュメントコメントが、説明として定義書に入ります。
それ以外はすべて DDL そのものから読みます。書かれたままの型、NULL 可否、デフォルト値、キー、インデックス、そして親テーブルの下にまとめたパーティションです。外部キーをまったく宣言していないダンプもあります(Rails や Django ではほとんど宣言しません)。その場合はカラムの命名からリレーションを推定し、推定したことを明記します。そのため監査する人は、宣言されたキーと推定したキーをいつでも見分けられます。
どんなときに求められるか
- 監査とコンプライアンス。 「テーブル定義書を出してください」はよくある依頼です。ErdDocs なら、貼り付けたスキーマのダンプから数分で応えられます。稼働中のデータベースを見ながら手で作れば、数日かかります。
- 納品と引き継ぎ。 受託開発の会社は、ドキュメントを添えてプロジェクトを締めくくります。ErdDocs はその成果物を、お客様が印刷して保管できる資料として作ります。
- 新メンバーのオンボーディング。 新しく入ったエンジニアは、information_schema をテーブルごとに調べる代わりに、資料を一つ読めば済みます。
Excel のテンプレートとの違い
Excel で定義書を管理すると、スキーマを変更するたびに誰かが手で直す必要があり、やがてデータベースと食い違います。ErdDocs ではダンプを貼り直すだけで最新の定義書になるので、納品やリリースのたびに作り直せます。
定義書に含まれるもの
テーブルごとに、カラム一覧(型・NULL・デフォルト・キー・説明)、参照先と参照元のリレーション、インデックス、CHECK 制約の許容値。全体には、主キーのないテーブルなどの注意点、外部キーを満たす INSERT/DELETE の順序、全カラムの索引がつきます。
よくある質問
生成されるテーブル定義書には何が載りますか?
ErdDocs はすべてのテーブルを記述します。テーブルごとに、宣言どおりのデータ型、NULL 可否、デフォルト値つきでカラムを並べます。さらに主キーと外部キー(参照先のカラムつき)、一意制約、インデックス、すべてのリレーションの両方向を載せます。スキーマにあるテーブルやカラムのコメントは説明になります。パーティション化されたテーブルは一度だけ載り、親の下にパーティション名が並びます。
既存のデータベースからテーブル定義書を作るには?
まずスキーマを SQL として出力します(PostgreSQL は pg_dump --schema-only、MySQL は mysqldump --no-data)。それを上に貼り付けて、「テーブル定義書」に切り替えます。ブラウザで印刷すると PDF になります。何もインストールせず、SQL が端末の外に出ることもありません。
説明欄にはどうやって内容が入りますか?
スキーマそのものから入ります。PostgreSQL の COMMENT ON TABLE 文と COMMENT ON COLUMN 文、MySQL のカラムに書く COMMENT 'テキスト' 句、Prisma の /// ドキュメントコメントが、すべて説明欄に入ります。コメントのないスキーマでは、説明欄を空のまま印刷せず、欄ごと省きます。
無料で使えますか?
ER図は 25 テーブルまで無料で表示できます。定義書は、つながりの多い 3 テーブルまで無料で全項目を表示し、それに続くテーブルは名前だけの枠として本来の位置に並び、残りは数だけを示します。実際に受け取る資料をそのまま確認できます。一度 $9 を支払うと、定義書全体と ER図全体が使えるようになります。サブスクリプションも更新もアカウントもありません。
スキーマはアップロードされますか?
いいえ。解析・ER図・定義書の作成はすべてブラウザの中で行われ、PDF もブラウザの印刷機能で作られます。アップロード先のサーバーがそもそもないので、スキーマがサーバーに届くことはありません。
関連ページ
- MySQL のテーブル定義書を自動生成:mysqldump の注意点と、カラムに書く COMMENT の書き方。
- PostgreSQL のテーブル定義書を自動生成:pg_dump の書き方、COMMENT ON、パーティション。
- テーブル定義書のテンプレート:7 つの列、ダウンロードできる CSV、手で埋める場合の書き方。
- データベースのドキュメント作成ツール:オープンソースのジェネレーター、コードから作るツール、プラットフォームの比較。
- Dataedo の代わり:プラットフォームでは大きすぎ、資料一つで足りるとき。
- SQL から ER図:同じツールを、ER図の画面で開きます。
- Agent Link API:README や AI の回答から、どんなスキーマでも動く ER図と定義書にリンクできます。