ITパスポート 2019年 秋期 問66
問題文
関係データベースにおいて、主キーを設定する理由はどれか。
選択肢
ア:算術演算の対象とならないことが明確になる。
イ:主キーを設定した列が検索できるようになる。
ウ:他の表からの参照を防止できるようになる。
エ:表中のレコードを一意に識別できるようになる。(正解)
🔒 解説は解答すると表示されます
主キーを設定する理由【ITパスポート 解説】
正解の理由
関係データベース(関係データベース:表でデータを管理する仕組み)で主キー(主キー:表の各行を一意に識別するための列。英語では primary key)を設定する最大の目的は、表中のレコード(行)を一意に識別することです。選択肢の中では、選択肢エがこの目的を正しく表しています。
「一意に識別する」とは、ある列(または複数列の組み合わせ)の値を見れば、その値がどのレコード(誰のデータか、どの注文か)を指すかが必ず1つに定まる、ということです。これにより、データの重複やあいまいさを防ぎ、更新・削除・参照を安全に行えます。
解法ステップ
- 問題文を読み、「主キーを設定する理由」を問われている点を確認する。
- 「主キー」の定義を思い出す。主キー = レコードを一意に識別するためのもの(英語:primary key)。
- 各選択肢を定義と照らし合わせて検討する:
- 「一意に識別できる」は主キーの定義そのものなので正しい。
- その他は主キーの副次的効果や誤解に該当するか確認する。
- 最も直接的で正確な説明である選択肢エを選ぶ。
選択肢別の誤答解説
-
ア: 算術演算の対象とならないことが明確になる。
→ 主キーの役割は「演算可能かどうか」を示すことではありません。数値でも文字列でも主キーにできます。主キー設定は演算の可否とは無関係です。 -
イ: 主キーを設定した列が検索できるようになる。
→ 主キーは一意性を保証しますが、検索できるようにすること自体が主キーの本質ではありません。実務では主キーに自動的にインデックス(インデックス:検索を高速化する仕組み)が作られることが多く、これにより検索が速くなる副次効果はあります。しかし「検索できるようになる」=主キーの目的、とは言えません。 -
ウ: 他の表からの参照を防止できるようになる。
→ むしろ逆です。主キーは他の表から参照されるための基準になります。他の表の外部キー(外部キー:別の表の主キーを参照する列。英語では foreign key)から参照されて関係を作ることができます。参照を防ぐ機能は主キーにありません。 -
エ: 表中のレコードを一意に識別できるようになる。
→ これが主キーの定義そのものです。よって正解です。
よくある誤解
-
「主キー = 検索用の仕組み」と誤解する
→ 主キーは一意性のための定義です。多くのDBでは主キーにインデックスが付くため検索が速くなりますが、これは副次効果です。本質を取り違えないようにしましょう。 -
「主キーは必ず数値で、自動採番でなければならない」と思う
→ 主キーは数値でも文字列でも構いません。自動採番(IDを自動で増やす設定)は便利ですが、必須ではありません。重要なのは「値が重複せず、NULL(未設定)にならないこと」です。 -
「主キーがあると他テーブルから参照できなくなる」との誤解
→ これは逆です。主キーは他表から参照(外部キー)されることを想定したものです。
補足コラム
-
主キーと候補キー・代替キー
→ ある表において「一意に識別できる列」が複数ある場合、主キーに選ばれなかった方を候補キー(候補キー:一意性を満たすが主キーに選ばれていないキー)や代替キーと呼びます。たとえば社員表で「社員番号」と「メールアドレス」がどちらも一意なら、どちらかを主キーに選びます。 -
複合主キーと代理キー
→ 複数列の組合せで一意性を保つ場合は複合主キー(複数列を主キーにする)。運用上わかりやすい単一カラムの「代理キー(サロゲートキー、英語:surrogate key)」を別に設けることも多いです(例:自動採番のID)。 -
SQLでの主キー設定例(SQL:データベース操作言語、Structured Query Language)
CREATE TABLE社員(
社員ID INT PRIMARY KEY, -- 社員IDを主キーにする(自動採番にすることが多い)
氏名 VARCHAR(100),
メール VARCHAR(200) UNIQUE -- 一意制約(メールアドレスは重複不可)
);
FAQ
Q1: 主キーは必ず必要ですか?
A1: 実務ではほとんどのテーブルに主キーを設けます。データの一意性と更新時の安全性を確保するためです。ただし、ログなど一意性が不要なケースでは不要な場合もあります。
A1: 実務ではほとんどのテーブルに主キーを設けます。データの一意性と更新時の安全性を確保するためです。ただし、ログなど一意性が不要なケースでは不要な場合もあります。
Q2: 主キーにNULLは入れられますか?
A2: いいえ。主キーはNULL(未設定)を許容しません。NULLがあると「一意に識別できる」条件を満たさなくなるためです。
A2: いいえ。主キーはNULL(未設定)を許容しません。NULLがあると「一意に識別できる」条件を満たさなくなるためです。
Q3: 主キーとユニーク制約(unique)の違いは何ですか?
A3: 両方とも「値の重複を防ぐ」点は同じです。主キーはさらに「テーブルの代表的な識別子」として扱われ、通常はNULL不可であり、外部キーの参照先になります。ユニーク制約は補助的に使われます。
A3: 両方とも「値の重複を防ぐ」点は同じです。主キーはさらに「テーブルの代表的な識別子」として扱われ、通常はNULL不可であり、外部キーの参照先になります。ユニーク制約は補助的に使われます。
関連キーワード: 主キー、関係データベース、一意性、外部キー、インデックス、複合主キー、サロゲートキー、SQL、正規化

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

