基本情報技術者 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)。
解法ステップ
- 問題文で「主キーを構成する列に必要な条件」を問うていることを確認する。
- 主キーの基本性質(識別性=一意性、非NULL、最小性)を思い出す。
- 各選択肢を照らし合わせ、これらの性質と一致するものを選ぶ。
- 外部キーや配置(先頭列)など主キーの必須条件とは無関係な選択肢は除外する。
選択肢別の誤答解説
- ア: キー値が空でないこと — 正解。主キーは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: はい。サロゲートキー(代理キー)として自動採番を使うことは一般的で、識別性・安定性の観点で有利です。
A1: はい。サロゲートキー(代理キー)として自動採番を使うことは一般的で、識別性・安定性の観点で有利です。
Q2: 主キーは必ず1つだけですか?
A2: 表につき「選択された」主キーは1つですが、候補キーは複数存在し得ます。設計上は1つを主キーとして指定します。
A2: 表につき「選択された」主キーは1つですが、候補キーは複数存在し得ます。設計上は1つを主キーとして指定します。
Q3: NULLと空文字は同じ扱いですか?
A3: いいえ。NULLは「不在」を意味し、主キーでは許されません。空文字は値として扱われるためDB設計上の考慮が必要です。
A3: いいえ。NULLは「不在」を意味し、主キーでは許されません。空文字は値として扱われるためDB設計上の考慮が必要です。
関連キーワード: リレーショナルデータベース、主キー、候補キー、NOT NULL、UNIQUE、外部キー、複合主キー、正規化、SQL、PRIMARY KEY

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

