データベーススペシャリスト試験 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代替手法