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

ITパスポート 2016年 秋期 95


問題文

関係データベースにおける主キーに関する記述のうち、適切なものはどれか。

選択肢

主キーに設定したフィールドの値に1行だけならNULLを設定することができる。
主キーに設定したフィールドの値を更新することはできない。
主キーに設定したフィールドは他の表の外部キーとして参照することができない。
主キーは複数フィールドを組み合わせて設定することができる。(正解)

🔒 解説は解答すると表示されます

関係データベースにおける主キーに関する記述【ITパスポート 解説】

正解の理由

関係データベースの「主キー(primary key:各行を一意に識別するキー)」は、表(テーブル)の各行を一意に特定するためのフィールド(列)です。主キーには「一意性(重複を許さない)」と「非 NULL(NULL を許さない)」という性質があります。一つの行を識別するために複数のフィールドを組み合わせて主キーにすることができます。したがって、複数フィールドを組み合わせて設定できるという記述が正しく、が正解です。
(補足用語)
  • NULL:値が「存在しない」ことを表す特別な値。データが未設定の状態を示します。
  • 外部キー(foreign key:他の表の主キーなどを参照するためのフィールド):参照整合性(参照先が存在することを保証する仕組み)に使います。

解法ステップ

  1. 「主キー」の基本性質を思い出す:
    • 一意性(同じ値が2行以上あってはいけない)
    • 非 NULL(値が必ず存在する)
  2. 各選択肢を上の性質と照らし合わせる:
    • NULL を許すか? → 主キーは許さない ⇒ アは誤り
    • 更新(変更)できるか? → 制約上は可能(ただし注意点あり) ⇒ イは誤り
    • 他表の外部キーとして参照できるか? → できる ⇒ ウは誤り
    • 複数フィールドの組合せは可能か? → 可能 ⇒ が正しい
  3. 正しい性質に最も合う選択肢を選ぶ。

選択肢別の誤答解説

  • ア: 主キーに設定したフィールドの値に1行だけならNULLを設定することができる。
    → 誤り。主キーは「非 NULL」である必要があります。主キーが NULL を許すと、その行を一意に識別できないためです。
  • イ: 主キーに設定したフィールドの値を更新することはできない。
    → 誤り。技術的には主キーの値を UPDATE で変更できます。ただし、主キーが他の表の外部キーで参照されている場合、参照整合性(referential integrity)を保つために制約やトランザクションの配慮が必要です。運用上は主キーを更新しない(変更しづらい)設計が推奨されますが、「できない」という断定は正しくありません。
  • ウ: 主キーに設定したフィールドは他の表の外部キーとして参照することができない。
    → 誤り。むしろ主キーは他の表から外部キーとして参照されることが一般的です。外部キーは主キーを参照して参照整合性を保ちます。
  • エ: 主キーは複数フィールドを組み合わせて設定することができる。
    → 正しい。複数の列を組み合わせた「複合主キー(複合キー、composite key)」が利用できます。例えば「注文ID」と「商品ID」を組み合わせて明細行を一意に識別するケースなどです。

よくある誤解

  1. 「主キーは絶対に変更できない」
    → 実際は更新可能です。ただし、参照されている場合や業務ルール上の影響が大きいため、変更は避けるべきという運用上の推奨があります。技術的可否と運用上の注意を混同しないようにしましょう。
  2. 「一意性制約(UNIQUE)と主キーは同じ扱い」
    → 似ていますが違います。主キーは「一意かつ非 NULL」が保証される重要なキーです。一方で UNIQUE 制約は「一意であること」を保証しますが、NULL を許すかどうかの扱いは DBMS によって挙動が異なります(NULL の扱いで混乱しやすい)。
  3. 「複合主キーは使わない方がいい」
    → 小規模な設計では便利で自然な選択です。運用上や性能・結合(JOIN)の都合で単一の代理キー(オートインクリメントのIDなど)を使うことが多いですが、複合主キーが正しい場面もあります。状況により使い分けます。

補足コラム

  • 複合主キー(複合キー)の例:
    CREATE TABLE 注文明細 (
      注文ID INT,
      商品ID INT,
      数量 INT,
      PRIMARY KEY (注文ID, 商品ID) -- 注文ID と 商品ID を組み合わせて主キー
    );
    
    この場合、同じ注文内で同じ商品が重複して登録されないことを主キーで保証します。
  • 代理キー(サロゲートキー、surrogate key)とは:
    自然な業務のキー(例:社員番号)が複雑だったり変更される可能性があるときに、システム的に割り振る「ID(例:自動採番の整数)」を主キーにする手法です。利点は単純で参照しやすいこと、欠点は業務上の意味が薄れることです。
  • 外部キー制約の注意:
    他表の主キーを外部キーで参照している場合、参照先の主キーを削除・変更すると参照整合性違反になります。多くのDBMSではその場合の挙動(CASCADE:連鎖削除や制限など)を設定できます。

FAQ

Q1: 主キーに文字列の組合せを使ってもいいですか?
A1: できます。文字列の複数列を組み合わせて複合主キーにすることは可能です。ただしサイズや検索性能を考えて設計してください。性能面で問題が出る場合は代理キーの検討を。
Q2: UNIQUE 制約と主キー、どちらを使えばいいですか?
A2: 一意性だけを保証したい場合は UNIQUE、かつ「必ず存在し、かつその列で行を特定する」という要件なら主キーを使います。主キーはテーブルに1つだけです。
Q3: 主キーに NULL を入れたらどうなる?
A3: 主キーは NULL を許しません。DBMS は主キー列に NULL を格納させない制約を置きます。NULL を許すと一意に識別できないためです。
Q4: 主キーを変更したいときはどうする?
A4: 参照関係や業務影響を確認してから行います。参照されている場合は参照整合性を保つための対策(外部キーの ON UPDATE CASCADE など)や、一時的なトランザクションで安全に更新する手続きが必要です。多くの場合、設計段階で変更が少ない値を主キーにする方が楽です。

関連キーワード: 主キー、複合主キー、外部キー、NULL、一意制約、参照整合性、DBMS、SQL、代理キー(サロゲートキー)、リレーショナルデータベース
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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