ER図(IE記法) - データベースの設計図

ER図(IE記法) - データベースの設計図

ER図はデータベースの設計図です。

エンジニアに限らずデータを扱う人はER図を作成できる人が多く、データベースには欠かせない設計図になります。

ここではER図(IE記法)について解説します。

ER図

ER図(Entity Relationship Diagram)はデータベースの設計図です。

ER図は様々な種類があり、それぞれ記法が異なりますが、基本的な考え方は似ています。

一般的に多く使われる種類はIE記法とIDEF1X記法です。

ここではIE記法のER図について解説を進めます。

構成要素

ER図は『エンティティ』・『アトリビュート』・『リレーションシップ』・『カーディナリティ』の4要素によって構成されます。

エンティティ

エンティティはデータのまとまりです。

エンティティはエンティティ名とアトリビュートを持ちます。

エンティティ

関係スキーマで例えると、関係名がエンティティ名、属性がアトリビュートです。

アトリビュート

アトリビュートは属性です。

エンティティの中に記載し、主キー(PK)や外部キー(FK)は属性名の先頭や末尾に表記します。

アトリビュート

リレーションシップ

リレーションシップはエンティティ同士の関係性を示す線です。

関係性の詳細はカーディナリティによって表現します。

リレーションシップ

カーディナリティ

カーディナリティはリレーションシップの詳細を表現する記号です。

リレーションシップについて、一方のエンティティおける他方のエンティティの多重度を表現します。

例えば、次のER図はユーザーエンティティと投稿エンティティの関係性がリレーションシップによって示されています。

不明確なリレーションシップ

この時、1つのユーザーデータに対して、投稿データが“何件関係するか”が多重度です。

IE記法のカーディナリティは『0』・『1』・『多』のいずれか、またはその組み合わせで多重度を表現できます。

多重度 記号
0 カーディナリティ(多重度:0)
1 カーディナリティ(多重度:1)
カーディナリティ(多重度:多)

記号の表記位置は“エンティティAにおけるエンティティBの多重度”の場合は、エンティティBのリレーションシップの接点付近です。

例えば、『ユーザーエンティティにおける投稿エンティティの多重度』の場合は、投稿エンティティのリレーションシップの接点付近に記号を記載します。

カーディナリティ

多重度(1)

多重度が1の場合は『1』の記号のみで表現します。

例えば、次のER図のユーザーエンティティに対する連絡先エンティティのカーディナリティです。

カーディナリティ(多重度:1)

多重度(0or1)

多重度が0または1の場合は『0』と『1』の記号を組み合わせて表現します。

例えば、次のER図のユーザーエンティティに対する連絡先エンティティのカーディナリティです。

カーディナリティ(多重度:0or1)

多重度(0以上)

多重度が0以上の場合は『0』と『多』の記号を組み合わせて表現します。

例えば、次のER図のユーザーエンティティに対する投稿エンティティのカーディナリティです。

カーディナリティ(多重度:0以上)

多重度(1以上)

多重度が1以上の場合は『1』と『多』の記号を組み合わせて表現します。

例えば、次のER図のユーザーエンティティに対する投稿エンティティのカーディナリティです。

カーディナリティ(多重度:1以上)

明確な表記

カーディナリティはエンティティ同士の関係詳細を表現する重要な要素です。

整合性が求められるデータベースにおいて、特に多重度は明確にする必要があります。

多重度を明確にするとは“0を許容するかどうかを明記すること”でもあります。

例えば、次のER図はユーザーエンティティと投稿エンティティのリレーションが示されていますが、双方の多重度が不明確な状態です。

カーディナリティ(不明確な表記)

ユーザーエンティティにおける投稿エンティティの多重度は『多』になっていますが、0または1以上なのか、またその逆についてもです。

そのため、0の許容に応じて0および1の記号を明記することが推奨されます。

カーディナリティ(明確な表記)

作成例

第三正規形の次のデータについて、ER図の例を示します。

購入詳細情報
[PK] 購入ID [PK] 商品ID 購入個数
P0001 I0001 5
P0001 I0002 10
P0001 I0003 1
P0002 I0002 5
P0002 I0003 2
購入情報
[PK] 購入ID 購入日 購入者ID
P0001 2024年03月24日 U0001
P0002 2024年08月25日 U0002
購入者情報
[PK] 購入者ID 購入者 電話番号
U0001 田中 太郎 A9A-1234-5678
U0002 佐藤 一葉 B9B-1234-5678
商品情報
[PK] 商品ID 商品 価格
I0001 りんご ¥150
I0002 みかん ¥80
I0003 メロン ¥2,500

ER図の例

必要に応じて外部キーを設定しました。

ER図によってエンティティ同士の関係性がより明確になっています。

例えば、購入エンティティと購入詳細エンティティの多重度から、購入データが存在する場合、購入詳細データが最低でも1つは存在することが分かります。

これは正規形だけでは分からない仕様です。

他にも購入者データは購入データを必ず関係する訳ではなく、購入者データのみが存在するケースがあることも分かります。

このようにER図を使うことで、より明確な設計図を作成できます。

作成ツール

ER図は手書きでも作成できますが、ツールを使うと効率的です。

様々なツールがあり、代表的な無料のツールにdraw.ioなどがあります。

興味がある方は触ってみると良いでしょう。