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

[出典:ITパスポート試験 平成30年度秋期 問85]
正解
正解は「エ」です。
解説
正解は選択肢エです。この問題は、複数の表を結合して新しい表(A表)を作成するために、「顧客」表がどのような構成であるべきかを問うています。A表には「顧客コード」「顧客名」「社員名」「地区名」「代表者名」という項目が含まれています。与えられている「担当社員」表には「社員コード(主キー)」と「社員名」が、「地区」表には「地区コード(主キー)」と「地区名」があります。A表に「社員名」と「地区名」があるということは、「顧客」表がこれらの情報と関連付けられるように、それぞれの表の主キーに対応する「外部キー」を持つ必要があります。
つまり、「担当社員」表の「社員コード」と「地区」表の「地区コード」が、「顧客」表の外部キーとして含まれている必要があります。顧客自身の情報である「顧客コード(主キー)」「顧客名」「代表者名」に加えて、「社員コード」と「地区コード」を外部キーとして持つ選択肢エが、すべての情報を結合するための適切な「顧客」表の構成となります。
例えば、ある顧客の情報を参照する際に、その顧客を担当している社員の名前や、その顧客が属する地区の名前も一緒に表示したい場合、顧客のレコードに社員コードと地区コードが記録されていれば、それぞれの表と紐付けて詳細な情報を取得できるようになる、というイメージです。
ア(顧客コード 顧客名 代表者名):
この選択肢では、他の「担当社員」表や「地区」表と関連付けるための外部キー(社員コードや地区コード)がありませんので、A表を完成させることはできません。
イ(顧客コード 顧客名 代表者名 社員コード):
この選択肢には「地区コード」がありませんので、「地区」表と結合して「地区名」を取得することができません。
ウ(顧客コード 顧客名 代表者名 地区コード):
この選択肢には「社員コード」がありませんので、「担当社員」表と結合して「社員名」を取得することができません。
難易度
この問題は、関係データベースの基本的な概念である「主キー」「外部キー」そして「結合」の理解度を問うものです。問題文に提示されている表の構造と、最終的に得たいA表の項目を見比べ、どの情報が不足しているかを判断する能力が必要です。データベースの仕組みに慣れていない初心者の方には少し難しく感じるかもしれませんが、落ち着いて必要な項目を一つずつ確認していけば正解にたどり着けるレベルです。
用語補足
関係データベース:
データを表(テーブル)の形で管理するデータベースの一種です。各表は行と列で構成され、互いに関連する複数の表を組み合わせて情報を管理します。例えば、顧客情報と注文情報を別々の表で管理し、顧客IDで関連付ける、といった使い方をします。
主キー:
表の各行(レコード)を一意に識別するための特定の列(項目)です。主キーの値は重複せず、空にすることもできません。例えば、社員表における社員番号や、商品表における商品コードなどが主キーとして使われます。
外部キー:
ある表の列が、別の表の主キーを参照しているときに、その列を外部キーと呼びます。外部キーは、複数の表の間に関連性(リレーションシップ)を持たせるために使われます。例えば、「注文表」にある「顧客ID」が、「顧客表」の「顧客ID(主キー)」を参照している場合、注文表の顧客IDは外部キーです。
結合:
関係データベースにおいて、複数の表を共通の項目(主キーと外部キーの関係など)に基づいて一つにまとめる操作です。例えば、顧客の注文履歴を見たいときに、顧客情報が書かれた表と注文情報が書かれた表を「顧客ID」という共通の項目で繋ぎ合わせることで、関連する全ての情報を一度に取得できます。
対策
この問題を解くためのポイントは、最終的に作成したいA表に必要な項目(社員名、地区名など)が、どの元表から来るのかを理解することです。そして、その元表の情報を「顧客」表に結びつけるためには、「顧客」表がどのような外部キーを持つべきかを見極めることが重要です。具体的には、「担当社員」表の主キーである「社員コード」と、「地区」表の主キーである「地区コード」が、「顧客」表の中に外部キーとして存在していれば、各表を適切に結合できると判断できます。主キーと外部キーの概念をしっかりと押さえ、複数の表がどのように連携し合って情報を提供するかをイメージできるようにしましょう。

