IPA 応用情報・高度試験では、ER 図の “エンティティ‐動詞‐エンティティ” から 1:1 や 1:N などの関連記号を選ぶ設問が頻出です。本記事では関連記号の意味と読み取り手順を整理し、過去問に学びながら正解率を着実に高めるコツをやさしく解説します。
基礎知識:ER 図の関連記号と読み方
1. 「カーディナリティ」と「オプショナリティ」を分けて考える
記号 | 意味 | 典型的フレーズ例 |
---|---|---|
1:1 | 双方がちょうど 1 件ずつ | 「対応する」「割り当てられる」 |
1:N | 左が 1、右が 0 ~ 多 | 「持つ」「含む」「所属する」 |
N:M | 双方が多対多 | 「関連する」「紐付く」 |
※ 記号の左右は必ず動詞を書く方向で判断します。主語 → 述語 → 目的語の流れを矢印に置き換えるイメージです。
2. 動詞フレーズから瞬時に推測するコツ
- 「各」「一つの」など数量限定ワードがあれば 1 側を示唆
例:「各社員は1台の PC を割り当てられる」 → 社員 1:1 PC - 複数形・「複数の」が出れば N 側が濃厚
例:「顧客は複数の注文を出す」 → 顧客 1:N 注文 - 「結び付く」「関連付ける」は多対多の典型語
(中間テーブルを意識すると覚えやすい)
3. 必須/任意(実線・破線)の判定ポイント
線種 | 意味 | ヒントワード |
---|---|---|
実線 | 0 ではなく必ず 1 以上 | 「必ず」「必須」「常に」 |
破線 | 0 件も許容(任意) | 「場合がある」「未登録」「まだ」 |
数量と線種の 2 軸でカーディナリティは最大 6 パターン。設問はここを揺さぶるので、数量 → 線種の順に二段階推論するとミスが減ります。
4. 図でイメージを固める
erDiagram
顧客 ||--o{ 注文 : "発注する"
注文 ||--|{ 注文明細 : "含む"
- 顧客 ||--o{ 注文:顧客は 0 ~ 多の注文を発注(1:N、顧客側必須/注文側任意)
- 注文 ||--|{ 注文明細:注文は 1 ~ 多の明細を含む(1:N、双方必須)
5. チェックリスト(問題を読む前にセットで思い出す)
- 主語‐動詞‐目的語を矢印で書き換える
- 数量ワードで 1/N を決定
- 必須語で実線/破線を決定
- 不自然な選択肢を先に除外(時短)
過去の出題例と詳解
例題①:平成22年春 午前 問29「顧客‐銀行‐口座」
設問要旨
「顧客は一般に複数の銀行に預金する」という一文と ER 図が与えられ、口座表の外部キー構成を答える問題。
思考フロー
- 主語→目的語の数を抽出
「顧客は…複数の銀行に…」= 顧客 N:M 銀行。多対多の可能性を疑う。 - 中間エンティティの有無を確認
ER 図に「口座」が描かれている → 顧客 1:N 口座 N:1 銀行 に分解。 - “多” 側が外部キー
よって 口座表には銀行番号と顧客番号の 2 本の外部キーが入る。
コツ
- 業務文に「複数の…」が 2 回出たら 多対多 or 連関エンティティ をまず疑う。
- カーディナリティは「中間表を挟めば必ず 1:N × N:1」になる、と覚えておく。
例題②:平成19年春 午前 問64「営業員‐地域‐担当地域」
設問要旨
営業員と地域を結ぶ ER 図の空欄 a〜d に入るエンティティ名を選ぶ問題。
思考フロー
- 数量ワードチェック
・「営業員は複数の担当地域をもつ」→ 営業員 1:N 担当地域
・「1 つの地域を複数の営業員が担当する」→ 地域 1:N 担当地域
→ 担当地域が連関エンティティだと確定。 - ER 図の矢印を決める
営業員→担当地域:1←N / 地域→担当地域:1←N - 空欄を埋める
連関エンティティを挟んだ「営業員‐担当地域‐地域」が完成。
コツ
- 多対多を見抜くキーワード:「複数の A が複数の B に…」は 99 % 多対多。
- 連関エンティティがあれば両端は必ず 1:N。数を数え直す必要なし。
まとめ:過去問に共通する 3 つの視点
- 数量語(各/複数)→ カーディナリティ
- 必須語(必ず/常に)→ 実線か破線か
- 多対多キーワード → 連関エンティティを探す
つまずきポイント徹底解説
1. 「方向」と「最小カーディナリティ」の取り違え
方向(矢印)は主語→目的語で固定。
最小カーディナリティは「必ず/場合がある」で判断。
顧客は【0 以上】の注文を出す → 1|0…N
注文は【必ず】1 人の顧客に属する → N|1
矢印を逆に描いても 1|0…N が 0…N|1 には絶対に入れ替わらない点が落とし穴。
2. 似た動詞(登録する/管理する/持つ)の微差
動詞 | 暗示する記号 | 覚え方 |
---|---|---|
登録する | 1:N(登録側が N) | レコードが増えるイメージ |
管理する | 1:N or N:M | 主体の立場で変わる |
持つ (have) | 1:N が大半 | 所有は多側が「持たれる」 |
Tip: 動詞を「データが増える向き」で捉えると 1/N 判定が速い。
3. 概念 ER と論理 ER で記号が変わる罠
- 概念 ER:ビジネスルール優先 → 例「社員は部署に所属する」→ 部署 1:N 社員
- 論理 ER:実装制約優先 → 中間テーブルを挟むと 1:N × N:1 に分解
試験では「ER 図は論理モデル」と明示されることが多いので、連関エンティティの有無を必ずチェック!
4. “ダミー値” 想像で 0/1 を決める時短テク
- 問題文を読み、「まだ登録していないケース」を頭に思い描く。
- そのケースが成立 → 最小値 0(破線)
- 成立しない → 最小値 1(実線)
例:「注文は必ず 1 つ以上の明細を含む」→ 明細 0 件の注文を想像 → NG → 実線。
今後の出題予想と練習問題
1. 出題トレンドを読む
- クラウド/SaaS 時代の ER 図
マルチテナント構成(Tenant
エンティティ)が追加され、ユーザ 1:N テナント N:1 データ など三段構造が問われるケースが増加。 - JSON 型列 vs. 正規化
RDB に JSON を格納する設計と従来の正規化テーブルを比較させる問題が、令和 6 年春 SC 午前で初出。 - ガバナンス視点の制約
「EU 居住者は必ず PII 管理テーブルと連携」など、地域・法規制をヒントに最小カーディナリティを選ばせる傾向。
2. 予想練習問題(2 題)
Q1. マルチテナント SaaS
テナントは複数のユーザを含む。ユーザは 0 個以上のプロジェクトに参加し、プロジェクトは必ず 1 つのテナントに属する。
- A: テナント 1:N(実線) ユーザ
- B: ユーザ N:M(破線) プロジェクト
- C: テナント 1:N(実線) プロジェクト
Q2. GDPR 準拠データ管理
顧客は 1 つの国に居住する。EU 域内の顧客は必ず PII 管理テーブルに登録されるが、その他の顧客は登録されない場合もある。
- 顧客 1:N(実線) 国
- 顧客 1:0 or 1(破線) PII 管理
派生語・関連キーワード
カテゴリ | キーワード | 補足メモ |
---|---|---|
制約 | 外部キー(FK)、参照整合性、ON DELETE CASCADE | ER 記号=実装制約の裏付け |
正規化 | 第 3 正規形、非正規化、スノーフレーク | カーディナリティ決定前に設計パターンを確認 |
クラウド | マルチテナント、シャーディング、データアイソレーション | “Tenant” エンティティが頻出 |
法規制 | GDPR、個人情報保護法、データローカリティ | 0/1 判定に影響 |
ER 記法 | Crow’s Foot、IE 記法、UML クラス図 | 記号の形状違いに注意 |
検索ヒント: "Crow's Foot" カーディナリティ
や マルチテナント ER 図
で画像検索すると、動詞フレーズと記号のセットを視覚学習できます。
まとめ
- 数量語 → カーディナリティ → 線種
主語‐動詞‐目的語を矢印に置き換え、数量語で 1/N を、必須語で実線/破線を判定する 2 段ステップが最速・最少ミス。 - 多対多キーワードは “連関エンティティ” を即検索
「複数の A が複数の B に…」が出た瞬間、中間表を疑い 1:N × N:1 に分解する――試験頻出の鉄板パターン。 - 過去問+ダミー値想像法で実戦耐性を付ける
問題文で “未登録ケース” を想像し 0/1 を即断するクセを付けると、最小カーディナリティの迷いが激減。新傾向(マルチテナント・法規制)も同ロジックで突破可能。
学習ロードマップ:
- 本記事で扱った代表 4 題を紙に書いて手解き
- Crow’s Foot 記号付きで自分の業務ドメインを 3 例 ER 図化
- JSON 型列 or マルチテナントの応用問題を自作し、解説まで書く