ER図とは(全体像)
ER図は、「Entity-Relationship Diagram」の略。データ(とくにデータベース)の構造を、図で表すものだ。「だれが・何を・どう持っているか」というデータの形を、設計の段階で整理するのに使う。
使う部品は、大きく2つ。
- エンティティ(実体) … データのまとまり(たとえば「顧客」「注文」)。表(テーブル)に近いイメージ。
- リレーションシップ(関連) … エンティティどうしの結びつき(たとえば「顧客が注文する」)。
ここで大事なのが、ER図は「設計の段階」のものだということ。実際にデータベースを作る前の、論理的な設計図にあたる。
詳しく:3種類の関連と多対多
ここが心臓部。関連には、数の対応(カーディナリティ)がある。3種類を表で押さえよう。
関連の3種類(カーディナリティ)
| 種類 | 意味 | 例 |
|---|---|---|
| 1対1 | 片方に対して、相手も1つ | 1人に対して1つの社員証 |
| 1対多 | 片方に対して、相手が複数 | 1人の顧客に、複数の注文 |
| 多対多 | 互いに複数ずつ結びつく | 複数の学生と、複数の講座 |
とくに出るのが1対多。「1人の顧客に、注文がたくさん」のような関係だ。
そして一番のひっかけが、多対多(N:M)。これは、そのままでは、うまくデータベースを作れない。そこで、間に「中間テーブル」を作って、多対多を「1対多」が2つの形に分ける。たとえば「学生」と「講座」の多対多は、「受講」という中間テーブルを置いて整理する。「多対多をそのまま作る」と思い込むと誤りになる。
わかりやすく言い換えると
身近なたとえで整理しよう。
ER図は、「データの登場人物(実体)と、そのつながり(関連)を描いた相関図」のイメージ。だれとだれが、どう結びついているかを図にする。
関連の3種類は、「1対1(夫婦)」「1対多(親と複数の子)」「多対多(複数の友だちどうし)」のイメージ。つまり、結びつきの数の違いだ。
多対多を中間テーブルで分ける、というのは、「複数どうしの関係を、間に名簿を置いて整理する」こと。つまり、そのままでは扱いにくいので、間に1枚はさんで1対多×2にする、ということだ。
試験のツボ
🔴 一番出る:ER図の正体
①実体(エンティティ)と関連(リレーションシップ)でデータの構造を表す図
②データベースを作る前の、論理的な設計図
🔴 次に出る:関連の3種類
①1対1・1対多(最頻出)・多対多
②1対多は「1人の顧客に複数の注文」のような関係
🟡 押さえると安定:多対多の扱い
①多対多(N:M)は、そのままではうまく作れない
②中間テーブルを置いて、1対多が2つの形に分ける
よくある間違い
①「多対多(N:M)の関連は、そのままデータベースに作れる」→ ✗ 多対多は、中間テーブルを置いて、1対多が2つの形に分ける。
②「ER図は、実際に動くデータベースそのものだ」→ ✗ ER図は、データベースを作る前の論理的な設計図(設計段階のもの)。
③「1対多とは、片方に対して相手も必ず1つだけの関係だ」→ ✗ 片方に対して相手が複数なのが1対多。相手も1つなのは1対1。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(ER図の正体)
ER図に関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみである
- 実体(エンティティ)と関連で、データの構造を表す設計の図である
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指している
- 完成したシステムを宣伝して、より多く売るための広告活動のことである
解答は 2 だよ。
ER図は、実体(エンティティ)と関連で、データの構造を表す設計の図だよ。データの登場人物とつながりを描くんだ。
選択肢1は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✓ | 実体と関連でデータ構造を表す図で正しい |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(関連の3種類)
ER図の関連の種類(カーディナリティ)として、最も適切なものはどれか。
- 1対1・1対多・多対多という、関連の数の対応の3種類である
- 売上・費用・利益という、会社の決算のときに使う3つの数字である
- 朝・昼・夜という、1日の3つの時間帯のことを指している
- 北・南・西という、3つの方角のことを指している言葉である
解答は 1 だよ。
ER図の関連の種類は、1対1・1対多・多対多という、関連の数の対応の3種類だよ。とくに1対多がよく出るね。
選択肢2の決算の数字、選択肢3の時間帯、選択肢4の方角は、いずれも誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 1対1・1対多・多対多で正しい |
| 2 | ✗ | 決算の数字ではない |
| 3 | ✗ | 時間帯のことではない |
| 4 | ✗ | 方角のことではない |
オリジナル問題3(多対多の扱い)
多対多(N:M)の関連の扱いに関する次の記述のうち、最も適切なものはどれか。
- 多対多は、何もせずそのままデータベースに作れるものだとされている
- 多対多は、社員の給与を計算するためだけに使う関連のことである
- 多対多は、中間テーブルを置いて、1対多が2つの形に分けて表す
- 多対多は、取引先へ請求書を郵送する事務だけに使う関連である
解答は 3 だよ。
多対多は、中間テーブルを置いて、1対多が2つの形に分けるよ。そのままではうまく作れないんだ。
選択肢1の「そのまま作れる」、選択肢2の給与計算、選択肢4の請求書の事務は、いずれも誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | そのままでは作れない |
| 2 | ✗ | 給与計算の関連ではない |
| 3 | ✓ | 中間テーブルで分けるで正しい |
| 4 | ✗ | 請求書の事務の関連ではない |
まとめ
押さえどころ
- 🔴 ER図 = 実体(エンティティ)と関連(リレーションシップ)で、データの構造を表す設計の図。
- 🔴 関連の3種類 = 1対1・1対多(最頻出)・多対多。
- 🟡 多対多の扱い = そのままでは作れず、中間テーブルを置いて1対多が2つの形に分ける。
次に学ぶ
- UML ── 構造や動きを図にする共通の書き方。クラス図はER図と似た構造の図。
執筆: SikakuQuest編集部