🦆

ER図の書き方(IE記法)

2024/02/11に公開

ER 図とは

Entity-Relationship Diagram

RDB の正規化やアプリの機能追加をしていくと DB の構造が複雑になっていく。
それを改善するため、テーブル同士の関係性を分かりやすく図にしたもの。

ER 図を書くことによって、

  • データ構造を視覚的に理解できる
  • 開発者同士のコミュニケーションが改善される
  • DB 保守や変更を容易にする

というメリットもあります。

よく見る以下のような図のこと ↓

用語

ER 図で使用する用語は以下になります。
※分かりやすい図があったので、こちらのサイトから引用させていただいてます。

1. エンティティ

データのかたまりのこと。RDB でいうテーブル。

2. アトリビュート

エンティティの中の属性情報。RDB でいうカラム。

3. リレーション

エンティティ同士の関係を表現する線。
カーディナリティという記号を使用して詳細な関係性を表現する。

4. カーディナリティ

エンティティ同士のリレーション詳細を表現する記号のこと。
記法によって様々なカーディナリティがある。

ER 図の記法

ER 図の記法に関してもいくつか種類がありますが、
現在メジャーなものは以下になります。

  • IE 記法
  • IDEF1X

書き方はほとんど同じですが、カーディナリティの書き方が異なります。

IE 記法

Information Engineering

カーディナリティが特徴的なので「鳥の足」とも言われてます。
名前からも分かりますが、情報工学の分野で活用されている記法なので、
DB 設計以外にも使用されています。

視覚的にも理解しやすく、日本では一般的に IE 記法が多く使用されています。

IDEF1X

Integration Definition for Information Modeling

米国国防省が開発したデータベース設計に特化した記法で、
IE 記法にくらべてより正確にデータモデルを表現することができます。

米国や国際的なプロジェクト、大規模サービスなどで多く使用されています。

IE 記法で書いてみる

日本では主に IE 記法が使用されているので、今回は IE 記法の説明をします。
今回使用するデータベースは以下になります。

テスト DB

  1. 社員テーブル
    • 社員情報を保存するテーブル
    • 所属する会社の id と部署 id を持つ。
  2. 会社テーブル
    • 会社情報を保存するテーブル
  3. 部署テーブル
    • 部署情報を保存するテーブル

1. 社員テーブル

社員 id 会社 id 部署 id 社員名 年齢
A0001 B0001 C0001 山田 30
A0002 B0001 C0002 佐藤 25
A0003 B0001 C0002 鈴木 41
A0004 B0002 C0003 加藤 33
A0005 B0002 C0003 渋谷 28
A0006 B0002 C0004 佐々木 31

2. 会社テーブル

会社 id 会社名
B0001 A 商事
B0002 B 科学
B0003 C 建設

3. 部署テーブル

部署 id 部署名
C0001 開発
C0002 人事
C0003 営業
C0004 経理

書いてみる

1. エンティティとアトリビュートを書く

まずはエンティティとアトリビュートを書く。

2. リレーションを追加

社員テーブルは会社テーブルと部署テーブルの id を持っていて連携をしているので、
エンティティ同士のリレーション(線)を結びます。

3. カーディナリティを追加

テーブル同士がどのように連携しているかのカーディナリティを追加します。

部署テーブルと社員テーブルは「1 対多」となっているので、「ー」と「鳥の足」を追加します。
部署テーブルのレコードが 1 つ決まれば、必ず社員のレコードが 1 以上繋がっているので、
「1 対多(1 以上)」と表記される。

会社テーブルと社員テーブルも同じく「1 対多」となっているので、「ー」と「鳥の足」を追加します。
会社テーブルはレコードが 1 つ決まれば、社員のレコードが複数つながっていますが、1 つも繋がっていない場合があります。
この時、「1 対多(0 以上)」と表記されます。

これで簡易的ですが IE 記法による ER 図の作成が完了しました。

参考

文献

今回使用したエンティティ例などはこちらの文献を参考にしてます

https://www.shoeisha.co.jp/book/detail/9784798124704

記事

https://www.ntt.com/business/sdpf/knowledge/archive_50.html

https://qiita.com/kanfutrooper/items/7ed3f3229a466d641cdb

https://qiita.com/ywenli/items/a53775b8969dd595ef1f

Discussion