データベーススペシャリスト 2009年 午前2 問04
問題文
業務ルールが次のように与えられている。これに基づきE-R図を作成した。適切なE-R図はどれか。ここで、1*は1対多の関連を表す。
〔業務ルール〕
この会社は語学教材を販売している。営業員は一つ以上の担当地域が定められており、担当地域の1人以上の顧客から受注を得る。一つの地域を1人以上の営業が担当する。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
E-R図の多重度【午前2解説】
正解の理由
与えられた業務ルールを関係(多重度)に落とし込むと、次が必要です。
・各営業員は1つ以上の「担当地域」を持つ(営業員 1 対 担当地域 *)
・一つの地域を1人以上の営業が担当する(地域 1 対 担当地域 *、つまり「担当地域」は営業員と地域をつなぐ結合実体)
・顧客は地域に属し、その顧客から受注が発生する(顧客 * 対 地域 1、顧客 1 対 受注 *)
これらを満たしている図は選択肢ウのみです。ウでは「担当地域」が営業員と地域の双方と1対多で結ばれ(営業員側1−担当地域側*、地域側1−担当地域側*)、顧客は地域に所属(顧客側*−地域側1)、受注は顧客と営業員の双方に多対一でつながる構成(顧客1−受注*、営業員1−受注*)になっており、業務ルールを矛盾なく表現しています。
・各営業員は1つ以上の「担当地域」を持つ(営業員 1 対 担当地域 *)
・一つの地域を1人以上の営業が担当する(地域 1 対 担当地域 *、つまり「担当地域」は営業員と地域をつなぐ結合実体)
・顧客は地域に属し、その顧客から受注が発生する(顧客 * 対 地域 1、顧客 1 対 受注 *)
これらを満たしている図は選択肢ウのみです。ウでは「担当地域」が営業員と地域の双方と1対多で結ばれ(営業員側1−担当地域側*、地域側1−担当地域側*)、顧客は地域に所属(顧客側*−地域側1)、受注は顧客と営業員の双方に多対一でつながる構成(顧客1−受注*、営業員1−受注*)になっており、業務ルールを矛盾なく表現しています。
解法ステップ
- 業務ルールを読み、対象となる実体と関係を抽出する。今回は「営業員」「地域」「担当地域」「顧客」「受注」「受注明細」「教材」。
- 各ルールを多重度に変換する。
- 営業員は一つ以上の担当地域が定められている → 営業員側1 − 担当地域側*(営業員 1:* 担当地域)
- 一つの地域を1人以上の営業が担当する → 地域側1 − 担当地域側*(地域 1:* 担当地域) → 「担当地域」は営業員と地域を結ぶ結合実体(多対多を仲介)
- 顧客は地域に所属する(顧客側* − 地域側1)および受注は顧客から発生(顧客側1 − 受注側*)
- 受注は営業員が得る(営業員側1 − 受注側*)
※よく整理すると:顧客側*−地域側1、地域側1−担当地域側*、営業員側1−担当地域側*(これらが満たされることが必須)
- 選択肢ごとに上記の多重度と照合する。すべてのルールを同時に満たすのが正答。
選択肢別の誤答解説
-
ア:一見まとまっているように見えますが、アでは「担当地域―顧客」が多対多(両端*)になっています。業務ルールは顧客が地域に属し、その地域を担当する営業員(=担当地域で結合された営業員)から受注を得るという構造を示唆しており、顧客と担当地域が直接多対多で結ばれるのは業務ルールから過剰なモデル化です。正しくは顧客は地域に属する(顧客*−地域1)であり、担当地域は営業員と地域を結ぶ仲介です。したがってアは顧客と担当地域の関係を誤っているため不適切です。
-
イ:顧客―営業員が多対1(顧客側*、営業員側1)になっています。これは「顧客が特定の営業員に属する」というモデルで、問題文の「営業員は1つ以上の担当地域が定められており…」というルールを反映していません。さらに、受注と担当地域を直接結ぶなど関係の割付が不自然で、営業員・地域・担当地域の関係を正しく仲介していません。業務ルールどおりに「担当地域」が営業員と地域を仲介する形になっていないため誤りです。
-
エ:地域と受注を直接結んでいます(地域1 − 受注*)。受注は顧客から発生し、受注がどの顧客のものかを表現する必要があるため、受注と顧客の関係(顧客1 − 受注*)が必須です。エは顧客と受注の関係の取り扱いが不適切または不足しており、また担当地域と顧客の方向(どちらが1でどちらが*か)が業務ルールに沿っていない部分があります。結果としてエも業務ルールを満たしていません。
(以上から、すべての業務ルールを矛盾なく表現しているのが選択肢ウであることが分かります。)
よくある誤解
- 「担当地域」と「地域」を混同して、担当地域が顧客の所属先だと解釈しがちです。今回の要件では顧客は地域に属し、担当地域は営業員と地域の担当割り当て(=仲介)です。
- 多重度の向き(どちらが1でどちらが*か)を見落とし、片方だけをチェックして正誤判断してしまう。業務ルールは常に両端の意味を確認する必要があります。
- 多対多が見えたら即「間に仲介が必要」と考えるが、業務ルールで「顧客はどの単位に属するのか」を確認してから仲介の有無を判断すること。
補足コラム
- 担当地域は典型的な「結合実体(連関エンティティ)」です。業務上「一つの地域を複数の営業が担当する」「営業は複数の担当地域を持つ」といった多対多の関係を関係(エッジ)だけで表すと冗長または曖昧になるため、担当地域のように明示的な実体を置いて外部キーで結ぶのが設計上の王道です。
- リレーショナル実装では、担当地域テーブルが (担当地域ID, 営業員ID, 地域ID, 必要なら担当開始日など) を持ち、営業員と地域の多対多を解消します。受注テーブルは (受注ID, 顧客ID, 営業員ID, 日付, 合計金額…) のように顧客と営業員を参照します。
FAQ
Q. 顧客が複数の地域に属する可能性は考慮すべきか?
A. 問題文では「顧客は地域に属する」と読み取れるため顧客側*−地域側1でモデル化します。要件によっては顧客が複数地域にまたがるケースを別途定義(多対多 + 仲介)する必要があります。
A. 問題文では「顧客は地域に属する」と読み取れるため顧客側*−地域側1でモデル化します。要件によっては顧客が複数地域にまたがるケースを別途定義(多対多 + 仲介)する必要があります。
Q. 受注と担当地域を直接結べないのか?
A. 設計上は可能ですが、業務ルールは「受注は顧客から発生し、営業員が担当地域を通じてその顧客から受注を得る」構造を示唆しているため、受注は顧客と営業員を直接結ぶ方が自然です。受注→担当地域結合を使うと受注と顧客の整合性維持が複雑になります。
A. 設計上は可能ですが、業務ルールは「受注は顧客から発生し、営業員が担当地域を通じてその顧客から受注を得る」構造を示唆しているため、受注は顧客と営業員を直接結ぶ方が自然です。受注→担当地域結合を使うと受注と顧客の整合性維持が複雑になります。
Q. 図に最小/最大(0..1、1..)の情報がない場合は?
A. 本問題の表記は1またはのみですが、実業務で「必須か任意か(最小数)」が重要な場合は最小値も明示して設計します。
A. 本問題の表記は1またはのみですが、実業務で「必須か任意か(最小数)」が重要な場合は最小値も明示して設計します。
関連キーワード: E-R図、多重度、担当地域、結合実体、受注モデリング

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

