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がすでに稼働しているなら、図は描くのではなく読み込みます。手順はこうです。
- Databaseメニュー → Reverse Engineerを選びます(ショートカットはCtrl+R)。ウィザードが開きます。
- 接続情報を選びます。 登録済みのMySQL接続を選ぶか、新しく入力します。
- スキーマを選びます。 サーバー上のスキーマ一覧から、図にしたいスキーマにチェックします。
- 取り込む対象を選びます。 ウィザードの途中にテーブル・ビューなどを選ぶステップがあります。全部でも、必要なテーブルだけでも構いません。
- ウィザードを終えると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行です。