本文へスキップ

平成23年度 秋期 ITパスポート試験 問57

この問題の解説と、これまでの解答の記録です。

問57
頻出度★★★

社員数が 50 人で,部署が 10 ある会社が,関係データベースで社員や部署の情報を管理している。“社員”表と“部署”表の関係を示した E-R 図はどれか。ここで,1 人の社員が複数部署に所属することはない。下線のうち実線は主キーを,破線は外部キーを表す。E-R 図の表記は次のとおりとする。 〔表記法〕 [a]——[b] aとbが,1対1の関係であることを表す。 [a]——▶[b] aとbが,1対多の関係であることを表す。 [a]◀——[b] aとbが,多対1の関係であることを表す。 [a]◀——▶[b] aとbが,多対多の関係であることを表す。 社員

社員コード社員名部署コード

部署

部署コード部署名

(社員表:社員コードは実線下線(主キー),部署コードは破線下線(外部キー)。部署表:部署コードは実線下線(主キー)。)

出典 平成23年度 秋期 ITパスポート試験 問57
解説

問 57

  • 不正解ア

    [社員]——[部署] は 1対1 の表記で、社員 1 人ごとに専用の部署が 1 つ対応することを意味します。しかし社員 50 人に対し部署は 10 しかないため、1 人ずつ別々の部署に対応させることはできません。そもそも 1対1 の関係なら両者を 1 つの表にまとめてしまうこともでき、50 人・10 部署という数量前提とも合いません。

  • 不正解イ

    [社員]——▶[部署] は 1対多、つまり社員 1 人に対して部署が複数対応するという読みになります。これは問題文の「1 人の社員が複数部署に所属することはない」に真っ向から反します。矢印の向きを逆に読んでしまったときに選びやすい典型的な誤答です。

  • ウ

    正解 多重度は両方向から数えて決めます。まず「1 人の社員が複数部署に所属することはない」ので、社員 1 人に対応する部署はちょうど 1 つです。逆に社員 50 人に対して部署は 10 しかないため、1 つの部署には複数の社員が所属します。よって 社員:部署 = 多:1、すなわち「多対1」の関係です。〔表記法〕では [a]◀——[b] が多対1 と定義されているので、a に社員、b に部署を当てはめると [社員]◀——[部署] となり、これが選択肢 ウ です。表の構造からも裏づけられます。社員表の部署コードは破線下線=外部キーで、部署表の主キーである部署コードを参照しています。外部キーは「多」側の表が「1」側の主キーを参照する形で置かれるので、社員が多側・部署が 1 側という読み方と一致します。

  • 不正解エ

    [社員]◀——▶[部署] は多対多で、双方向に複数が対応することを意味します。部署から見て社員が複数なのは正しいものの、社員から見て部署が複数になってしまう点が条件に反します。また多対多であれば社員表に部署コードを 1 つ持たせるだけでは表現できず、両者を結ぶ対応表 (連関エンティティ) が必要になるので、示された表の構造とも合いません。

ここがポイント
  • 多重度 (カーディナリティ) は両方向から「相手が何件対応するか」を数えて決める。社員→部署は 1 件 (1 人 1 部署)、部署→社員は複数件 (50 人を 10 部署で分ける) なので 社員:部署 = 多:1。設問の 50 と 10 という件数は、どちらが「多」側かを示すヒントになっている。
  • 1対多 (多対1) の関係では、「多」側の表が「1」側の主キーを外部キーとして持つ。本問では社員表に部署コードが外部キー (破線下線) として入っているので、その時点で社員が多側・部署が 1 側だと判断できる。
  • E-R 図の矢印は暗記した一般則ではなく、問題文で定義された〔表記法〕に従って読む。本問では [a]——▶[b] が 1対多、[a]◀——[b] が 多対1 と定義されているので、矢頭が向いている側が「多」になる。矢頭を「1」側だと思い込むと イ と ウ を取り違える。
用語

解答の記録