ER図とは、データベースのテーブル(Entity)とテーブル同士の関連(Relationship)を図に表したものであり、データベースのテーブル設計に用いられる。ER図において、エンティティは四角形の記号、リレーションは四角形同士を結ぶ線で表現される。
ER図の書き方は、エンティティとリレーションを記号で表して書く。ER図の書き方には、以下に示す2種類がある。
論理モデルのER図の場合、エンティティ(実体)は業務におけるひとまとまりのデータを表している。物理モデルのER図の場合、エンティティはデータベースのテーブルを表す。
エンティティには2種類あり、非依存実体と依存実体に分けられる。
非依存実体とは、他のエンティティに依存せずに存在できるエンティティである。例えば、「顧客」、「商品」及び「注文」の3つのエンティティがある場合、商品を注文したことのない顧客や、顧客に注文されたことのない商品は存在するので、「顧客」及び「商品」は非依存実体である。
非依存実体は四角形の記号で表し、四角形の上にはエンティティ名を記述する。
依存実体とは、他のエンティティに依存して存在するエンティティである。例えば、「顧客」、「商品」及び「注文」の3つのエンティティがある場合、存在しない顧客から注文を受けたり、存在しない商品の注文を受けることはないので、「注文」は依存実体である。
依存実体は角の丸い四角形として記述する。
エンティティを表す四角形の中には属性を記述する。四角形を線で上下に区切り、上には主キーとなる属性名、下には主キーでない属性名を記述する。
外部キー(Foreign Key)となる属性には、属性名の後に「(FK)」という文字を付ける。
リレーションはエンティティ間の関連である。エンティティを表す四角形の間に線を引くことでエンティティを表し、線の横に関連名を記述する。依存実体との関連には実線、非依存実体との関連には破線を使用する。
関連によってつながった実体間には親子関係が成り立ち、子となる実体に結び付けられた線の先には黒く塗り潰した円を記述する。
リレーションには多重度(カーディナリティ)を記述することができる。多重度とは、エンティティ間が何対何でつながっているかということを表現するものである。
リレーションのカーディナリティ(多重度)の書き方には2種類あり、IDEF1X記法とIE記法に分けられる。
IDEF1X (Integration Definition)記法とは、米国標準技術研究所(NIST)が規格化した、データベースの設計に特化したER図表記法である。
IDEF1X記法におけるER図の書き方の例を示す。
子の多重度が0または1の場合、関係線にZ (zero)を記述する。子の多重度が1以上の場合、関係線にP (positive)を記述する。
親の多重度が0または1の場合、関係線に菱形を記述する。
1 対 0または1
1 対 1
1 対 0以上
1 対 1以上
1 対 3
0または1 対 0または1
0または1 対 1
0または1 対 0以上
0または1 対 1以上
0または1 対 3
IE (Information Engineering)記法とは、James Martin氏が提唱したデータベースの設計に特化したER図表記法である。
IE記法におけるER図の書き方の例を示す。
関連の上には、関連の多重度(カーディナリティ)を記述することができる。多重度は、実体間が何対何でつながっているかということを表す。多重度の構文を次に示す。
cardinality ::= [ lower-bound ] upper-bound
lower-bound ::= '○' | '|'
upper-bound ::= '|' | 鳥足
記号 | 意味 |
---|---|
○(白丸) | 0 |
|(関連に交差する棒) | 1 |
鳥足(3本に広がる線) | 多 |
カーディナリティ記号の例を示す。
上記のER図の場合、下限が0で上限が1であるから、Bは0か1である。
上記のER図の場合、下限が0で上限が多であるから、Bは0以上である。
上記のER図の場合、下限が1で上限が1であるから、Bは1である。
上記のER図の場合、下限が1で上限が多であるから、Bは1以上である。
ER図には2つのモデルが存在する。
それぞれのモデルによって、多対多のリレーションの書き方が異なる。
論理モデルとは、システム化する業務のエンティティとリレーションを実装技術に依存しない形で行うモデリングである。
たとえば、ひとつのプロジェクトに複数の従業員が属し、ひとりの従業員が複数のプロジェクトに属する場合、プロジェクトと従業員は多対多の関係になる。これを論理ER図で示すと次のようになる。
物理モデルとは、実装を考慮してエンティティをRDBMSのテーブルと1対1になるようモデリングしたものである。RDBMSで多対多の関係を表す場合、中間テーブルが必要になるので、これをエンティティとして表現する。
前述の論理ER図を物理ER図で表現すると、次のようになる。
論理モデルのエンティティにおいて、テーブルのキーとなる自然キー(ナチュラル・キー)が存在しても、物理モデルではシステム上の都合で代理キー(サロゲート・キー)を追加することがある。 たとえば、業務で従業員番号を数字3桁で管理していたものが、会社の規模拡大に応じて桁数が増えたり、所属部署を表すアルファベットが頭に付くようになったりすることがある。 この従業員番号(ナチュラル・キー)をそのままテーブルの主キーとしてしまうと、テーブルの主キー変更がたびたび発生してしまう。 そこで、システム上は単純に1からの連番をキーとすることがある。これが代理キー(サロゲート・キー)である。
ER図は JIS (Japanese Industrial Standards) で規格化されていない。
ER図は ISO (International Organization for Standardization) で規格化されていない。
ER図を作成できるツールには次のようなものがあります。
ツール | 説明 |
---|---|
draw.io | 無料で使える図形作成Webサービス |
ERMaster | フリーのEclipseプラグイン |
MySQL Workbench | MySQLのツール |
draw.ioはデータフロー図 (DFD)、フローチャート、UML及びER図などをウェブブラウザ上で作成できるダイアグラム作成ツールである。 作成したDFDはローカルストレージ、Google Drive、Microsoft Sky Drive及びDropboxに保存することができる。 draw.ioを利用するのにアカウントを作成する必要はなく、無料で利用できる。
以下に示すツールでER図を自動生成できる。
MySQL Workbench とは MySQL の管理ツールで、Oracle が提供している。MySQL データベースとの接続、サーバの起動及びサーバの停止等を GUI で操作することができる。OS は Microsoft Windows、Ubuntu Linux、Red Hat Enterprise Linux、Oracle Linux、Fedora 及び macOS に対応していて、ソースコードも提供されている。
MySQL Workbench には、データベース情報からER図とテーブル定義書を作る「リバースエンジニアリング (Reverse Engineering)」機能がある。メニューの「Database」から「Engineering」を選択して、ウィザード形式の質問に答えていくと、既存データベースのER図を自動生成できる。