ErdDocs

テーブル定義書の自動生成

ErdDocs は、SQL ダンプや Prisma スキーマからテーブル定義書を自動で作ります。全テーブルのカラム、データ型、NULL 可否、デフォルト値、主キー・外部キー、インデックス、リレーションを一つの資料にまとめます。ブラウザの印刷から PDF として保存できます。COMMENT に書いた日本語の論理名は説明欄に入ります。登録不要、スキーマはブラウザの外に出ません。

スキーマ

下のスキーマは COMMENT に論理名を書いた例です。「テーブル定義書」タブに切り替えると、論理名が説明欄に入ります。

データベースからテーブル定義書まで 3 ステップ

  1. 01スキーマを書き出します。PostgreSQL なら pg_dump --schema-only mydb > schema.sql、MySQL なら mysqldump --no-data mydb > schema.sql です。Prisma なら schema.prisma をそのまま使えます。
  2. 02上に貼り付けるか、ファイルをパネルにドロップします。スキーマを読み込むそばから定義書ができあがります。
  3. 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 もブラウザの印刷機能で作られます。アップロード先のサーバーがそもそもないので、スキーマがサーバーに届くことはありません。

関連ページ