データベーススペシャリスト 2013年 午前2 問12
問題文
関係RとSにおいて、R÷Sの関係演算結果として適切なものはどれか。ここで、÷は除算を表す。


選択肢
ア:
イ:
ウ:(正解)
エ:
関係RとSにおけるR÷Sの関係演算結果【午前2 解説】
要点まとめ
- 結論:R÷Sは「Sのすべての値に対してRに存在するタプルの集合」を返し、選択肢ウが正解です。
- 根拠:関係除算は、Sのすべての値に対応するRの値を抽出し、条件を満たす「店」を求めます。
- 差がつくポイント:除算の意味を正確に理解し、Sの全要素を含むRの「店」を見極めることが重要です。
正解の理由
R÷Sは「Rの中で、Sのすべての『商品』を持つ『店』」を求める演算です。
Rの「店」と「商品」の組み合わせから、Sの「商品」すべてを含む「店」を抽出します。
Sの商品はa, b, cであり、これらすべてを持つ店はBのみです。
したがって、選択肢ウの「店:B」が正解となります。
Rの「店」と「商品」の組み合わせから、Sの「商品」すべてを含む「店」を抽出します。
Sの商品はa, b, cであり、これらすべてを持つ店はBのみです。
したがって、選択肢ウの「店:B」が正解となります。
よくある誤解
除算は単なる差集合や結合とは異なり、Sの全要素を満たすRの値を抽出する演算であることを誤解しやすいです。
また、部分的にSの要素を持つ「店」も正解と誤認しがちです。
また、部分的にSの要素を持つ「店」も正解と誤認しがちです。
解法ステップ
- Rの「店」と「商品」の組み合わせを確認する。
- Sの「商品」全体(a, b, c)を把握する。
- Rの中で、Sのすべての「商品」を持つ「店」を探す。
- 条件を満たす「店」を選択肢から特定する。
選択肢別の誤答解説
- ア:Rの全タプルをそのまま示しており、除算の結果ではありません。
- イ:Sの「商品」全体を持つ「店」を抽出していません。
- ウ:Sの全商品a,b,cを持つ「店B」のみを示しており正解です。
- エ:「店E」は商品d,eを持ち、Sの全商品a,b,cを満たしていません。
補足コラム
関係除算はリレーショナル代数の中でも理解が難しい演算の一つです。
「R÷S」は「Rの中でSのすべての値に対応するもの」を抽出するため、実務では「全条件を満たす集合の抽出」に使われます。
SQLでは除算演算子は存在しませんが、NOT EXISTSやGROUP BYとHAVING句で同様の処理を実現します。
「R÷S」は「Rの中でSのすべての値に対応するもの」を抽出するため、実務では「全条件を満たす集合の抽出」に使われます。
SQLでは除算演算子は存在しませんが、NOT EXISTSやGROUP BYとHAVING句で同様の処理を実現します。
FAQ
Q: 関係除算はどんな場面で使われますか?
A: 例えば「すべての必須科目を履修した学生を抽出する」など、全条件を満たす集合の抽出に使います。
A: 例えば「すべての必須科目を履修した学生を抽出する」など、全条件を満たす集合の抽出に使います。
Q: 関係除算と差集合の違いは何ですか?
A: 差集合は単に片方にあってもう片方にない要素を除く操作ですが、除算は「すべての条件を満たす」要素を抽出します。
A: 差集合は単に片方にあってもう片方にない要素を除く操作ですが、除算は「すべての条件を満たす」要素を抽出します。
関連キーワード: 関係除算、リレーショナル代数、関係演算、データベース基礎、SQL代替手法

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

