ブログ

MySQL WorkbenchでER図(EER図)を作成する

MySQLを使っているなら、ER図のために新しいソフトを探す必要はありません。公式ツールのMySQL WorkbenchにEER図の機能が入っていて、既存データベースからER図を作成するのは数クリックで済みます。

この記事はその全工程の案内です。Workbenchがダイアグラムを呼ぶ名前であるEERとは何かから始めて、稼働中のDB(またはDDLスクリプト)をリバースエンジニアリングで読み込む手順、図を整えて画像に書き出すところまで扱います。最後に、Workbenchで足りる仕事と別のツールが要る仕事の線引きも整理しました。DBeaverの案内と対になる記事です。

EER図とは? ER図と何が違うのか

Workbenchのメニューのあちこちに「EER Diagram」と書かれていて最初は戸惑いますが、結論から言うと一般に言うER図と実質的な違いはありません。 EERはEnhanced Entity-Relationshipの略で、基本のERモデルにいくつかの表現を拡張した学術用語を、Workbenchが機能名として採用したものです。

なので「eer図とer図、どっちを作ればいいのか」と迷う必要はありません。Workbenchの中でER図を作れば、その成果物の名前がEER図です。この記事でも両者を同じ意味で使います。

リバースエンジニアリングで既存DBからER図を作成する

DBがすでに稼働しているなら、図は描くのではなく読み込みます。手順はこうです。

  1. Databaseメニュー → Reverse Engineerを選びます(ショートカットはCtrl+R)。ウィザードが開きます。
  2. 接続情報を選びます。 登録済みのMySQL接続を選ぶか、新しく入力します。
  3. スキーマを選びます。 サーバー上のスキーマ一覧から、図にしたいスキーマにチェックします。
  4. 取り込む対象を選びます。 ウィザードの途中にテーブル・ビューなどを選ぶステップがあります。全部でも、必要なテーブルだけでも構いません。
  5. ウィザードを終えるとEER図が自動で出来上がります。 テーブル、カラム、FKのリレーション線まで、スキーマから読み取ったままの状態です。リレーション線のカラスの足の記号の読み方はER図の記号まとめにまとまっています。

手元からDBに接続できない場合は別の方法もあります。同じ系統のメニューからSQLスクリプトファイル(DDL)を読んでモデルを作れるので、mysqldumpで取り出したファイルがあれば図になります。DDLの取り出し方はSQLからER図を自動生成するのステップ1にまとまっています。

図を整える

読み込んだ直後の配置が読みにくければ、手で整えられます。テーブルをドラッグして動かし、拡大・縮小しながら構造が読める配置にします。

テーブルが多いときはレイヤー(Layer)が役に立ちます。キャンバスに大きな色付きの領域を作って関連テーブルをまとめる機能で、会員ドメインと注文ドメインを色の違う領域で分けておくと、初見の人も構造を早くつかめます。

テキストオブジェクトで図の上にメモを残すこともできます。公式ドキュメントも、図をPDFやPNGに書き出すときのタイトル・説明用としてこの機能を案内しています。

EER図をPNG・SVGに書き出す

整えた図はFile → Exportメニューからファイルに書き出します。公式ドキュメント基準でPNG、SVG、PDF、PostScriptに対応しています。会議資料やWikiに貼るならPNG、拡大や印刷が要る文書ならSVGかPDFを選べば十分です。

作業したモデル自体は.mwbファイルとして保存されます。図の配置とモデル情報がこのファイルひとつに入るので、続きを作業するならこのファイルを保管します。

逆方向もできます:Forward Engineering

Workbenchのモデリングは読み取り専用ではありません。空のモデルでテーブルを設計してDatabase → Forward Engineerを実行すると、描いたモデルがCREATE TABLE文に変換されて実際のDBに適用されます。設計をWorkbenchから始めるチームなら、図からDDLまでをひとつの流れにできるということです。

Workbenchのダイアグラムがしない仕事

ここまでがWorkbenchで十分にできる仕事です。次に、Workbenchだけでは難しい仕事を整理します。判断の目安はひとつ、作った図を他の人と共有する段階から手数が増えます。

共有がファイルの受け渡しになります。 モデルはローカルの.mwbファイルなので、チームで共有するにはファイルを送り、受け取る側もWorkbenchをインストールする必要があります。接続もインストールもなしにリンクで構造だけ見せる方法はなく、結局は画像を書き出して渡し、スキーマが変わるたびに同じことを繰り返すことになります。

テーブル定義書は別作業です。 検収・納品で求められるカラム定義書の形式は、ダイアグラム書き出しの範囲の外なので、Excel作業が別に発生します。

MySQL専用です。 公式ツールなので当然ですが、PostgreSQLやOracleが混ざる環境では、Workbenchの図にはMySQL側しか載せられません。DBMSが複数あるプロジェクトでは、ダイアグラムのツールも分かれてしまいます。

だからおすすめは乗り換えではなく併用です。MySQLの管理とクエリ作業は今までどおりWorkbenchでやり、共有・定義書・複数DBMSが必要になったときだけDDLでつなげば済みます。準備はmysqldump 1行(またはWorkbenchからのDDL書き出し)で、それをWorksCove ERDに貼り付ければ編集できる図とテーブル定義書が出来上がり、リンクで共有できます。MySQLとして読み込んだスキーマをPostgreSQL・Oracle・SQL ServerのDDLに変換して書き出すこともできます。定義書が急ぎならテーブル定義書の作り方から読むのがよいと思います。

よくある質問

EER図とER図は別のものですか?

実質的には同じものです。EERはEnhanced Entity-Relationshipの略で、MySQL Workbenchが自分のダイアグラム機能を呼ぶ名前です。一般に言うER図をWorkbenchの中で作れば、それがEER図と呼ばれます。用語の違いで別の機能を探し回る必要はありません。

無料版でもEER図を使えますか?

使えます。MySQL Workbenchは無料のCommunityエディションにモデリング機能が含まれていて、リバースエンジニアリング、EER図、画像への書き出しまで追加費用なしで使えます。

スキーマ全体ではなく、テーブルを数個だけ選んで描けますか?

できます。Reverse Engineerウィザードの途中に取り込む対象を選ぶステップがあり、スキーマ全体ではなく必要なテーブルだけを選んで図にできます。数百テーブルのDBから1つのドメインだけを切り出して見たいときに使うステップです。

テーブル定義書もWorkbenchから出せますか?

ダイアグラム機能の書き出しは画像(PNG・SVG・PDFなど)までです。検収や納品で求められるカラム定義書の形式が必要なら、DDLを取り出して定義書を自動生成できるツールに貼り付けるのが最短ルートです。

まとめると、MySQLだけの環境で構造を確認して画像に出すなら、WorkbenchのEER図で十分です。図をチームの外の人にも見せたい、定義書や複数DBMSが要る、その時点からDDLで専用ツールをつなげばよく、準備はmysqldump 1行です。