ITパスポート過去問 平成30年度(2018年)問85
関係データベースで管理している“担当社員”表,“地区”表及び“顧客”表を結合して,A表を得た。結合に用いた“顧客”表はどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。


選択肢
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
A表には、顧客表の列(顧客コード、顧客名、代表者名)に加えて、担当社員表の列である社員名と、地区表の列である地区名が含まれています。顧客表から担当社員表と地区表を結合してこれらの列を取り出すには、顧客表が担当社員表の主キーである社員コードと、地区表の主キーである地区コードを外部キーとして持つ必要があります。社員コードと地区コードの両方を外部キーとして持っているのは「エ」なので、正解はエです。
Point
この問題は、結合後の表(A表)に含まれる列がどの表に由来するかを整理し、結合に必要な外部キーが顧客表に備わっているかを判断できるかを確認するものです。主キーと外部キーの役割と、結合が共通の列(主キーと外部キー)で行われることを理解していることが重要です。
解くために必要な知識
この問題を解くには、関係データベースにおける表の結合と、主キー・外部キーの役割を理解している必要があります。
用語の整理
| 用語名 | 意味 |
|---|---|
| 関係データベース | データを複数の表で管理し、表同士をキーで関連付けて扱うデータベースです。 |
| 主キー | 表の行を一意に識別する項目です。問題文の図では実線の下線です。 |
| 外部キー | 他の表の主キーを参照する項目です。表同士を結合するために使います。問題文の図では破線の下線です。 |
| 表結合 | 表Aのように、共通のキー(例:社員コード、地区コード)で複数の表を結び付けて1つの結果表を作ることです。 |
他の選択肢に出てくる用語
| 用語名 | 意味 |
|---|---|
| 担当社員表 | 「社員コード(主キー)」と「社員名」を管理する表です。 |
| 地区表 | 「地区コード(主キー)」と「地区名」を管理する表です。 |
| 顧客表 | 顧客の情報(例:顧客コード、顧客名、代表者名)に加えて、担当社員表や地区表と結合するための外部キーを持つ表です。 |
図表の読み取り方
1. 下線の種類を確認します
-
実線の下線は主キーです。
-
破線の下線は外部キーです。
2. 結合後の表(A表)にある項目を確認します
表Aにある項目のうち、元の顧客表にない項目があれば、他の表から結合で取得していると考えます。
3. 取得したい項目の参照元表と、結合に使うキーを対応付けます
-
「社員名」を取得するには、担当社員表の主キー「社員コード」で結合します。
-
「地区名」を取得するには、地区表の主キー「地区コード」で結合します。
問題の解法手順
問題の注目点は、A表にある「社員名」と「地区名」を、どの表から取得しているかです。
図表の読み取り
各表が持つ項目
-
担当社員表は「社員コード」を主キーとして「社員名」を管理しています。
-
地区表は「地区コード」を主キーとして「地区名」を管理しています。
-
表Aには「顧客コード、顧客名、社員名、地区名、代表者名」があります。
解く手順
1. A表で顧客表にない項目を特定します
表Aのうち、顧客表以外から持ってくる必要があるのは次の2つです。
-
社員名(担当社員表)
-
地区名(地区表)
2. 結合に必要な共通項目(キー)を考えます
-
社員名を取得するには、担当社員表の主キーである「社員コード」で結合する必要があります。
-
地区名を取得するには、地区表の主キーである「地区コード」で結合する必要があります。
3. 顧客表に必要な外部キーを確認します
顧客表には次が必要です。
-
社員コード(担当社員表の主キーを参照する外部キー)
-
地区コード(地区表の主キーを参照する外部キー)
4. 選択肢を比較します
2つの外部キー(社員コード、地区コード)を両方持つのは「エ」だけです。
選択肢ごとの解説
- ア:不正解
社員コードと地区コードが無いので、担当社員表と地区表のどちらにも結合できません。A表の社員名と地区名を得られません。
- イ:不正解
社員コード(外部キー)はありますが、地区コードがありません。担当社員表とは結合できますが、地区表と結合できないため、A表の地区名を得られません。
- ウ:不正解
外部キーとして「地区コード」はありますが、「社員コード」がありません。地区表とは結合できますが、担当社員表と結合できないため「社員名」を作れません。
- エ:正解
外部キーとして「社員コード」と「地区コード」の両方があります。担当社員表と地区表の両方と結合できるため、表Aの「社員名」と「地区名」を作れます。
まとめ
A表には、顧客表の列(顧客コード、顧客名、代表者名)に加えて、担当社員表の列である社員名と、地区表の列である地区名が含まれています。顧客表から担当社員表と地区表を結合してこれらの列を取り出すには、顧客表が担当社員表の主キーである社員コードと、地区表の主キーである地区コードを外部キーとして持つ必要があります。社員コードと地区コードの両方を外部キーとして持っているのは「エ」なので、正解はエです。
テクノロジ系 > 技術要素 > データベース
社員コードと地区コードが無いので、担当社員表と地区表のどちらにも結合できません。A表の社員名と地区名を得られません。
社員コード(外部キー)はありますが、地区コードがありません。担当社員表とは結合できますが、地区表と結合できないため、A表の地区名を得られません。
外部キーとして「地区コード」はありますが、「社員コード」がありません。地区表とは結合できますが、担当社員表と結合できないため「社員名」を作れません。
外部キーとして「社員コード」と「地区コード」の両方があります。担当社員表と地区表の両方と結合できるため、表Aの「社員名」と「地区名」を作れます。