関係代数の自然結合と同等なSQL結合式の選択

関係データベースの「自然結合(NATURAL JOIN)」は、両表で同名となる共通属性(本問では「顧客番号」)の値が等しい行同士を結合し、かつ重複する結合キー列を1つに統合して全属性を射影します。したがって、射影される列は「納品.顧客番号、納品.商品番号、納品.納品数量、顧客.顧客名」となり、エのSQL文と完全に一致します。したがって正解はエです。 顧客表の顧客番号が単一値でない場合エラーとなり、また顧客名属性も取得されません。 SELECT * では顧客番号列が両表から2重に出力されるため、自然結合の定義(重複列の統合)と異なります。 顧客名列が含まれておらず、表結合の全属性が網羅されていません。

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

問題画像
出典令和6年度 秋期 システム監査技術者試験 午前Ⅱ 問21
ア
SELECT * FROM 納品 WHERE 納品.顧客番号 = (SELECT 顧客番号 FROM 顧客)
イ
SELECT * FROM 納品, 顧客 WHERE 納品.顧客番号 = 顧客.顧客番号
ウ
SELECT 納品.顧客番号, 納品.商品番号, 納品.納品数量 FROM 納品, 顧客 WHERE 納品.顧客番号 = 顧客.顧客番号
エ
SELECT 納品.顧客番号, 納品.商品番号, 納品.納品数量, 顧客.顧客名 FROM 納品, 顧客 WHERE 納品.顧客番号 = 顧客.顧客番号