解説
“商品”表と“納品”表を商品番号で等結合した結果はどれか【午前2 解説】
要点まとめ
- 結論:商品番号で等結合すると、両表の共通する商品番号ごとに全ての納品情報が結合されるため、重複行が発生する。
- 根拠:等結合は両表の結合キーが一致する行をすべて結合し、片方の表の複数行に対応する場合はそれぞれの組み合わせが出力される。
- 差がつくポイント:結合キーの重複行を正しく理解し、重複行が展開されることをイメージできるかが重要。
正解の理由
選択肢エは、商品番号をキーに「商品」表と「納品」表を等結合した結果として正しいです。
「商品」表の各商品番号に対し、「納品」表の同じ商品番号のすべての納品情報が結合されているため、商品番号S01やS02のように複数の納品行がある場合は、それぞれの納品行が展開されている点がポイントです。
また、結合後の列に商品番号が両方の表から残っているため、重複列が存在する形も等結合の典型的な結果です。
よくある誤解
等結合は単にキーが一致する行を1対1で結合すると誤解しがちですが、実際は1対多の関係でもすべての組み合わせを出力します。
また、重複する結合キーの列が両方残ることも見落としやすいポイントです。
解法ステップ
- 「商品」表と「納品」表の共通キーは「商品番号」であることを確認する。
- 等結合は両表のキーが一致する行をすべて結合するため、キーの重複行がある場合はそれぞれの組み合わせが出力される。
- 「納品」表の「商品番号」S01は2行あるため、「商品」表のS01の行が2回結合される。
- 同様にS02も2行あるため、2回結合される。S03は1行なので1回だけ結合される。
- 結合後の列は両表の列がすべて含まれ、キー列が両方残る場合がある。
- 以上の条件を満たす選択肢を選ぶ。
選択肢別の誤答解説
- ア:納品表の複数行が1行にまとめられておらず、納品数が1行ずつしか表示されていないため誤り。
- イ:商品番号が2回表示されているが、納品表の複数行が1行ずつしか表示されておらず、納品数の重複が反映されていない。
- ウ:納品表の複数行は正しく展開されているが、商品番号が1回しか表示されておらず、結合後の重複列が省略されているため等結合の結果として不完全。
- エ:商品番号の重複行が正しく展開され、両表のキー列が両方残っているため等結合の正しい結果である。
補足コラム
等結合(INNER JOIN)はリレーショナルデータベースで最も基本的な結合方法で、両表の結合キーが一致する行のみを結合します。
キーの重複がある場合は、すべての組み合わせが結果に含まれるため、結果の行数は元の表の行数の積に近くなることもあります。
また、結合キーが両方の表に存在する場合、SQLでは通常どちらか一方のキー列を選択して表示しますが、問題文のように両方残るケースもあります。
FAQ
Q: 等結合と内部結合は同じ意味ですか?
A: はい、等結合は内部結合(INNER JOIN)の一種で、結合キーが等しい行を結合することを指します。
Q: 結合キーが片方にしかない場合はどうなりますか?
A: 等結合では結合キーが両方に存在し、かつ一致する行のみが結合されます。片方にしかない場合は結果に含まれません。
Q: 結合後に重複するキー列はどう扱うべきですか?
A: 実務では重複列を省略したり別名を付けたりしますが、問題文の条件に従い両方残る場合もあります。
関連キーワード: 等結合, 内部結合, リレーショナルデータベース, SQL結合, 商品番号, データベース結合