MySQL WorkbenchでER図を作成する方法

MySQL Workbenchを使ってER図を描いてみたので使い方を備忘録。

MySQL Workbenchとは

MySQL専用のデータベース接続クライアントの一つ。MySQL Workbenchにはデータベースへの接続機能の他にER図を描くことができる機能も備わっており、この機能を使って描いたER図から直接テーブルを作成したり、既に存在するテーブルからER図を作成(抽出)してリバースエンジニアリング(再設計)を行うこともできる。

MySQL WorkbenchでER図を作成する方法

上部メニューのFileからNew Modelを選択する。新しいタブが開いたのが確認できたら、Add Diagramをダブルクリックする。EER Diagramが作成され、ER図の編集画面に移行する。
 
ER図の編集画面では中央よりやや左寄りにあるツール群を使ってER図を描いていく。

ツール郡

簡単に各ツールについての説明を表にまとめた。

ツール名説明
Select Object(s)オブジェクトを選択することができる。
Move Model画面をスクロール(移動)することができる。
Delete Objectオブジェクトを削除することができる。
Place a New Layer at Selected Areaレイヤー(オブジェクト同士をひとまとまりのレイヤーとして扱うことができる領域)を作成することができる。
Place a New Text Objectテキストを作成することができる。
Place a New ImageER図に画像を挿入することができる。
Place a New Tableテーブルを作成することができる。
Place a New Viewビューを作成することができる。
Place a New Routine Groupルーチングループを作成することができる。
Place a New 1:1 Non-Identifying Relationship1対1の非依存リレーションシップを設定することができる。
Place a New 1:n Non-Identifying Relationship1対多の非依存リレーションシップを設定することができる。
Place a New 1:1 Identifying Relationship1対1の依存リレーションシップを設定することができる。
Place a New 1:n Identifying Relationship1対多の依存リレーションシップを設定することができる。
Place a New n:m Identifying Relationship多対多の依存リレーションシップを設定することができる。
Place a Relationship Using Existing Columns既に存在するカラムに1対多の依存リレーションシップを設定することができる。
 

依存リレーションシップと非依存リレーションシップについて

ここで依存リレーションシップと非依存リレーションシップについて簡単に説明する。依存リレーションシップとは、子テーブルの外部キーの一部に親テーブルの主キーが組み込まれた形となり、親テーブルなしでは成り立たない関係である。
非依存リレーションシップとは、親テーブルの主キーと子テーブルの外部キーでリレーションシップを構築するが、子テーブルに外部キーとは独立した主キーを持っている関係である。

話を戻して、今回は以下の手順でER図を描いてみる。

  1. テーブルを作成する
  2. テーブルにカラムを設定する
  3. 外部キーを設定する
  4. テーブル同士のリレーションシップを設定する

以下より手順別に説明する。

テーブルを作成する

ツール群からPlace a New Tableを選択し、画面上でクリックする。これでTable1という名前のテーブルが作成される。

テーブルにカラムを設定する

上記で作成されたTable1をダブルクリックすると、テーブルの編集画面が画面下部に現れる。ここではテーブル名(Table Name)、カラム(Columns)、インデックス(Indexes)、外部キー(Foreign Keys)、データベーストリガ(Triggers)、パーティショニング(Partitioning)などを設定できる。

とりあえず、最初はテーブル名とカラムを設定する。Table Nameにテーブルに付けたい名前を入力する。続いて、Columns Nameにカラム名、Data Typeにデータ型を設定し、PK(Primary Key)などにチェックを付ける。これでカラムの設定が完了。

外部キーを設定する

カラムの設定が終わったら、次に外部キー(Foreign Keys)の設定を行う。画面下部からForeign Keysのタブに移動し、外部キー名(Foreign Key Name)と参照するテーブル(Referenced Table)を設定し、カラム(Column)と参照するカラム(Referenced Column)をそれぞれ設定する。これで外部キーの設定が完了。

テーブル同士のリレーションシップを設定する

テーブルの編集画面から抜け、ER図の編集画面に移動する。左側のツール群から1:1や1:nなどのリレーション用のツールを選択し、テーブル同士のリレーションを適切に設定していく。

ツールの場所

リレーションを設定すると、テーブル同士を繋ぐ線が表示される。リレーションの詳細設定を行いたい時はこの線をダブルクリックすることでリレーションの編集画面が画面下部に現れる。

ここからForeign Keyタブを選択することで、カーディナリティ(多重度)の設定や依存/非依存リレーションシップの切り替えを行うことができる。

リレーションの詳細設定を行うことができるForeign Keyタブ

カーディナリティの設定は中央部のラジオボタンと左右のMandatoryチェックボックスで行うことができる。
 
以下、こちらのカーディナリティの説明が分かりやすかったので引用させて頂いた。

カーディナリティ 説明
rel_ie_zero_one 0または1 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは存在しないか1個だけ存在する。 社員に対する上司など。(普通は上司が一人いる・でもおそらく社長には上司はいない)
rel_ie_one 1 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは必ず1個存在する。受注に対して顧客など。(顧客の存在しない受注はありえない・顧客の複数ある受注もありえない)
rel_ie_zero_upper 0以上 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは存在しないこともあるし、複数存在することもある。社員に対する部下など。
rel_ie_one_upper 1以上 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは必ず1個以上存在する。受注に対して受注明細など。

依存/非依存リレーションシップの切り替えは中央部のIdentifying Relationshipチェックボックスにて行う。
 
参考
MySQL Workbench の EER モデリングツールでリレーションシップ検証 1 (Identifying と Non identifying)
A5:SQL Mk-2を使ってER図を描こう!!