主キー・候補キーとは?
主キー・候補キーとは、行を一意に識別できる列の組が候補キーで、その中から実際に識別子として選んだものが主キー。主キーは重複と空値が許されない。データの一意性・網羅性を確かめる監査手続の出発点になるため、設計の妥当性が問われる。
ITサービスマネージャ試験の過去問では1回出題されています。
しゅきー・こうほきー
主キー・候補キーの意味
行を一意に識別できる列の組が候補キーで、その中から実際に識別子として選んだものが主キー。主キーは重複と空値が許されない。データの一意性・網羅性を確かめる監査手続の出発点になるため、設計の妥当性が問われる。
主キー・候補キーの具体例
社員表で社員番号とメールアドレスの双方が一意なら候補キーは二つあり、業務で不変な社員番号を主キーに選ぶ。監査人は主キー列に対して重複件数を数える問合せを実行し、0件であることをもって一意性統制が機能している証拠とする。
主キー・候補キーは試験でどう引っ掛けられる?
「業務上一意だから主キー制約は不要」という説明を鵜呑みにしない。制約が定義されていなければ、不具合や直接更新で重複が入り得る。また複数列を組み合わせた主キーも正当であり、必ず1列でなければならないというわけではない。
主キー・候補キーと関連する用語
主キー・候補キーが出た過去問
“社員”表から、役割名がプログラマである社員が3人以上所属している部門の部門名を取得するSQL文はどれか。ここで、実線の下線は主キーを表す。 社員(社員番号, …
正解:SELECT 部門名 FROM 社員 WHERE 役割名 = 'プログラマ' GROUP BY 部門名 HAVING COUNT(*) >= 3
要点:行の条件はWHERE、集約後の条件はHAVINGに書く
SQLの評価順は、WHEREで行を絞り込み、GROUP BYで集約し、HAVINGで集約結果を絞り込む、という順序になる。したがって役割名の条件は行単位なのでWHEREに、人数3人以上という集約後の条件はHAVING COUNT(*)>=3に書く必要がある。集約関数をWHEREに書くことはできず、HAVINGをWHEREより前に置くこともできない。
出典:平成30年度 秋期 ITサービスマネージャ試験 am2 問21(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。