平成22年度 秋期 ITパスポート試験 問87 解説 データベースの結合と外部キー
“部署”表,“都道府県”表及び“社員”表を結合して,A 表を作成した。結合した “社員”表はどれか。ここで,下線は主キーを示し,破線は外部キーを示す。
- ア.
- イ.
- ウ.
- ニ. ✓ 正答
解説
この問題は、最終的な「A表」を作成するために必要な「社員」表の列(項目)を特定する問題です。
正解にたどり着くための最短の手順は、A表に含まれている情報と、参照元の表にある情報を照らし合わせることです。A表には「部署名」と「都道府県名」が含まれていますが、これらは単独で社員表に保持するのではなく、それぞれの「コード」を介して結合することで得られるデータです。したがって、社員表には「部署コード」と「都道府県コード」の両方が必要であると判断します。
データベースの結合と外部キーの役割
リレーショナルデータベースでは、データの重複を避けるために情報をいくつかの表に分けて管理します。これを正規化といいます。
例えば、「部署名」を社員表に直接書き込んでしまうと、部署名が変わったときに該当する全社員のデータを修正しなければなりません。そこで、「部署」表に「部署コード」と「部署名」を持たせ、社員表には「部署コード」だけを持たせます。このとき、別の表の主キーを参照するために設定されるのが「外部キー」です。
A表には「部署名」と「都道府県名」が表示されています。これらを導き出すためには、「社員」表が「部署」表および「都道府県」表と結合(JOIN)できる状態である必要があります。そのためには、「社員」表が以下の二つの「鍵」を握っている必要があります。
- 「部署」表と繋がるための「部署コード」
- 「都道府県」表と繋がるための「都道府県コード」
選択肢を絞り込むための思考プロセス
まず、どの選択肢にも共通している「社員番号(主キー)」「社員名」「年齢」は、社員自身の属性として当然必要です。
次に、A表を作成するために必要な情報の差分を確認します。A表には「部署名」と「都道府県名」が存在します。
- 選択肢アには、コード類が一切ありません。これでは部署や都道府県の情報と結合できません。
- 選択肢イには「都道府県コード」しかありません。これでは「部署名」を取得できません。
- 選択肢ウには「部署コード」しかありません。これでは「都道府県名」を取得できません。
- 選択肢エには「部署コード」と「都道府県コード」の両方が含まれています。これらがあれば、二つの表とそれぞれ結合し、最終的にA表を完成させることができます。
実務におけるデータベース設計の重要性
この問題で扱っている概念は、実際のシステム開発で最も基本的な設計手法です。現場では、このようにテーブルを適切に分割し、外部キーで関連付けることで、データの整合性を保ちます。
例えば、人事管理システムを想像してください。「部署」というテーブルが独立していれば、組織改編の際にも部署テーブルの内容を更新するだけで、自動的に全ての社員データの所属部署名が最新のものに切り替わります。このように、どのデータがどのテーブルに属すべきかを正しく判断する能力は、ITエンジニアやデータアナリストにとって必須のスキルです。試験問題を解くだけでなく、実際のデータがどうつながっているのかをイメージできるようになると、データベース系の問題はぐっと解きやすくなります。