DA-B18|情報Ⅰ 対策問題
主キーの設計として適切なものはどれか。図書貸出表 (【ア】, 生徒番号, 本の番号, 貸出日) を作り、同じ生徒が同じ本を別の日に借りることもある。
解答・解説を見る
正解: 1
正答
1
この問題のポイント
主キーの設計(1行を必ず一意にする) を問う問題です。
解説
主キーとは、表の中の1行(1件のデータ)を必ず特定できる項目のことです。主キーには「同じ値が2行に現れない(一意である)」「空欄にならない」という条件が必要です。
この表で主キーを選ぶ手順は、候補ごとに「同じ値の行が2つ以上できる場面はないか」と反例を探すことです。
- 生徒番号: 同じ生徒が何冊も借りれば、同じ番号の行が複数できる → 重複するので不可。
- 本の番号: 同じ本が何度も貸し出されれば重複する → 不可。
- 氏名: 同姓同名があり得る上、そもそもこの表の項目にない → 不可。
- さらに問題文の「同じ生徒が同じ本を別の日に借りる」から、生徒番号と本の番号の組み合わせでも重複し得る。
そこで、貸出1件ごとに新しい番号を振る連番「貸出番号」を追加すれば、どの行も必ず区別できます。レシート番号・注文番号・予約番号など、実社会のシステムが必ず連番を発行するのは、この主キー設計の必要からです。
共通テストでは「この表の主キーとして適切なものはどれか」という形で、重複し得る項目をわざと候補に並べてきます。「その項目で同じ値の行が2つできる場面はないか」と反例を1つ挙げられれば、その候補は消せます。
選択肢の確認
1.○ 貸出ごとに振る連番は必ず一意で、主キーの条件を満たす。
2.× 同じ生徒が複数回借りると生徒番号が重複する。
3.× 同じ本が複数回貸し出されると本の番号が重複する。
4.× 氏名は同姓同名で重複し得る上、この表の項目にもない。
ここだけは覚えよう
主キー=1行を一意に特定、重複と空欄は禁止 — 迷ったら貸出番号のような連番を追加する。