IPA過去問ドリル

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

テクノロジ/データベース

関係R(ID,A,B,C)のA,Cへの射影の結果とSQL文で求めた結果が同じになるように,aに入れるべき字句はどれか。ここで,関係Rを表Tで実現し,表Tに各行を格納したものを次に示す。 〔表T〕 ID,A,B,C 001,a1,b1,c1 002,a1,b1,c2 003,a1,b2,c1 004,a2,b1,c2 005,a2,b2,c2 〔SQL文〕 SELECT [ a ]A,C FROM T (注:本サイトでは原問題の表を文字表記に変換しています)

出典:平成29年度 秋期 応用情報技術者試験 午前 問28

正解:イ

解説

関係Rを(A,C)へ射影すると,重複する組は取り除かれるため,表Tから重複を除いた(a1,c1),(a1,c2),(a2,c2)の3行が得られます。単純にSELECT A, C FROM Tを実行すると重複行((a1,c1)が2回)がそのまま残ってしまうため,重複を除去するDISTINCTを指定する必要があります。

選択肢ごとの解説

  • 誤り。ALLは重複行を除去せずそのまま出力する指定(既定の動作)であり,射影の結果(重複除去済み)とは一致しません。
  • 正しい。DISTINCTを指定することで重複する行が除去され,関係代数の射影演算の結果と同じ(a1,c1),(a1,c2),(a2,c2)の3行が得られます。
  • 誤り。ORDER BYは結果の並び順を指定するだけで,重複行の除去は行われません。
  • 誤り。REFERENCESは外部キー制約を定義するための字句であり,SELECT文の重複除去とは無関係です。
応用情報技術者の過去問を演習モードで解く