ITパスポート 2023年 問78
問題文
関係データベースの主キーの設定に関する記述として、適切なものだけを全て挙げたものはどれか。
a 値が他のレコードと重複するものは主キーとして使用できない。
b インデックスとの重複設定はできない。
c 主キーの値は数値でなければならない。
d 複数のフィールドを使って主キーを構成できる。
選択肢
ア:a、c
イ:a、d(正解)
ウ:b、c
エ:b、d
🔒 解説は解答すると表示されます
関係データベースの主キー設定【ITパスポート解説】
正解の理由
主キー(primary key:表の中で各レコード(行)を一意に識別するための項目)は、次の二つの性質をもちます。
- 値が他のレコードと重複してはならない(一意性)。そのため、値が他のレコードと重複する項目は主キーとして使用できません(a)。
- 一つの項目だけで一意に識別できない場合は、複数の項目(フィールド)を組み合わせて主キーにできます。これを複合主キー(複合キー)といいます(d)。
したがって、適切な記述はaとdであり、正解は イ です。
解法ステップ
- 主キーの条件を思い出す:値が一意であること、空値(NULL)をとらないこと。
- a:重複する値は一意性を満たさないので主キーにできない → 適切。
- b:主キーとインデックスは重複して設定できる(多くのDBMSは主キーに自動でインデックスを作る)→ 不適切。
- c:主キーの値は数値に限られず、文字列(例:社員コード“S001”)でもよい → 不適切。
- d:複数のフィールドを組み合わせて主キーにできる(複合主キー)→ 適切。
- 適切なのはaとdなので、イ(a、d)を選ぶ。
選択肢別の誤答解説
- ア:a、c
aは適切ですが、cが誤りです。主キーは文字列や日付など、数値以外の項目でも設定できます。 - イ:a、d
正解。どちらも主キーの性質を正しく述べています。 - ウ:b、c
bは誤りです。主キーの項目にインデックスを設定することはでき、検索の高速化のために主キーには通常インデックスが作られます。cも誤りです。 - エ:b、d
dは適切ですが、bが誤りです。
よくある誤解
- 「主キーは番号(数値)でなければならない」
→ 誤りです。“S001”のような文字列のコードや、複数項目の組合せでも主キーにできます。大切なのは値が一意であることです。 - 「主キーは一つの項目でなければならない」
→ 誤りです。例えば“成績”表では「学生番号」と「科目コード」を組み合わせて初めて行を一意に識別できるので、二つを合わせて主キーにします。 - 「インデックスと主キーは同時に設定できない」
→ 誤りです。主キーにはインデックスが設定されるのが一般的です。
補足コラム
- 主キーの二つの制約
- 一意性制約:同じ値のレコードが二つ以上存在しない。
- NOT NULL制約:値が空(NULL)であってはならない。
- 複合主キーの例
- “受注明細”表(受注番号、明細番号、商品コード、数量)では、「受注番号」だけでは明細が複数あるため一意にならず、「受注番号+明細番号」を主キーにします。
FAQ
Q1. 主キーと外部キーの違いは?
A1. 主キーは自分の表のレコードを一意に識別する項目、外部キーは他の表の主キーを参照する項目です。外部キーの値は重複してもかまいません。
A1. 主キーは自分の表のレコードを一意に識別する項目、外部キーは他の表の主キーを参照する項目です。外部キーの値は重複してもかまいません。
Q2. 主キーに向いている項目は?
A2. 値が変わらず、必ず一意になる項目です。氏名は同姓同名がありうるので向かず、社員番号や商品コードのように一意に割り当てたコードが向いています。
A2. 値が変わらず、必ず一意になる項目です。氏名は同姓同名がありうるので向かず、社員番号や商品コードのように一意に割り当てたコードが向いています。
関連キーワード: 主キー、一意性制約、NOT NULL制約、複合主キー、インデックス、外部キー、関係データベース

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

