戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 秋期 午前(科目A)30


問題文

関係データベースの主キー制約の条件として、キー値が重複していないことの他に、主キーを構成する列に必要な条件はどれか。

選択肢

キー値が空でないこと(正解)
構成する列が一つであること
表の先頭に定義されている列であること
別の表の候補キーとキー値が一致していること

##: 関係データベースの主キー制約の条件として、キー値が重複していないことの他に、主キーを構成する列に必要な条件はどれか。【午前2 解説】

要点まとめ

  • 結論:主キーは重複禁止に加え、キー値が空(NULL)であってはならないという制約(NOT NULL)を満たす必要があります。
  • 根拠:関係データモデルとSQLではPRIMARY KEYが一意性(UNIQUE)と非NULL(NOT NULL)を保証し、候補キーの中から選ばれるため最小性も期待されます。
  • 差がつくポイント:複数列で構成する複合主キーは許容される点と、外部キー(他表との一致)は主キーの条件ではない点を正確に区別してください。

正解の理由

選択肢ア「キー値が空でないこと」が正解です。主キーは表内で各行を一意に識別するため、値が重複していないことに加えてNULLを許容しては識別できなくなるため、非NULL制約が必須です。SQLのPRIMARY KEY指定は内部的にUNIQUEとNOT NULLの両方を満たします。したがって「空でないこと」が主キー列に求められる条件です。

よくある誤解

  • 主キーは必ず単一列である:複合(複数列)で主キーを定義できるため誤りです。
  • 主キーと外部キーを混同する:外部キーは別表の候補キーと一致する必要があるが、主キー自身がその条件を満たす必要はありません。
  • NULLが主キーに入ることがある:NULLは識別不能を意味するため、主キーには許されません(SQLでもPRIMARY KEYはNOT NULL)。

解法ステップ

  1. 問題文で「主キーを構成する列に必要な条件」を問うていることを確認する。
  2. 主キーの基本性質(識別性=一意性、非NULL、最小性)を思い出す。
  3. 各選択肢を照らし合わせ、これらの性質と一致するものを選ぶ。
  4. 外部キーや配置(先頭列)など主キーの必須条件とは無関係な選択肢は除外する。

選択肢別の誤答解説

  • ア: キー値が空でないこと — 正解。主キーはNULLを許容してはならず、NOT NULLである必要があります。
  • イ: 構成する列が一つであること — 誤り。複合主キー(複数列で構成)も一般的に認められます。
  • ウ: 表の先頭に定義されている列であること — 誤り。列の位置は主キーの要件ではなく、論理的な識別性が重要です。
  • エ: 別の表の候補キーとキー値が一致していること — 誤り。これは外部キー(参照整合性)の要件であり、主キーそのものの必須条件ではありません。

補足コラム

  • SQLでの定義例:PRIMARY KEYを宣言すると、その列に自動的にNOT NULLとUNIQUEが適用されます。
CREATE TABLE 社員 (
  社員ID INT PRIMARY KEY, -- UNIQUE + NOT NULL が保証される
  氏名 VARCHAR(100),
  部署ID INT
);
  • 複合主キーの例:
CREATE TABLE 受講 (
  学生ID INT,
  科目ID INT,
  PRIMARY KEY (学生ID, 科目ID) -- 複合キーで識別
);
  • 「候補キー」とは表の中で一意性を満たす最小の列集合を指し、そのうち1つを主キーとして選びます。外部キーは別表の候補キー(通常は主キー)を参照します。

FAQ

Q1: 主キーに自動採番の値(例えばシーケンス)を使うのは良いですか?
A1: はい。サロゲートキー(代理キー)として自動採番を使うことは一般的で、識別性・安定性の観点で有利です。
Q2: 主キーは必ず1つだけですか?
A2: 表につき「選択された」主キーは1つですが、候補キーは複数存在し得ます。設計上は1つを主キーとして指定します。
Q3: NULLと空文字は同じ扱いですか?
A3: いいえ。NULLは「不在」を意味し、主キーでは許されません。空文字は値として扱われるためDB設計上の考慮が必要です。

関連キーワード: リレーショナルデータベース、主キー、候補キー、NOT NULL、UNIQUE、外部キー、複合主キー、正規化、SQL、PRIMARY KEY
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について