データベーススペシャリスト 2011年 午前2 問09
問題文
関係Rと関係Sから、関係代数演算R ÷ Sで得られるものはどれか。ここで、÷は商の演算を表す。


選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
関係代数の商演算【午前2解説】
正解の理由
商演算R ÷ Sは、Rの属性のうちSに含まれない属性(ここではZ)について、Sの全ての組に対してRに存在する値を抽出します。
具体的には、Sの (X, Y) の組すべてに対して、Rの (X, Y, Z) の組が存在するZの値を求めます。
Rの中で (a,1) と (b,2) の両方に共通して存在するZの値は「甲」のみです。
したがって、正解は「Z」列に「甲」だけがある選択肢エとなります。
具体的には、Sの (X, Y) の組すべてに対して、Rの (X, Y, Z) の組が存在するZの値を求めます。
Rの中で (a,1) と (b,2) の両方に共通して存在するZの値は「甲」のみです。
したがって、正解は「Z」列に「甲」だけがある選択肢エとなります。
解法ステップ
- RとSの共通属性を確認する(ここではX, Y)。
- Rの属性からSの属性を除いた属性(ここではZ)を特定する。
- Sの全ての組に対して、Rに存在するZの値を探す。
- Sの全組に共通して存在するZの値のみを抽出する。
- 抽出したZの値を結果として表現する。
選択肢別の誤答解説
- ア:Rの一部の組をそのまま抜き出しただけで、Sの全組に共通するZの値を抽出していない。
- イ:Zの値の一部のみを抜き出しているが、Sの全組に共通する値ではない。
- ウ:Zの値をすべて列挙しているが、Sの全組に共通する値は「甲」のみなので誤り。
- エ:Sの全組に共通するZの値「甲」のみを正しく抽出しているため正解。
よくある誤解
商演算は単なる差集合や結合ではなく、Sの全ての組に対してRが持つ属性値を抽出する演算である点を誤解しやすいです。
また、共通属性と差分属性の区別をつけずに考えると誤答につながります。
また、共通属性と差分属性の区別をつけずに考えると誤答につながります。
補足コラム
関係代数の商演算は、データベースにおける「全ての条件を満たす」データ抽出に使われます。
例えば、「全ての科目を履修した学生」を抽出する場合などに応用されます。
SQL では商演算に相当する直接的な構文はありませんが、NOT EXISTS や GROUP BY と HAVING を組み合わせて実現します。
例えば、「全ての科目を履修した学生」を抽出する場合などに応用されます。
SQL では商演算に相当する直接的な構文はありませんが、NOT EXISTS や GROUP BY と HAVING を組み合わせて実現します。
FAQ
Q: 商演算と結合演算の違いは何ですか?
A: 結合は属性を結合して新しい組を作る操作で、商演算は「Sの全組に対応するRの属性値」を抽出する操作です。
A: 結合は属性を結合して新しい組を作る操作で、商演算は「Sの全組に対応するRの属性値」を抽出する操作です。
Q: 商演算の結果の属性はどのように決まりますか?
A: Rの属性からSの属性を除いた差分属性のみが結果の属性になります。
A: Rの属性からSの属性を除いた差分属性のみが結果の属性になります。
関連キーワード: 関係代数、商演算、データベース、属性分割、SQL, 全称条件

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

