ER図(Entity Relationship Diagram)

ER図とは、データベースのテーブル(Entity)とテーブル同士の関連(Relationship)を図に表したものであり、データベースのテーブル設計に用いられる。ER図において、エンティティは四角形の記号、リレーションは四角形同士を結ぶ線で表現される。

書き方

ER図の書き方は、エンティティとリレーションを記号で表して書く。ER図の書き方には、以下に示す2種類がある。

エンティティ

論理モデルのER図の場合、エンティティ(実体)は業務におけるひとまとまりのデータを表している。物理モデルのER図の場合、エンティティはデータベースのテーブルを表す。

エンティティには2種類あり、非依存実体と依存実体に分けられる。

非依存実体

非依存実体とは、他のエンティティに依存せずに存在できるエンティティである。例えば、「顧客」、「商品」及び「注文」の3つのエンティティがある場合、商品を注文したことのない顧客や、顧客に注文されたことのない商品は存在するので、「顧客」及び「商品」は非依存実体である。

非依存実体は四角形の記号で表し、四角形の上にはエンティティ名を記述する。

非依存実体
Figure 1. 非依存実体

依存実体

依存実体とは、他のエンティティに依存して存在するエンティティである。例えば、「顧客」、「商品」及び「注文」の3つのエンティティがある場合、存在しない顧客から注文を受けたり、存在しない商品の注文を受けることはないので、「注文」は依存実体である。

依存実体は角の丸い四角形として記述する。

依存実体
Figure 2. 依存実体

属性

エンティティを表す四角形の中には属性を記述する。四角形を線で上下に区切り、上には主キーとなる属性名、下には主キーでない属性名を記述する。

外部キー(FK)

外部キー(Foreign Key)となる属性には、属性名の後に「(FK)」という文字を付ける。

リレーション

リレーションはエンティティ間の関連である。エンティティを表す四角形の間に線を引くことでエンティティを表し、線の横に関連名を記述する。依存実体との関連には実線、非依存実体との関連には破線を使用する。

関連によってつながった実体間には親子関係が成り立ち、子となる実体に結び付けられた線の先には黒く塗り潰した円を記述する。

カーディナリティ(多重度)

リレーションには多重度(カーディナリティ)を記述することができる。多重度とは、エンティティ間が何対何でつながっているかということを表現するものである。

リレーションのカーディナリティ(多重度)の書き方には2種類あり、IDEF1X記法とIE記法に分けられる。

IDEF1X記法

IDEF1X (Integration Definition)記法とは、米国標準技術研究所(NIST)が規格化した、データベースの設計に特化したER図表記法である。

IDEF1X記法におけるER図の書き方の例を示す。

ER図(IDEF1X記法)
Figure 3. ER図(IDEF1X記法)

子の多重度が0または1の場合、関係線にZ (zero)を記述する。子の多重度が1以上の場合、関係線にP (positive)を記述する。

親の多重度が0または1の場合、関係線に菱形を記述する。

1 対 0または1

多重度
Figure 4. 多重度

1 対 1

多重度
Figure 5. 多重度

1 対 0以上

多重度
Figure 6. 多重度

1 対 1以上

多重度
Figure 7. 多重度

1 対 3

多重度
Figure 8. 多重度

0または1 対 0または1

多重度
Figure 9. 多重度

0または1 対 1

多重度
Figure 10. 多重度

0または1 対 0以上

多重度
Figure 11. 多重度

0または1 対 1以上

多重度
Figure 12. 多重度

0または1 対 3

多重度
Figure 13. 多重度

IE記法

IE (Information Engineering)記法とは、James Martin氏が提唱したデータベースの設計に特化したER図表記法である。

IE記法におけるER図の書き方の例を示す。

ER図(IE記法)
Figure 14. ER図(IE記法)

関連の上には、関連の多重度(カーディナリティ)を記述することができる。多重度は、実体間が何対何でつながっているかということを表す。多重度の構文を次に示す。

