本文へスキップ

平成30年度 秋期 ITパスポート試験 問85

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

問85
頻出度★★★

関係データベースで管理している“担当社員”表,“地区”表及び“顧客”表を結合して,A表を得た。結合に用いた“顧客”表はどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。 担当社員

社員コード社員名

地区

地区コード地区名

A

顧客コード顧客名社員名地区名代表者名
出典 平成30年度 秋期 ITパスポート試験 問85
解説

問 85

  • 不正解ア

    「顧客コード・顧客名・代表者名」の3列だけで外部キーを一切持たない。これでは「担当社員」表とも「地区」表とも結合できず、A表にある「社員名」も「地区名」も得られない。

  • 不正解イ

    外部キー「社員コード」だけを持つ。「担当社員」表と結合して「社員名」は得られるが、「地区コード」が無いため「地区」表と結合できず、A表の「地区名」を得られない。

  • 不正解ウ

    外部キー「地区コード」だけを持つ。「地区」表と結合して「地区名」は得られるが、「社員コード」が無いため「担当社員」表と結合できず、A表の「社員名」を得られない。

  • エ

    正解 結合後のA表には「顧客コード」「顧客名」「社員名」「地区名」「代表者名」の5列がある。元の「顧客」表に固有の列は「顧客コード」「顧客名」「代表者名」だが、A表の「社員名」は「担当社員」表(主キー=社員コード)から、「地区名」は「地区」表(主キー=地区コード)から結合で持ってきた列である。したがって「顧客」表は、この2表と結合するための外部キーとして「社員コード」と「地区コード」の両方を持っていなければならない。よって元の「顧客」表の列は「顧客コード・顧客名・代表者名・社員コード・地区コード」となり、選択肢エが正しい。図でもエだけが「社員コード」「地区コード」の2列を破線(外部キー)付きで備えている。

ここがポイント
  • 結合(ジョイン)では、相手の表の主キーを参照する外部キーを自表に持つことで列を取り込む。A表に現れる列から、元表が必要とする外部キーを逆算するのが要点。
  • 外部キー(破線)は、他表の主キー(実線)を指し示す列。取り込みたい相手表の数だけ対応する外部キーが必要になる。
用語

解答の記録