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 | |
1 | |
多 |
記号の表記位置は“エンティティAにおけるエンティティBの多重度”の場合は、エンティティBのリレーションシップの接点付近です。
例えば、『ユーザーエンティティにおける投稿エンティティの多重度』の場合は、投稿エンティティのリレーションシップの接点付近に記号を記載します。
多重度(1)
多重度が1の場合は『1』の記号のみで表現します。
例えば、次のER図のユーザーエンティティに対する連絡先エンティティのカーディナリティです。
多重度(0or1)
多重度が0または1の場合は『0』と『1』の記号を組み合わせて表現します。
例えば、次のER図のユーザーエンティティに対する連絡先エンティティのカーディナリティです。
多重度(0以上)
多重度が0以上の場合は『0』と『多』の記号を組み合わせて表現します。
例えば、次のER図のユーザーエンティティに対する投稿エンティティのカーディナリティです。
多重度(1以上)
多重度が1以上の場合は『1』と『多』の記号を組み合わせて表現します。
例えば、次のER図のユーザーエンティティに対する投稿エンティティのカーディナリティです。
明確な表記
カーディナリティはエンティティ同士の関係詳細を表現する重要な要素です。
整合性が求められるデータベースにおいて、特に多重度は明確にする必要があります。
多重度を明確にするとは“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図によってエンティティ同士の関係性がより明確になっています。
例えば、購入エンティティと購入詳細エンティティの多重度から、購入データが存在する場合、購入詳細データが最低でも1つは存在することが分かります。
これは正規形だけでは分からない仕様です。
他にも購入者データは購入データを必ず関係する訳ではなく、購入者データのみが存在するケースがあることも分かります。
このようにER図を使うことで、より明確な設計図を作成できます。
作成ツール
ER図は手書きでも作成できますが、ツールを使うと効率的です。
様々なツールがあり、代表的な無料のツールにdraw.ioなどがあります。
興味がある方は触ってみると良いでしょう。