情報処理安全確保支援士試験 情報処理安全確保支援士試験 平成29年度秋期 午前Ⅰ9: 関係 R(ID, A, B, C)の A, C への射影の結果と SQL 文で求めた結果が同じになるように,a に入れるべき字句はどれか。ここで,関係 R を表

情報処理安全確保支援士試験 平成29年度秋期 午前Ⅰ
Q 99 / 30
関係 R(ID, A, B, C)の A, C へのの結果と SQL 文で求めた結果が同じになるように,a に入れるべき字句はどれか。ここで,関係 R を表 T で実現し,表 T に各行を格納したものを次に示す。 T
IDABC
001a1b1c1
002a1b1c2
003a1b2c1
004a2b1c2
005a2b2c2
〔SQL 文〕 SELECT [ a ] A, C FROM T

問題本文

関係 R(ID, A, B, C)の A, C への射影の結果と SQL 文で求めた結果が同じになるように,a に入れるべき字句はどれか。ここで,関係 R を表 T で実現し,表 T に各行を格納したものを次に示す。 T 〔SQL 文〕 SELECT [ a ] A, C FROM T

選択肢

  • .ALL
  • .DISTINCT
  • .ORDER BY
  • .REFERENCES

正解

. DISTINCT

解説

関係(集合)の射影は重複行を含まない。表TからA,Cだけ取り出すと、(a1,c1)(a1,c2)(a1,c1)…と重複が生じる。SQLのSELECTは既定で重複を残すため、DISTINCTを付けて重複を除けば射影の結果と一致する。よってイが正解。関係モデルの集合演算とSQLの既定動作(マルチセット)の違いを意識することが、DB設計やクエリ最適化の基礎理解になる。

選択肢ごとの解説

  • .ALLは重複をそのまま残す指定で、重複のない射影とは結果が異なり誤り。
  • .DISTINCTで重複行を除去でき、集合としての射影結果と一致するので正しい。
  • .ORDER BYは並べ替えの句で位置も用法も誤り。重複除去の機能はない。
  • .REFERENCESは外部キー参照の制約で、SELECT句には使えず無関係で誤り。

情報処理安全確保支援士試験 平成29年度秋期 午前Ⅰ過去問一覧へ戻る・問9