データベース設計の基本中の基本であるER図。ER図を書きたいけど、「記法が分からない」「どういうステップで書けば良いか分からない」という若手エンジニアも多いのではないでしょうか。
ER図は10種類近くあり、種類によって記法が異なります。このことが難しいイメージを与えていますが、実はそれほど難しいものではありません。覚えれば良いER図は2種類だけです。
しかも、この記事で解説している基礎知識を押えれば、たった5つのステップで作成することができます。
この記事では、ER図の基礎知識からER図の書き方まで、エンジニアが抑えておくべきER図の全知識をどこよりも分かりやすく解説します。
この記事を読み終えたとき、若手エンジニアもER図を書けるようになっているでしょう。
この記事を参考に最適なデータベース設計を進めて下さい。
Contents
1.ER図とは
ER図とは、「データベース設計(データモデリング)で使う設計手法」です。
海外では「Entity Relationship Diagram」と呼ばれています。
「エンティティ」「アトリビュート」「リレーション」「カーディナリティ」と呼ばれるオブジェクトで構成されており、ER図を活用してデータ構造を俯瞰的に設計します。
ER図は、データベースが必要なWEBサイトやシステムの設計では必ずと言ってよいほど作成されます。逆に言うと、ER図なしにはデータベースを構築できません。データベース設計の基本中の基本と言える設計手法です。
ER図の例(IE記法)
2.主なER図の種類
ER図は10種類近くの記法があります。現在は、「IE記法」と「IDEF1X記法」の2種類が最もポピュラーです。どちらの記法も概観は似ていますが、カーディナリティの記法で若干異なります。
どちらの記法が良いというものはなく、エンジニアや会社の好みによって使い分けられています。エンジニアであれば、両方の記法をしっかり押えておく必要があります。
2.1.IE記法
IE記法とは、リレーションが鳥の足のような形をしていることから、別名「鳥の足記法」とも呼ばれています。IDEF1X記法に比べて、リレーションが直感的に理解しやすいという特徴を持っています。そのため、新人研修などではIE記法が積極的に使われています。
IE記法の例
2.2.IDEF1X記法
IDEF1X記法とは、アメリカの国立標準技術研究所(NIST)で作られたER図の記法の1つです。
IE記法と並び世界中で使われるポピュラーなER図の記法です。
IE記法と異なり、リレーションを「●」などで表現することが特徴です。IE記法より細かい表現ができることで人気があります。その分IE記法に比べて直感的な分かりやすさは低くなります。
IDEF1X記法の例
3.ER図の基本ルール
ER図は、「エンティティ」と呼ばれるデータのまとまりや「アトリビュート」というエンティティの詳細情報、エンティティ同士の関係を表現する「リレーション」と「カーディナリティ」を組合せて書きます。
この章では、ER図を書くための基本ルールについて解説します。ER図には「IE記法」と「IDEF1X記法」があると前述しました。この2つの記法の違いは「カーディナリティ」のルールです。他のルールは共通しており、覚えることはさほど多くありません。この章を読んでしっかり理解しましょう。
3.1.エンティティ
「エンティティ」とはデータのまとまりのことです。 |
3.2.アトリビュート(属性)
「アトリビュート」とは、エンティティの中の属性情報のことです。左図の赤丸で囲われているものすべてがアトリビュートです。 アトリビュートの中で「主キー」や「外部キー」も表現します。主キーとなる項目は、エンティティ上部で四角に囲い明示します。外部キーとなる項目は、項目名の後ろに「(FK)」と書いて明示します。その他の項目は、項目名のみ記述します。 |
3.3.リレーション
「リレーション」とは、エンティティ同士の関係を表現する線のことです。
リレーションの詳細は、「カーディナリティ」という記号を使って表現します。
上図は、注文テーブルと注文詳細テーブルがリレーション関係にあることを表現しています。
3.4.カーディナリティ(多重度)
「カーディナリティ」とは、「1対1」「1対多」「多対多」など、リレーションの詳細を表現する記号のことです。「0以上」や「0または1」といったことも表現することができます。
日本語では「多重度」と呼ばれています。リレーションの始点と終点を、定められた記号で表現します。IE記法とIDEF1X記法では、カーディナリティの表現方法が異なります。詳しくは次の章で解説します。
3.5.エンティティの依存関係・非依存関係
依存関係
「依存関係」とは、上図の注文テーブルと注文明細テーブルのように、必ず紐づくデータが存在しなければならない関係のことです。つまり、エンティティ間で親子関係になります。どちらかのデータが欠けてもシステム的に成り立ちません。子となるエンティティの枠線を角丸で表現します。
非依存関係
「非依存関係」とは、エンティティ間で「親子関係がない」リレーションのことです。
上図の社員マスタと社内サークルマスタは社員番号をもとにリレーション関係が成り立っていますが、紐づくデータがなくてもシステム的に成り立ちます。このようなケースを「非依存関係」といいます。非依存関係の場合、どちらのエンティティも四角の枠線で表現します。
この章ではER図の基本ルールについて解説しました。ER図の概要を理解できたのではないでしょうか。ER図はこの基本ルールを組合せて書いていきます。次は、IE記法とIDEF1X記法のカーディナリティの書き方について解説します。
4.カーディナリティの書き方(IE記法とIDEF1X記法)
IE記法とIDEF1X記法は、カーディナリティの書き方が違うと前述しました。この章では、IE記法とIDEF1X記法のカーディナリティの書き方について詳しく解説します。
4.1.IE記法
IE記法は、「○」「l」「鳥の足(3つ股の線)」という3つの記号を組合せて表現します。記号の意味は下記です。3つの記号さえ覚えればIE記法のER図が書けます。
記号 |
意味 |
○ |
0(ゼロ) |
l |
1(イチ) |
多 |
これらの記号を組みあわせて様々な表現ができます。下記は代表的な例です。
1対1の関係
上図は、日本語名称マスタと中国語名称マスタは「1対1の関係」であることを表現している例です。
1対多の関係(あいまいな表現)
上図は、仕入先マスタと商品マスタは「1対多の関係」であることを表現している例です。
よく使われる表現ですが、リレーションがあいまいな状態(最適な定義ではない)です。
「1対多という関係は決まっているが、それ以上は決まっていない」という、データベース設計の初期段階の時に使います。設計が進むにつれ、「1対0以上の関係」「1対1以上の関係」のように具体化していきます。
1対0以上の関係
上図では、仕入先マスタと商品マスタは「1対0以上の関係」であることを表現している例です。「1対多」の関係性をより詳細に表現しています。仕入先登録しても、結局商品を仕入れないという業務フローはよくあります。「1対0以上」の関係は、このようなケースなどでよく使われます
1対1以上の関係
上図では、注文テーブルと注文明細テーブルは「1対1以上の関係」であることを表現している例です。「1対多」の関係性をより詳細に表現しています。
注文テーブルに対して、注文した商品と数量のまとまりである明細は必ず1レコード存在しなければなりません。「1対1以上の関係」は、このようなケースなどでよく使われます。
多対多の関係
上図は、社員マスタと社内サークルマスタは「多対多の関係」であることを表現している例です。社員は0以上サークルに所属することができ、1つのサークルには0名以上の社員がいます。
「多対多の関係」でも、「0以上」「1以上」「0以上1以上どちらも表現しない(あいまい)」という表現が可能です。
0または1対多の関係
上図は、社員マスタと社内サークルマスタは「0または1対多の関係」であることを表現しています。上述の「多対多」の例との違いは、社員は1つのサークルにしか所属できないことです。所属社員が0名のサークルもあります。
4.2.IDEDF1X記法
IDEF1X記法は、以下の記号を組合せて表現します。IE記法に比べて細かい表現ができる事が特徴です。
記号 |
意味 |
なし(エンティティと直線を結ぶ) |
1 |
● |
0以上 |
●P |
1以上 |
●Z |
0または1 |
●N |
指定した数。仕様に応じてNに実数を代入 |
●N-M |
実数の範囲指定。仕様に応じてNとMに実数を代入 |
◇ |
0または1※非依存リレーションでのみ使用 |
これらの記号を組みあわせて様々な表現ができます。下記は代表的な例です。
(エンティティはIE記法と同じ例を使っているため、エンティティの説明は割愛します。)
1対1の関係
IDEF1X記法では、「1対1の関係」はエンティティ同士を直線で結ぶことで表現します。
1対0以上の関係
IDEF1X記法では、「1対0以上の関係」は直線と黒丸(●)で表現します。
「0以上」または「1以上」を表現しないあいまいな記法はIDEF1X記法ではありません。
1対1以上の関係
IDEF1X記法では、「1対1以上の関係」は直線、黒丸(●)とPで表現します。
多対多の関係
IDEF1X記法では、「多対多の関係」はエンティティ双方を黒丸(●)で表現します。
上図は、「双方1以上の多対多の関係」を表現した例です。「●Z」や「●N-M」で他の「多対多の関係」を表現することもできます。
0または1対多の関係(非依存リレーションの場合)
上図のように非依存リレーションで「0または1対多の関係」を表現するときは、ダイヤ(◇)を使います。「●Z」でも「0または1」を表現できますが、「●Z」を使えるのは依存リレーションの時のみです。
5.ER図の書き方-5つの作成ステップ-
この章では、若手エンジニア向けにER図の作成ステップについて詳しく解説します。
ER図に落とし込むのは最後の5ステップ目です。4ステップ目までは何度も修正が入るため、手書きなど修正しやすい方法で行うと工数を減らすことができます。
設計メンバーで集まってホワイトボードで概要を一気に作り上げるのも効果的な方法です。
重要なのは、いきなりER図を書き始めるのではなく、大枠から徐々に詳細に落とし込んでいくことです。これはER図に限らずシステム設計全般に言えることです。
5.1.システムシナリオを確認する
ER図を書くには、システムシナリオが明確になっている事が大前提です。ユースケース図やユースケース記述、アクティビティ図などをインプットとしてER図を設計していきます。
特に、ユースケース図とユースケース記述は初回のER図作成で大いに活躍します。これらの設計が終わってなければER図を書く段階ではありません。まずはシナリオ設計から始めましょう。下図は、ECサイトでの注文を整理したユースケース図とユースケース記述の例です。
ユースケース図の例
ユースケース記述の例
5.2.エンティティを洗い出す
ユースケース図やユースケース記述、アクティビティ図などをもとにエンティティを洗い出します。下図は、ユースケースとユースケース記述からエンティティを洗い出している例です。
ユースケース図からのエンティティ洗い出し
ユースケース記述からのエンティティ洗い出し
エンティティは「データのまとまり」と前述しました。上図では、ユースケース図とユースケース記述から「顧客」「注文」「商品」「お届け先」「請求先」「配送方法」「決済方法」という7つのエンティティが洗い出せました。
このように、しっかりシナリオ設計を行っていれば簡単にエンティティを洗い出すことができます。ユースケース図の「アクター」や「ユースケース」、アクティビティ図の「処理」などがエンティティになりえます。後工程の業務で必要なデータや保管しておくべきデータに着目しましょう。
5.3.エンティティをマスタ系とトランザクション系に分ける
データは、大きく「マスタ系」と「トランザクション系」に分かれます。アトリビュートを洗い出す前に、マスタ系とトランザクション系に整理しておきましょう。マスタ系とトランザクション系を整理する過程で、エンティティが合体することもよくあります。例えば、下図では「お届け先」「請求先」「配送方法」「決済方法」が、トランザクションとして1つのエンティティになりそうです。
5.4.アトリビュート(属性)を洗い出す
次に、エンティティの中のアトリビュート(属性)を洗い出します。アトリビュートの洗出しは、画面設計書や類似システムの画面を元に行うと効率的です。画面項目がアトリビュートになりえます。
例えば、ECサイトでの受注に関するアトリビュートを洗い出す場合、ECサイトの購入画面を参考にすると容易に洗出しができます。ECサイトによってサービスレベルが異なりますので、複数のサイトを見ると良いでしょう。
Yahooショッピングの例
そして、下図のようにアトリビュートを整理します。
アトリビュートを整理した例
実際はもっとアトリビュートがありますが、分かりやすさを優先しここでは割愛します。
5.5.ER図に落とし込む
これまでの4ステップの内容が固まったら、リレーションや主キー、外部キーを設計しER図に落とし込みます。注意点はリレーションの詳細(カーディナリティ)です。リレーションは「1対1の関係」「1対多の関係」「多対多の関係」などパターンが決まっていますが、どのリレーションになるかは業務シナリオによって変わります。
業務フローやアクティビティ図をもとに当てはめながら設計を進めましょう。システムシナリオを理解していることが大前提です。これでER図ができました。後は設計チームでレビューを重ねてブラッシュアップしていきます。
この章では、ER図の作成ステップについて詳しく解説しました。5つのステップを踏むことで、ER図を簡単に作成できることが理解できたのではないでしょうか?
繰り返しになりますが、システムの設計は大枠から徐々に詳細に落としていくことが基本です。しっかりこのステップを覚えておきましょう。
6.無料で使えるER図作成ツール3選
この章では、数あるER図作成ツールの中から、無料で使えるおすすめのER図作成ツールを3つにしぼって紹介します。ExcelなどでもER図は作れますが、ツールを使うことで効率的にER図の作成ができます。
例えば、カーディナリティの変更もツールを使えば一瞬で変更可能です。これらのツールはER図の作成だけでなく、テーブル定義書の作成やDDLの出力など多くの機能を備えています。生産性を上げるためにER図作成ツールを積極的に活用しましょう。
6.1.高機能ツールが欲しいなら「A5:SQL Mk-2」
A5:SQL Mk2は、無料で使える高機能なデータベース設計ツールです。ER図の作成だけでなく、テーブル設計など様々な設計をすることができます。設計結果をもとにDDLを出力することも可能です。既存のデータベースからER図をリバース作成することもできます。無料のツールを使いたいなら、A5:SQL Mk2をまずは使ってみると良いでしょう。ただし、高機能なため初心者には使い勝手が良くないです。
6.2.Eclipseユーザーなら「ER MASTER」
ER MASTERは、A5:SQL Mk2と並んで人気の高い無料データベース設計ツールです。統合開発ツールのEclipseにアドオンして使います。とにかく高機能であり、無料であることが驚きです。EclipseユーザーならER Master一択で良いでしょう。Eclipseが必須となるため、Eclipseを使いたくないユーザーはA5:SQL Mk2を使いましょう。
6.3.初心者はCacooがおすすめ
Cacooは、クラウド型の図形作成ツールです。ER図だけでなく、UMLやフローチャート、ワイヤーフレームなど様々な図を作成することができます。直感的な操作が特徴で、簡単にER図を作成することができます。
カラーや線の太さ、様々なオブジェクトの配置などが可能で、デザイン性も優れています。ただし、テーブル定義の作成やDDL出力はできません。ER図のみ簡単に作りたいユーザー向けです。
7.まとめ
この記事では、ER図の基礎知識から5つの作成ステップまで、若手エンジニアが抑えておくべきER図の全知識をどの記事よりも分かりやすく解説してきました。ER図の理解が進んだのではないでしょうか。
ER図の設計を上手くなるには、「基本的なER図のパターン」を頭にインプットすることも重要です。他システムのER図や書籍を参考に日々学びましょう。基幹系システムの基本的なER図のパターンなどは、多くの書籍で解説されていますので参考にして下さい。次は、この記事を参考にER図を書いてみましょう。
おすすめの書籍:グラス片手にデータベース設計 会計システム編
おすすめの書籍:グラス片手にデータベース設計 生産管理システム編
おすすめの書籍:グラス片手にデータベース設計 販売管理システム編