cardinality ::= [ lower-bound ] upper-bound

lower-bound ::= '○' | '|'

upper-bound ::= '|' | 鳥足

記号 意味
○(白丸) 0
|(関連に交差する棒) 1
鳥足(3本に広がる線)

カーディナリティ記号の例を示す。

カーディナリティ
Figure 15. カーディナリティ

上記のER図の場合、下限が0で上限が1であるから、Bは0か1である。

カーディナリティ
Figure 16. カーディナリティ

上記のER図の場合、下限が0で上限が多であるから、Bは0以上である。

カーディナリティ
Figure 17. カーディナリティ

上記のER図の場合、下限が1で上限が1であるから、Bは1である。

カーディナリティ
Figure 18. カーディナリティ

上記のER図の場合、下限が1で上限が多であるから、Bは1以上である。

多対多のリレーション

ER図には2つのモデルが存在する。

それぞれのモデルによって、多対多のリレーションの書き方が異なる。

論理モデルとは、システム化する業務のエンティティとリレーションを実装技術に依存しない形で行うモデリングである。

たとえば、ひとつのプロジェクトに複数の従業員が属し、ひとりの従業員が複数のプロジェクトに属する場合、プロジェクトと従業員は多対多の関係になる。これを論理ER図で示すと次のようになる。

論理ER図
Figure 19. 論理ER図

物理モデルとは、実装を考慮してエンティティをRDBMSのテーブルと1対1になるようモデリングしたものである。RDBMSで多対多の関係を表す場合、中間テーブルが必要になるので、これをエンティティとして表現する。

前述の論理ER図を物理ER図で表現すると、次のようになる。

物理ER図
Figure 20. 物理ER図

論理モデルのエンティティにおいて、テーブルのキーとなる自然キー(ナチュラル・キー)が存在しても、物理モデルではシステム上の都合で代理キー(サロゲート・キー)を追加することがある。 たとえば、業務で従業員番号を数字3桁で管理していたものが、会社の規模拡大に応じて桁数が増えたり、所属部署を表すアルファベットが頭に付くようになったりすることがある。 この従業員番号(ナチュラル・キー)をそのままテーブルの主キーとしてしまうと、テーブルの主キー変更がたびたび発生してしまう。 そこで、システム上は単純に1からの連番をキーとすることがある。これが代理キー(サロゲート・キー)である。

JIS

ER図は JIS (Japanese Industrial Standards) で規格化されていない。

ISO

ER図は ISO (International Organization for Standardization) で規格化されていない。

ER図作成ツール

ER図を作成できるツールには次のようなものがあります。

ER図作成ツール
ツール 説明
draw.io 無料で使える図形作成Webサービス
ERMaster フリーのEclipseプラグイン
MySQL Workbench MySQLのツール

draw.io

draw.ioデータフロー図 (DFD)、フローチャート、UML及びER図などをウェブブラウザ上で作成できるダイアグラム作成ツールである。 作成したDFDはローカルストレージ、Google Drive、Microsoft Sky Drive及びDropboxに保存することができる。 draw.ioを利用するのにアカウントを作成する必要はなく、無料で利用できる。

draw.io
Figure 21. draw.io

自動生成

以下に示すツールでER図を自動生成できる。

MySQL Workbench

MySQL Workbench とは MySQL の管理ツールで、Oracle が提供している。MySQL データベースとの接続、サーバの起動及びサーバの停止等を GUI で操作することができる。OS は Microsoft WindowsUbuntu Linux、Red Hat Enterprise Linux、Oracle Linux、Fedora 及び macOS に対応していて、ソースコードも提供されている。

MySQL Workbench には、データベース情報からER図とテーブル定義書を作る「リバースエンジニアリング (Reverse Engineering)」機能がある。メニューの「Database」から「Engineering」を選択して、ウィザード形式の質問に答えていくと、既存データベースのER図を自動生成できる。