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 Image | ER図に画像を挿入することができる。 |
Place a New Table | テーブルを作成することができる。 |
Place a New View | ビューを作成することができる。 |
Place a New Routine Group | ルーチングループを作成することができる。 |
Place a New 1:1 Non-Identifying Relationship | 1対1の非依存リレーションシップを設定することができる。 |
Place a New 1:n Non-Identifying Relationship | 1対多の非依存リレーションシップを設定することができる。 |
Place a New 1:1 Identifying Relationship | 1対1の依存リレーションシップを設定することができる。 |
Place a New 1:n Identifying Relationship | 1対多の依存リレーションシップを設定することができる。 |
Place a New n:m Identifying Relationship | 多対多の依存リレーションシップを設定することができる。 |
Place a Relationship Using Existing Columns | 既に存在するカラムに1対多の依存リレーションシップを設定することができる。 |
依存リレーションシップと非依存リレーションシップについて
ここで依存リレーションシップと非依存リレーションシップについて簡単に説明する。依存リレーションシップとは、子テーブルの外部キーの一部に親テーブルの主キーが組み込まれた形となり、親テーブルなしでは成り立たない関係である。
非依存リレーションシップとは、親テーブルの主キーと子テーブルの外部キーでリレーションシップを構築するが、子テーブルに外部キーとは独立した主キーを持っている関係である。
話を戻して、今回は以下の手順でER図を描いてみる。
- テーブルを作成する
- テーブルにカラムを設定する
- 外部キーを設定する
- テーブル同士のリレーションシップを設定する
以下より手順別に説明する。
テーブルを作成する
ツール群から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タブを選択することで、カーディナリティ(多重度)の設定や依存/非依存リレーションシップの切り替えを行うことができる。
カーディナリティの設定は中央部のラジオボタンと左右のMandatoryチェックボックスで行うことができる。
以下、こちらのカーディナリティの説明が分かりやすかったので引用させて頂いた。
カーディナリティ | 説明 |
---|---|
![]() |
0または1 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは存在しないか1個だけ存在する。 社員に対する上司など。(普通は上司が一人いる・でもおそらく社長には上司はいない) |
![]() |
1 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは必ず1個存在する。受注に対して顧客など。(顧客の存在しない受注はありえない・顧客の複数ある受注もありえない) |
![]() |
0以上 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは存在しないこともあるし、複数存在することもある。社員に対する部下など。 |
![]() |
1以上 相手のエンティティのデータに対して、この終端に接続されるエンティティのデータは必ず1個以上存在する。受注に対して受注明細など。 |
依存/非依存リレーションシップの切り替えは中央部のIdentifying Relationshipチェックボックスにて行う。
参考
MySQL Workbench の EER モデリングツールでリレーションシップ検証 1 (Identifying と Non identifying)
A5:SQL Mk-2を使ってER図を描こう!!