無料ツール
MySQL・MariaDB を ER 図に変換
mysqldump のファイルや MySQL Workbench のスクリプトを、バッククォート、ENGINE オプション、バージョン付きコメントごと貼り付けると、テーブルと外部キーの ER 図ができます。MariaDB のダンプも同じように読めます。商品、バリエーション、注文、レビューを含むストアフロントのサンプルを試してみてください。
出力例
使い方
MySQL のダンプを貼り付けるかドロップ
mysqldump や mariadb-dump の出力、Workbench や phpMyAdmin からのエクスポート、SHOW CREATE TABLE が出力する CREATE TABLE 文を使えます。
テーブルとつながりを確認
各テーブルは列とキーを載せたカードになります。制約として宣言した外部キーも、REFERENCES でインラインに書いた外部キーも、対応する列どうしを結ぶ線になります。
Archboard で開く
新しい図として保存すれば、配置の変更、注釈の追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。
MySQL からデータベーススキーマを取り出す
このコマンドを実行し、schema.sql を貼り付けるかファイルをドロップしてください。
--no-data はデータ行を除き、--skip-comments と --compact は先頭のコメントと DROP TABLE、LOCK TABLES、SET NAMES の行を除きます。mydb はデータベース名に置き換え、必要に応じて -u と -p を付けてください。MariaDB では mariadb-dump に同じオプションを指定できます。
mysqldump --no-data --skip-comments --compact mydb > schema.sql
ダンプ内の MySQL 構文
mysqldump のファイルに含まれる各構文の扱いは次のとおりです。
`order_items`- 読み込みます。バッククォートで囲んだ名前は、囲まずに書いた同じ名前と一致します。ダンプで ANSI_QUOTES が設定されていれば、二重引用符で囲んだ名前も使えます。
ENGINE=InnoDB- DEFAULT CHARSET、COLLATE などのテーブルオプションと一緒に読み飛ばします。テーブル自体は読み込みます。
AUTO_INCREMENT- 表示しません。列は INT UNSIGNED などの型をそのまま保ちます。テーブル定義の後ろに書かれた AUTO_INCREMENT のカウンターも無視します。
REFERENCES products (id)- リレーションとして描きます。9.0 より前の MySQL はこのインライン形式を受け付けても適用しないため、見つけた場合はプレビューに注意書きを追加します。
KEY idx_name (name)- 通常のインデックスなので、印は付きません。UNIQUE KEY には UK が付き、列の直後に書いた KEY は MySQL と同じく主キーを意味します。
/*!40101 … */- コメントとして扱い、読み飛ばします。mysqldump が各テーブルの前後に書く SET の行もここに含まれます。
DELIMITER ;;- 解釈します。DELIMITER の行で囲まれたプロシージャと関数はまるごと読み飛ばして件数を数え、その後のテーブルは引き続き読み込みます。mysqldump がそこに書くトリガーとイベントはバージョン付きコメントで囲まれているため、コメントとして読み飛ばします。
ENUM (…) · SET (…)- 列の型として enum と set を表示します。許容値は一覧表示しません。
MySQL から描いた図に含まれないもの
- ストアドプロシージャ、関数、トリガー、イベント。いずれも図には描きません。プロシージャと関数はプレビューで件数を数えますが、mysqldump がバージョン付きコメントの中に書くトリガーとイベントはコメントとして読み飛ばします。
- /*!50100 PARTITION BY … */ のようなバージョン付きコメントの中身。この部分はコメントとして扱うため、パーティショニングなどバージョン依存のオプションは表示されません。
- 拡張 INSERT 文の行。1 行の INSERT が数 MB に及ぶ場合でも、読まずに読み飛ばします。
- 稼働中の MySQL や MariaDB サーバーの情報。接続は行わないため、行数、テーブルサイズ、サーバー設定は表示されません。
MySQL と MariaDB に関する質問
どの mysqldump コマンドを使うのがよいですか?
mysqldump --no-data --skip-comments --compact mydb > schema.sql を使うと、データ行やそれを囲む行を含まない CREATE TABLE 文だけが得られます。完全なダンプでも使えます。INSERT 文は読み飛ばすので図は同じで、ファイルが大きくなるだけです。
MariaDB でも使えますか?
はい。MariaDB は同じ形式でダンプを書き出すので、MySQL / MariaDB を選ぶか、自動判定に任せてください。mariadb-dump の出力、バッククォートで囲んだ名前、AUTO_INCREMENT は MySQL と同じように読まれ、インラインの REFERENCES は、どのサーバーで作ったファイルでもリレーションとして描かれます。
インラインの REFERENCES に注意書きが付くのはなぜですか?
MySQL 8 以前では、列の直後に書いた REFERENCES は受け付けられても無視され、外部キーは作られません。MySQL 9.0 以降では作られます。スクリプトにリレーションが書かれているため図ではどちらの場合も線を描き、注意書きでデータベースにそのキーが本当にあるかの確認を促します。
ダンプの代わりに Workbench のスクリプトやマイグレーションを貼り付けられますか?
はい。MySQL Workbench のフォワードエンジニアリングで生成したスクリプト、Laravel のスキーマダンプ、Rails の structure.sql、手書きの DDL を使えます。ALTER TABLE … ADD CONSTRAINT … FOREIGN KEY や ADD COLUMN のように後からテーブルを変更する文は、指定されたテーブルに適用されます。
MySQL のダンプを貼り付けると何かが保存されますか?
プレビューは保存されません。「Archboard で開く」を選ぶと、テーブルのカード、列名と型、リレーションの線を含む描かれた図が、新しい図としてワークスペースに保存されます。あとで MySQL のスキーマを変更しても図は更新されません。
MySQL の ER 図ツールは無料ですか?
はい。ダンプの貼り付けと図の表示にアカウントは不要です。図を Archboard で開くには無料アカウントが必要です。