データベース設計 (全64問中30問目)

No.30

R表に,(A,B)の2列で一意にする制約(UNIQUE制約)が定義されているとき,R表に対するSQL文のうち,この制約に違反するものはどれか。ここで,R表には主キーの定義がなく,また,全ての列は値が決まっていない場合(NULL)もあるものとする。
28.gif/image-size:325×135
  • 28a.gif/image-size:429×14
  • 28i.gif/image-size:429×14
  • 28u.gif/image-size:429×15
  • 28e.gif/image-size:429×14

分類

テクノロジ系 » データベース » データベース設計

正解

解説

UNIQUE制約(一意性制約)は、データベースにデータを追加したり更新する際に、列や列のグループが表内のすべての行で一意となるように要求する制約です。なおUNIQUE制約は、NULL値を許容するという点で主キー制約と異なります。

この問題では(A,B)の2列の組合せが表内で一意となっていることが要求されているので、それぞれのSQL文を実行した結果を考えてみましょう。
  • A列の値が'AA01' かつ B列の値が'BB02'の行、つまり上から2番目の行を削除するSQL文です。
    28_a.gif/image-size:325×98
    結果を見ても制約に違反している行はありません。
  • 表に('AA01',NULL,'DD01','EE01')の行を挿入するSQL文です。
    28_i.gif/image-size:325×145
    結果を見ても制約に違反している行はありません。
  • 表に(NULL, NULL,'AA01','BB02')の行を挿入するSQL文です。
    28_u.gif/image-size:325×145
    結果を見ても制約に違反している行はありません。
  • A列の値が'AA01'であるレコードのA列の値を'AA02'に更新するSQL文です。
    28_e.gif/image-size:325×121
    更新によってA列='AA02'、B列='BB01'の行が重複することになるため、この操作は(A,B)の2列に課されたUNIQUE制約に違反しています。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop