最低限押さえておくべきER図の書き方

 2020.06.25  株式会社システムインテグレータ

ER図(Entity Relationship Diagram)とはデータベース設計における代表的な設計図のことです。最近ではデータベースがクラウドサービス化されたことでデータベースを意識しない開発も可能となったことから、若手のエンジニアの中には「ER図を知らない」というエンジニアも増えてきているのではないでしょうか?そこで、ER図をはじめて書く人向けに最低限おさえて置くべきポイントをまとめました。

ER図を書く理由

そもそも何故ER図をつくる必要があるのでしょうか?システム構築においてはER図をつくらず、いきなりExcelでテーブル設計書を作ったり、設計書自体を作らず物理テーブルを構築することもできます。実際、小規模な開発ではER図はなくても問題ないと思います。一方、ER図が必要なのは基幹業務のリプレイスなどの大規模な案件では必須だと思います。なぜなら、テーブル数が多くなればなるほど、不整合が起こるリスクや、プログラマが仕様を理解できない、または勘違いすることで後戻りによるコストが増大してしまうからです。ER図を作るメリットは「システム全体の構成が俯瞰でき、品質の高いデータベースおよびプログラムが製造できること」です。そのような後戻りが発生してしまうような案件ではER図は必須と言えるでしょう。

なお、システムの設計手法としては他にもUMLなどの技法がありますが、ER図はDOA(データ中心アプローチ)の技法であり、このように作成したER図がそのまま物理データベース上に変換できることから、ER図はデータベース設計におけるデファクトスタンダードとなっています。

ER図の基本要素はエンティティとリレーションシップの2つ

ER図のEはエンティティ(モノ)の略で、Rはリレーションシップ(関連)の略です。つまり、ER設計ではモノ(エンティティ)とリレーションシップ(関係)でシステムを表します。例として「顧客が商品を注文する」という処理を考えた場合は「顧客」や「商品」がエンティティ、「注文する」がリレーションシップとなります。これをER図で表すと以下のようになります。

1

図1. ER図の例

データベース開発に関するお役立ち資料

ER図は段階的に書く

図1のようなエンティティとリレーションだけを書いた状態のER図は「概念モデル」と呼ばれますが、さらに肉付けを行いながら、「論理モデル」「物理モデル」へ変換をしていきます。それぞれのモデルの違いは以下の通りです

概念モデル

最初に事業全体における「もの」や「できごと」の関連を大まかに荒らしたものです。システムに必要なエンティティとリレーションを列挙します。リレーションシップには「依存リレーションシップ」、「非依存リレーションシップ」「多対多リレーションシップ」の違いがあります。これらの違いについてはこちらの記事に詳しく書いていますのでご覧ください。

2

図2.概念モデル

論理モデル

概念モデルに肉付けして具体的にあらわしたものが、論理モデルです。具体的には属性(アトリビュート)

3

図3.論理モデル

アイデンティファイア(主キー)、外部キーといった要素を追加します。また、リレーションの多重度となるカーディナリティの設定も行います。しかし、この時点でも物理データベース向けの設計は行いません。データベースに依存しないレベルで具体的したものが論理モデルと思っていただくと良いでしょう。

物理モデル

4

図4.物理モデル

例えば、Oracle Database等に即したアルファベットにする、データ型を追加する作業となります。その他、多対多リレーションシップだった場合は、仲介エンティティの作成も行います。図1も多対多リレーションシップとなっていますので、以下のように「注文」というエンティティを設けて変換します。

5

図5.仲介エンティティ

このようにER図では、どのような大規模なシステムであってもこのように段階的に考えながら書くことでデータベース設計ができるようになっています。

ER図の表記法の書き方

またER図にはいくつかの表記法がありますが代表的なのはIDEF1X(アイデフワンエックス、Integreation Definition 1Xの略)表記とIE(アイイー、Information Engineering)表記の2つだけですのでこの2点だけ抑えておきましょう。図5の左がIDEF1X、右がIE表記の例です。

6

図6.IDEF1XとIE表記の例

この2つの違いはリレーションの書き方です。IDEF1Xは黒丸で書くのに比べ、IE表記ではリレーションの子エンティティ側が鳥の3本足のように書きます。呼ばれています。また、論理モデル作成時に設定する「カーディナリティ」の書き方が異なります。

カーディナリティ IDEF1X表記 IE表記
0以上 なし なし
1以上 P なし
0または1 Z なし
定数n n n

表1.IDEF1XおよびIEのカーディナリティ表記

ER図から物理データベーススクリプトの書き方

ER図の物理モデルを作成後は、この情報を元に物理データベースのスクリプトを構築します。構築にあたってはER図と物理データベース項目の対応関係を抑えておきましょう。代表的なER図の要素と物理データベース項目の関係は以下になります。

ER設計 物理データベース
エンティティ名 テーブル名
属性(物理名) カラム名
アイデンティファイア 主キー制約
リレーション 外部キー制約

表2.ER図と物理データベースの関係

この関係を把握すれば、ER図をもとに物理データベースのスクリプト(DDL)を書くことが可能です。例として、図7のER図をもとに書いたスクリプトは図8の通りです。

7

図7.ER図(物理モデル)のサンプル

CREATE TABLE EMP
(
  EMP_CODE            VARCHAR2(10),
  EMP_NAME            VARCHAR2(50)
)
/
ALTER TABLE EMP
  ADD(CONSTRAINT PK_EMP PRIMARY KEY (EMP_CODE) USING INDEX)
/
CREATE TABLE COMMODITY
(
  COMMODITY_CODE         VARCHAR2(10),
  COMMODITY_NAME         VARCHAR2(100),
  PRICE                NUMBER(8,0)
)
/
ALTER TABLE COMMODITY
  ADD(CONSTRAINT PK_COMMODITY PRIMARY KEY (COMMODITY_CODE) USING INDEX)
/
CREATE TABLE PURCHACE
(
  EMP_CODE                VARCHAR2(10),
  COMMODITY_CODE        VARCHAR2(10)
  PURCHACE_NUM          NUMBER(3,0),
  PURCHACE_DATE          DATE,
)
/

図8.スクリプトの変換例

他にもテーブル定義書などのドキュメントに変換することが可能です。

ER図を見やすくする書き方

また、エンティティの数が多くなるほど、ER図が見づらくなるという問題があります。そこで、当社で実践している3つの書き方をご紹介します。

親エンティティは左上から書く

すべてのエンティティと一番親となるエンティティを左に書き、子エンティティを右、孫エンティティをさらに右と書くことで親子関係がわかりやすくなります。さらに、同じ親をもつ、つまり兄弟エンティティは上下に並べるようにすると、ツリー構造のようになり、リレーションシップが重ならなくなります。er-tech1

図9.親エンティティを左から書いた例

サブシステムごとにシート分割する

大規模なシステムの場合はすべてのエンティティが一画面に入りきらなくなり、管理しづらくなってしまいます。もし、そのような場合はグループ単位で別ファイルまたはExcelやVisio等であれば別シートに分割を行います。ERPシステムであれば「売掛」「買掛」のようにサブ機能単位に分割するのがベターですが、他に見やすいと思うルールであれば独自の分割ルールでも問題ないでしょう。

er-tech2

図10.ER図をサブ機能ごとに分割した例

リソース系エンティティとイベント系エンティティで色分けする

エンティティには最終的にマスタ系のテーブルとなる「リソース系エンティティ」とトランザクションを管理するテーブルとなる「イベント系エンティティ」の2種類に分かれますが、これが混ざったER図を理解しづらくなります。そこで、これらのテーブルを色分けしておくとぐっとわかりやすくなります。実際に色分けした例は図11です。リソース系エンティティを緑、イベント系エンティティを黄色にしています。er-tech3

図11.ER図をリソースエンティティとイベントエンティティで色分けした例

今回はER図の書き方のポイントとなる部分を抜粋してご紹介しましたが、ER図の書き方についてより詳しくまとめた「データベースの基礎が身につく ER図の書き方講座」という資料も公開しています。ご興味があればぜひあわせてお読みいただけたらと思います。

新規CTA

新規CTA
新規CTA

RELATED POST関連記事


RECENT POST「OBERをトコトン極める」の最新記事


この記事が気に入ったらいいねしよう!
OBトライアル
ブログ購読のお申込み

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事