無料ツール

SQL を ER 図に変換

CREATE TABLE 文やデータベーススキーマ全体のダンプを貼り付けると、ER 図ができあがります。各テーブルは列とキー付きで描かれ、外部キーごとに線が引かれます。SQL の方言は自動で判定され、PostgreSQL、MySQL と MariaDB、SQL Server、SQLite に対応し、Oracle にも一部対応しています。試すだけならアカウントは不要です。

出力例

SQL のサンプルから描いた図の例
サンプルを試すオンラインショップ(PostgreSQL)マルチテナント SaaS(PostgreSQL)ストアフロント(MySQL)人事・給与(SQL Server)メモアプリ(SQLite)オンラインショップ(Oracle)

使い方

  1. SQL を貼り付けるかドロップ

    CREATE TABLE 文、マイグレーションファイル、または pg_dump、mysqldump、SSMS、sqlite3 で取ったダンプ全体を使えます。複数の .sql ファイルを一度にドロップすると、合計 8 MB までまとめて読み込みます。

  2. ER 図を確認

    各テーブルは、列とその型、PK・FK・UK の印を並べたカードになります。外部キーは、それを持つ列から参照先のキーへ向かう線になります。

  3. Archboard で開く

    新しい図として保存すれば、配置の変更、注釈の追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。

SQL から描かれるもの

図は CREATE TABLE 文の次の部分から作られます。

  • CREATE TABLE

    CREATE TABLE ごとに、テーブル名のカードを 1 枚作ります。列ごとに 1 行で、列名と型を示し、NULL を許す列には疑問符が付きます。カードに表示する列は 24 列までで、残りは件数だけを示します。

  • PRIMARY KEYUNIQUE

    主キーは、複数の列にまたがる場合も含め、対象の各列に PK の印が付きます。1 列だけに付いた UNIQUE 制約や、CREATE UNIQUE INDEX で 1 列に作った一意インデックスは、その列に UK の印を付けます。

  • FOREIGN KEYREFERENCESALTER TABLE

    REFERENCES によるインライン定義、テーブル制約、後から ALTER TABLE で追加したものを問わず、外部キーは 2 つの列を結ぶ線として描かれます。parent_id のように自分のテーブルを指すキーも表示されます。

  • CREATE SCHEMA

    CREATE SCHEMA で作られたスキーマや、sales.orders のように名前に含まれるスキーマは、SQL が複数のスキーマを使う場合にテーブルを囲む枠として描かれます。テーブルのないスキーマには枠を描きません。

  • NOT NULLUNIQUE

    カーディナリティは列から読み取り、鳥の足記法(IE記法)の線端で示します。NOT NULL の外部キーは必須、NULL を許す外部キーは任意の関係になり、外部キーが一意制約や主キーを兼ねる場合は 1 対 1 の関係になります。

読み込める SQL 方言

PostgreSQL、MySQL と MariaDB、SQL Server、SQLite は、それぞれの引用符、コメント、文の区切りの規則で読み込みます。そのため pg_dump のファイルも、DELIMITER ブロックを含む mysqldump も、GO 行だらけの SSMS スクリプトも、そのまま使えます。Oracle は一部のみの対応で、テーブル、キー、外部キーは描かれ、スラッシュだけの行で終わる PL/SQL ブロックは読み飛ばします。手がかりが食い違う場合は汎用リーダーが使われ、方言はいつでも自分で選べます。

ER 図に含まれないもの

  • データ行。INSERT、COPY などのデータ文は読まずに読み飛ばすため、データ入りのダンプでもスキーマだけのダンプと同じ図になります。
  • ビュー、関数、プロシージャ、トリガー、シーケンス。これらは読み飛ばし、種類ごとに何件除外したかをプレビューに表示します。mysqldump がバージョン付きコメントの中に書き出すビューやトリガーは、コメントとして読み飛ばされ、件数には含まれません。
  • デフォルト値、CHECK 式、コメント、ENUM 列や SET 列の許容値。列には名前、型、キーの印だけが表示されます。
  • 稼働中のサーバーの情報。このツールは渡された SQL テキストを読むだけでデータベースには接続しないため、行数、テーブルサイズ、クエリプランは表示されません。

SQL から ER 図への変換に関する質問

対応している SQL 方言は?

PostgreSQL、MySQL と MariaDB、SQL Server、SQLite で、Oracle には一部対応しています。方言はバッククォート、GO 行、ドル引用符などの手がかりから判定し、どの方言で読んだかをプレビューに表示します。判定が違う場合はリストから別の方言を選ぶと、その選択が保持されます。その他のデータベースでは、汎用リーダーが標準的な CREATE TABLE 文と ALTER TABLE 文を読みます。

データ入りのダンプ全体を貼り付けてもよいですか?

はい。INSERT 文や COPY 文は、SET 行、コメント、その他のダンプ特有の記述と一緒に読まずに読み飛ばすので、スキーマだけのダンプと同じ図になります。ただし、スキーマだけのダンプのほうが小さく、読み込みも速くなります。pg_dump --schema-only、mysqldump --no-data、sqlite3 の .schema を使ってください。

どのくらい大きなスキーマまで読めますか?

SQL は 8 MB、テーブルは 1,000 個までです。2 MB を超えるテキストはテキストボックスに表示されませんが、読み込みは行われます。図そのものに入る要素はテーブル、線、スキーマの枠を合わせて 2,000 個までなので、関係の多いスキーマではこちらの上限に先に達することがあります。その場合はスキーマごとにダンプしてください。

Oracle でも使えますか?

一部使えます。SQL Developer などで作った Oracle のスクリプトは、VARCHAR2、NUMBER、スラッシュだけの行から判定されます。方言のリストで Oracle を選ぶこともできます。CREATE TABLE、主キー、一意制約、ALTER TABLE で追加した外部キーは描かれます。PL/SQL パッケージ、トリガー、スラッシュの行で終わるその他のブロックは読み飛ばし、CONNECT 文と GRANT 文も読み飛ばします。

Archboard で開くと何が保存されますか?

プレビューは保存されません。「Archboard で開く」を選ぶと、描かれた図、つまり列名と型を載せたテーブルのカードとその間の線が、新しい図としてワークスペースに保存されます。その時点のスナップショットなので、あとでスキーマを変更しても図は更新されません。

SQL から ER 図を作るツールは無料ですか?

はい。SQL の貼り付けと図の表示にアカウントは不要です。図を Archboard で開くには無料アカウントが必要です。

1分でキャンバスを開く

Google または GitHub でサインイン。1シートは無料で、チームが加わったらアップグレード。