平成24年度秋期 応用情報技術者試験 午前 問28

分野:データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計)|実際に出題されたIPA過去問題

R表に,(A,B)の2列で一意にする制約(UNIQUE制約)が定義されているとき,R表に対するSQL文のうち,この制約に違反するものはどれか。ここで,R表には主キーの定義がなく,また,全ての列は値が決まっていない場合(NULL)もあるものとする。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  DELETE FROM R WHERE A = 'AA01' AND B = 'BB02'
  2.  INSERT INTO R(A, B, C, D) VALUES ('AA01', NULL, 'DD01', 'EE01')
  3.  INSERT INTO R(A, B, C, D) VALUES (NULL, NULL, 'AA01', 'BB02')
  4.  UPDATE R SET A = 'AA02' WHERE A = 'AA01'
解答・解説を見る

正解:エ

AI解説

UNIQUE制約は指定した列の組(ここではA,B)の値が重複しないことを保証するが、NULLは値ではないため比較対象にならず、NULLを含む行は制約違反にならない。エのUPDATEは、A='AA01'の行のAを'AA02'に変更した結果、既存の(A,B)=('AA02','BB02')などと同じ組合せが生じて重複するため、制約違反となる。 ア: DELETEは行を削除するだけで新たな重複を生まないため、UNIQUE制約に違反することはない。 イ: BにNULLを含む行の挿入である。NULLは他の値と等しいとは判定されないため、一意性違反にはならない。 ウ: AもBもNULLの行の挿入であり、同様にNULLを含む組は重複と見なされず違反にならない。 エ: 更新後の(A,B)の組が表内の既存行と同じ組合せになるため、一意性制約に違反する。正しい(違反する)肢である。 💡 「UNIQUE制約はNULLを許す(主キーはNULL不可)」が最重要の判断基準。INSERTだけでなくUPDATEでも重複が生じれば違反になる点がひっかけどころである。

出典:平成24年度 秋期 応用情報技術者試験 午前 問28 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「データベース」分野の攻略ポイント

関係モデル・正規化・SQL・トランザクション管理・障害回復・データベース設計が中心です。計算問題は少なく、定義と手順を正確に覚えていれば確実に得点できる、いわば「取りこぼしてはいけない」分野です。特に正規形とACID特性は毎年のように形を変えて出ます。

データベースの攻略ポイントをすべて見る(要点5項目・ひっかけ3項目)→

同じ分野(データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計))の過去問