ER図とは?書き方とリレーションの表し方
システムの仕様書にER図が出てきたものの、線の先についている記号の意味が分からない。あるいは自分で描こうとして、どこまで書けばよいのか迷う。ER図はデータの構造を示す図ですが、読むだけなら覚えることはそれほど多くありません。この記事では、ER図の基本要素とリレーションの表し方、そして作成手順を整理します。
ER図とは|データ同士の関係を示す図
ER図(Entity Relationship Diagram)は、システムが扱うデータを、まとまりとその関係で表した図です。日本語では実体関連図と呼ばれます。
たとえば通販サイトなら、顧客・注文・商品といったまとまりがあり、「顧客は複数の注文を持つ」「注文には複数の商品が含まれる」といった関係があります。これを図にしたものがER図です。
何のために使うのか
主な用途は3つです。
- 設計の検討:データベースを作る前に、構造の妥当性を確かめる
- 認識のすり合わせ:発注者と開発側で、扱うデータの理解を揃える
- 引き継ぎ:既存システムの構造を、後から入った人に伝える
発注者の立場で関わるのは2つ目が多くなります。自分で描く必要はなくても、提示された図を読んで「この理解で合っているか」を判断できると、手戻りを大きく減らせます。
3つの基本要素
ER図は、次の3つでできています。
エンティティ
データのまとまりです。顧客、注文、商品、社員といった、管理する対象を指します。図の上では四角で描き、中に名前を書きます。
名前は単数形の名詞にするのが慣例です。「顧客たち」ではなく「顧客」、「注文一覧」ではなく「注文」と書きます。1つの四角が、1件分のデータの型を表していると考えてください。
アトリビュート
エンティティが持つ項目です。顧客なら、氏名・メールアドレス・電話番号・登録日などです。四角の中に、エンティティ名の下に並べて書きます。
このうち、その1件を一意に特定できる項目を主キーと呼びます。顧客IDや注文番号がこれにあたり、図の上では下線やPKという記号で示されます。
リレーション
エンティティ同士の関係です。四角と四角を線で結び、その線にどういう関係なのかを示す記号を付けます。ER図で最も重要な部分で、同時に最も読みにくい部分でもあります。
リレーションの3パターン
関係は、両側の件数の組み合わせで3つに分かれます。
1対1
片方の1件に対して、もう片方も必ず1件だけ対応する関係です。社員と社員詳細情報、ユーザーとユーザー設定などが例です。
実は、登場頻度は高くありません。1対1なら同じテーブルにまとめてしまえばよい場合が多いからです。分けている場合は、項目数が多すぎる、参照頻度が大きく違う、権限を分けたいといった理由があるはずです。
1対多
最もよく使われる関係です。片方の1件に対して、もう片方が複数対応します。
「1人の顧客は複数の注文を持つ。しかし1件の注文は1人の顧客にしか紐づかない」。これが1対多の典型です。部署と社員、カテゴリと商品も同じ形になります。
多対多
両方が複数対応する関係です。「1件の注文には複数の商品が含まれ、同じ商品は複数の注文に現れる」という関係です。
ここが重要な点ですが、多対多はそのままではテーブルにできません。間にもう1つテーブルを置いて、「注文―注文明細―商品」のように1対多の関係に分解します。この中間のテーブルを中間テーブルや交差エンティティと呼びます。
実務では、この中間テーブル自体が項目を持ちます。注文明細なら、数量や注文時の価格などです。単なるつなぎ役ではなく、意味のあるデータを持つ存在として扱ってください。
カーディナリティの記法
件数の対応関係をカーディナリティと呼びます。表記にはいくつかの流儀がありますが、現在最も広く使われているのは、線の端の形で示す記法です。
線の端に付く記号は、2つの情報を重ねて表します。外側(エンティティに近い側)が最大値、内側が最小値です。
- 三本に分かれた足のような形:複数対応する(多)
- 線に垂直な短い線:1件である
- 円:0件もありうる(任意)
組み合わせで読みます。円と線なら「0件または1件」、線と足なら「1件以上」、円と足なら「0件以上」です。
実務での読み方
記号を覚えるより、文章に直すのが確実です。線の片方からもう片方へ向かって、「顧客1件に対して、注文は0件以上」と声に出して読みます。逆向きにも同じことをやり、「注文1件に対して、顧客は必ず1件」と確かめます。
両方向きで読むことが大事です。片方だけ見ていると、制約のすれ違いに気づけません。

