令和6年度 秋期 システム監査技術者試験 午前II 問21

テクノロジデータベース

この問題は2024(R6)秋 システム監査技術者 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

“納品”表と“顧客”表の自然結合と同じ結果を得るSQL文はどれか。

「納品」表と「顧客」表の構造を示す図
図の説明テキスト

「納品」表と「顧客」表の構造を示す図。

納品

顧客番号 商品番号 納品数量

顧客

顧客番号 顧客名

解答・解説を読む

正解: 選択肢

自然結合とは、2つの表の共通する属性(列)をキーにして結合を行い、共通する属性は重複させずに1つだけ残す結合演算です。

この設問では、選択肢の列名から以下の表構成であると推測できます。

  • “納品”表の列:顧客番号商品番号納品数量
  • “顧客”表の列:顧客番号顧客名

この2つの表を自然結合すると、共通列である「顧客番号」は1つにまとめられ、結果の表の列は「顧客番号商品番号納品数量顧客名」となります。

各選択肢の解説

  • ア:誤り
    サブクエリ (SELECT 顧客番号 FROM 顧客) は複数行を返す可能性があるため、= 演算子ではエラーになる場合があります(通常は IN を用います)。また、結果には“納品”表の列しか含まれないため、結合の結果にはなりません。

  • イ:誤り
    SELECT * と指定しているため、“納品”表の「顧客番号」と“顧客”表の「顧客番号」の両方が出力されてしまいます。自然結合は共通列を1つだけ残す必要があるため、条件を満たしません。

  • ウ:誤り
    SELECT句で“納品”表の列のみを指定しており、“顧客”表の列(顧客名)が含まれていないため、自然結合の結果とは異なります。

  • エ:正解
    SELECT句で「納品.顧客番号, 納品.商品番号, 納品.納品数量, 顧客.顧客名」と指定しており、共通列である「顧客番号」の重複を排除しつつ、両方の表の全ての列を網羅しています。これが自然結合と同じ結果を得るSQL文です。