ITパスポート 2010年 秋期 問87
問題文
“部署”表、“都道府県”表及び“社員”表を結合して、A表を作成した。結合した“社員”表はどれか。ここで、下線は主キーを示し、破線は外部キーを示す。


選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
結合した“社員”表はどれか【ITパスポート 解説】
正解の理由
理由の要点を先に示します。
- A表には「部署名」と「都道府県名」が入っています。これらは元の「部署」表と「都道府県」表から取得された値です。
- あるテーブルから別のテーブルの値を取り出すには、それらを結びつけるための「鍵(コード)」が社員表に必要です。つまり、社員表には「部署コード」「都道府県コード」という外部キー(外部キー:ほかの表の主キーを参照する欄)が存在するはずです。問題文で「破線は外部キーを示す」とあるので、外部キーが破線で示されている選択肢を探します。
- エの記述は「社員番号(主キー)」「社員名」「年齢」「部署コード(破線=外部キー)」「都道府県コード(破線=外部キー)」となっており、A表を作るために必要な構造になっています。よってエが正解です。
解法ステップ
- A表の列を確認する:社員番号、社員名、部署名、都道府県名、年齢。
- A表の「部署名」「都道府県名」はそれぞれ部署表/都道府県表の情報なので、元の社員表にはそれらを参照するコード(部署コード、都道府県コード)があるはずだと考える。
- 補足:コード(例:部署コード)は参照先テーブルの主キー(部署表の部署コードなど)を指す外部キーになります。
- 選択肢の中で「部署コード」「都道府県コード」両方が外部キー(破線)になっているものを選ぶ。
- それが選択肢エであるため、エが正解。
(SQLで表すとイメージしやすいです)
SELECT e.社員番号, e.社員名, d.部署名, p.都道府県名, e.年齢
FROM 社員 e
JOIN 部署 d ON e.部署コード = d.部署コード
JOIN 都道府県 p ON e.都道府県コード = p.都道府県コード;
選択肢別の誤答解説
- ア:社員番号・社員名・年齢だけ。部署/都道府県を結合するためのコードがないため、部署名や都道府県名を取得できない。A表を作れない。
- イ:社員番号・社員名・年齢・都道府県コードがある。都道府県名は結合で取得可能だが、部署名を得るための部署コードがないためA表(部署名を含む)を作れない。
- ウ:社員番号・社員名・年齢・部署コードがある。部署名は得られるが、都道府県名を得るための都道府県コードがないためA表を完全に再現できない。
- エ:社員番号(主キー)、部署コードと都道府県コード(ともに外部キー)を持つ。両方の参照先から名前を取得できるのでA表が作れる(正解)。
よくある誤解
- 「A表に部署名があるから社員表にも部署名があるはず」と考える誤り。A表の部署名は結合で持ってきた可能性が高く、正しい設計では名前は参照元のマスタ表に置くことが多いです。
- 下線と破線の区別を見落とすミス。下線=主キー、破線=外部キーの指定は問題文で明示されています。見落とすと選択肢の意味を取り違えます。
- 列の並び順に過度にこだわる誤解。並び順は重要ではなく、どの列が主キー/外部キーかが重要です。
補足コラム
- 主キー(主キー = primary key):その表の各行を一意に識別する欄。社員番号が例です。
- 外部キー(外部キー = foreign key):別の表の主キーを参照する欄。データの関連付けに使います。例:社員表の部署コードは部署表の部署コードを参照します。
- なぜコードで管理するのか? 部署名や都道府県名を社員表に直接たくさん入れてしまうと、名前が変更されたときに複数箇所の修正が必要になります。コードで参照すると一箇所(マスタ表)の更新だけで済み、データの一貫性が保てます(これを正規化と呼びます)。
短い例え:社員表に部署名をベタ書きするのは、住所ごとに県名を全部書くようなものです。県コードを参照する仕組みにすると、県名が変わってもコード表を直すだけで済みます。
FAQ
Q. 社員表に「部署名」も「部署コード」も両方入っている場合はどうなる?
A. 実務では両方入れることもありますが、冗長(重複)になりミスの原因になります。通常はコードを保持し、名前は必要なときに結合して取得します。
A. 実務では両方入れることもありますが、冗長(重複)になりミスの原因になります。通常はコードを保持し、名前は必要なときに結合して取得します。
Q. 列の順番が違っても答えは変わる?
A. 列の順序自体はSQLの結合や関係性に影響しません。重要なのは主キー/外部キーとして必要な列があることです。
A. 列の順序自体はSQLの結合や関係性に影響しません。重要なのは主キー/外部キーとして必要な列があることです。
Q. 外部キーがないと結合は絶対にできない?
A. 厳密には「対応する列同士の値があれば」結合できますが、設計上は参照を明示する外部キーを使うことで整合性(正しい関連)が保ちやすくなります。
A. 厳密には「対応する列同士の値があれば」結合できますが、設計上は参照を明示する外部キーを使うことで整合性(正しい関連)が保ちやすくなります。
関連キーワード: リレーショナルデータベース、主キー、外部キー、正規化、JOIN、SQL、テーブル設計

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

