ER図の書き方(IE記法)
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
- 社員テーブル
- 社員情報を保存するテーブル
- 所属する会社の id と部署 id を持つ。
- 会社テーブル
- 会社情報を保存するテーブル
- 部署テーブル
- 部署情報を保存するテーブル
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 図の作成が完了しました。
参考
文献
今回使用したエンティティ例などはこちらの文献を参考にしてます
記事
Discussion