令和8年度57テクノロジ系

ITパスポート 令和8年度 問57:databaseに関する問題

関係データベースで管理している「学生」表,「科目」表,「成績」表がある。1人の学生は複数の科目を履修するものとし,「学生」表に登録されていない学生や,「科目」表に登録されていない科目は「成績」表に登録できないものとするとき,外部キーとして設定するのが適切なものはどれか。ここで,表中の下線は主キーを表す。[学生表: 学生番号(PK)/学生名] [科目表: 科目コード(PK)/科目名] [成績表: 学生番号(FK)/科目コード(FK)/成績]

  • a「学生」表の学生番号,「成績」表の学生番号
  • b「学生」表の学生名,「科目」表の科目名
  • c「成績」表の学生番号と科目コード正答
  • d「成績」表の成績
正答:C「成績」表の学生番号と科目コード

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは c です。

「成績」表には「だれが・どの科目で・何点」が書かれます。でも“だれ”や“どの科目”は、別の「学生」表・「科目」表にすでに登録されている人・科目でないと書けないルールです。

この「ちゃんと本物がいるか確認するためのリンク(つながりの糸)」が外部キーです。だから成績表の中の「学生番号」と「科目コード」が、それぞれ本家の表を指す糸になります。

👉 覚え方:外部キー=「よその表を指さす欄」。

ほかの選択肢:a 学生表の学生番号は本家の主キーなので外部キーではない/b 学生名・科目名は鍵になっていない普通の欄/d 成績は点数そのものでリンクではない。

標準試験対策の基準レベル

なぜこれが正解か

正解は c。外部キーとは、他の表の主キーを参照する列のこと。「成績」表の学生番号は「学生」表の主キーを、科目コードは「科目」表の主キーを参照する。これにより、登録済みの学生・科目しか成績に登録できないという参照整合性が保たれる。

各選択肢の解説

  • a:「学生」表の学生番号はその表自身の主キーであり外部キーではない。
  • b:学生名・科目名は主キーではなく、参照関係を表す列でもない。
  • d:成績は実データの値で、他の表を参照しない。
  • c:「成績」表側にある学生番号と科目コードが、それぞれ親表の主キーを指す外部キー(正解)。

覚え方・ひっかけ注意

外部キーは必ず「参照する側(子の表)」に置く。親表の主キーそのものを外部キーと取り違えるのが定番の引っかけ。「成績表が学生表と科目表にぶら下がる」と図でイメージすると間違えない。

上級誤答論破・背景理論まで深掘り

理論的背景

外部キー(Foreign Key)は関係データベースにおける参照整合性(Referential Integrity)を実現するための制約機構である。外部キーは「あるテーブルの列値が、別テーブルの主キー(または一意制約の付いた列)の値として必ず存在することを保証する」制約であり、孤立レコード(親テーブルに存在しない値を参照するレコード)の生成を防ぐ。

本問の「成績」表において、学生番号列は「学生」表の主キーを参照し、科目コード列は「科目」表の主キーを参照する。これが正解cの根拠。外部キーは「参照する側(子テーブル)」の列に設定し、「参照される側(親テーブル)」の主キーを指定するという方向性の理解が重要。「学生」表の学生番号(親テーブルの主キー)と「成績」表の学生番号(子テーブルの外部キー)は「設定対象」が異なり、外部キー制約は子テーブル側に設定するのが正しい(選択肢aは「学生表の学生番号」も外部キーとして設定するという誤りを含む)。

参照整合性の動作:INSERT時は外部キー値が親テーブルに存在することを検証。DELETE/UPDATE時は親テーブルのレコード削除・更新がカスケード(CASCADE)・制限(RESTRICT)・NULL設定(SET NULL)の参照アクション設定に従って処理される。

実務での使われ方

実際のエンタープライズシステム開発では、ORM(Object-Relational Mapper)がデータモデルから外部キー制約を自動生成する。Django(Python)ではForeignKeyフィールド、Rails(Ruby)ではbelongs_to関連、Hibernate(Java)では@ManyToOne/@OneToMany等のアノテーションで外部キー関係を定義する。しかし大規模システムやマイクロサービスアーキテクチャではパフォーマンス・スケーラビリティの観点から意図的に外部キー制約を無効化し、アプリケーション層で整合性を管理するケースも増えている(特にNoSQL利用時)。

外部キーの実践的重要性はデータマイグレーション・ETL処理での参照順序管理(親テーブル先挿入・子テーブル後挿入)にも現れる。本問batch_39の問題と組み合わせるとデータ挿入順序の理解が深まる。

試験での位置づけ

外部キー・参照整合性はITパスポートのデータベース分野で最頻出トピックの一つ。主キー(Primary Key)・外部キー(Foreign Key)・一意制約・検査制約の4種類の制約と、それぞれの目的・設定対象の識別が問われる。本問のような「どの列に外部キーを設定するか」という設計問題は毎年出題されている。正規化と外部キー設定の関係(第三正規形まで正規化したテーブルでは外部キーが多数生成される)も重要な関連トピックである。基本情報技術者試験ではSQL文での外部キー制約の記述(FOREIGN KEY制約・REFERENCES句・ON DELETE CASCADE等の参照アクション)まで問われる。

選択肢の発展補足

選択肢aの「学生表の学生番号と成績表の学生番号の両方を外部キー設定」が誤りである理由は、外部キーは「参照する側(子テーブル)」に設定するものであり、「参照される側(親テーブル)」の主キー列に外部キーを設定することは意味をなさない。学生表の学生番号は主キーであり、これは外部キーとして設定する列ではない。選択肢bの「学生名・科目名を外部キーとして設定」が誤りな理由は、主キーは一意性と最小性を満たす列(通常は番号・コード等の識別子)であり、「名前」のような非一意・変更可能な列を主キー・外部キーの対とすることは関係データベース設計の基本原則に反する。選択肢dの「成績列を外部キー設定」が誤りな理由は、成績(数値)は他のテーブルを参照する識別子ではなく、純粋なデータ属性(ファクト)であるから。

出典・引用について

出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和8年度57/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

55
security
56
database
58
technology_element
59
network
60
technology_element

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビならITパスポートの過去問を解きながら学べます。