DP-900コア データ概念MEDIUM単一選択

ある保険会社が、契約者の基本情報(契約者ID、名前、生年月日、住所)を管理するリレーショナルデータベースを運用している。このデータベースに「同じ契約者IDのレコードが複数登録されないこと」「生年月日には必ず値が入力されること」を保証するためのデータ整合性制約として最も適切なものはどれか。

  1. A. 契約者IDにCHECK制約、生年月日に外部キー制約を設定する
  2. B. 契約者IDを外部キーとして別テーブルを参照させ、生年月日にUNIQUE制約を設定する
  3. C. 契約者IDにインデックスを追加し、生年月日にデフォルト値0を設定する
  4. D. 契約者IDに主キー制約、生年月日にNOT NULL制約を設定する
解答と解説を見る

正解: D

「同じ契約者IDが複数登録されないこと」を保証するには主キー制約(PRIMARY KEY)が最適である。主キー制約は自動的にUNIQUE(一意性)とNOT NULL(必須入力)の両方を保証するため、重複した契約者IDの登録を防ぐ。「生年月日に必ず値が入ること」を保証するにはNOT NULL制約が適切で、NULLの挿入を禁止できる。選択肢Cのインデックスはクエリのパフォーマンス改善が目的であり、重複防止の整合性制約ではない。デフォルト値0も整合性制約(値の必須化)とは異なり、0という誤った値で埋まるリスクがある。選択肢Bの外部キーは別テーブルへの参照整合性を保証するものであり、自テーブルでの主キーの一意性保証には使わない。生年月日へのUNIQUE制約は全契約者が異なる生年月日を持つという誤った制約になる。選択肢AのCHECK制約は値の範囲・書式を検証するものであり、主キーの一意性保証には主キー制約が正しい。生年月日への外部キー制約は別テーブルへの参照を強制するものであり、必須入力の保証にはNOT NULLを使う。

▸ この試験を本気で演習する(全150問・無料)