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


選択肢
ア:
イ:
ウ:
エ:(正解)
関係 R と関係 S の関係代数演算 R ÷ S で得られるものはどれか【午前2 解説】
要点まとめ
- 結論:関係代数の商演算 R ÷ S は、S の全ての値に対応する R の属性値を抽出し、選択肢エの結果となる。
- 根拠:商演算は「S の全ての組に対して R に存在する属性値」を求めるため、Z 列で共通する値を抽出する。
- 差がつくポイント:商演算の定義理解と、属性の分割(R と S の共通属性と差分属性)を正確に把握できているかが重要。
正解の理由
商演算 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」列に「甲」だけがある選択肢エとなります。
よくある誤解
商演算は単なる差集合や結合ではなく、S の全ての組に対して R が持つ属性値を抽出する演算である点を誤解しやすいです。
また、共通属性と差分属性の区別をつけずに考えると誤答につながります。
また、共通属性と差分属性の区別をつけずに考えると誤答につながります。
解法ステップ
- R と S の共通属性を確認する(ここでは X, Y)。
- R の属性から S の属性を除いた属性(ここでは Z)を特定する。
- S の全ての組に対して、R に存在する Z の値を探す。
- S の全組に共通して存在する Z の値のみを抽出する。
- 抽出した Z の値を結果として表現する。
選択肢別の誤答解説
- ア:R の一部の組をそのまま抜き出しただけで、S の全組に共通する Z の値を抽出していない。
- イ:Z の値の一部のみを抜き出しているが、S の全組に共通する値ではない。
- ウ:Z の値をすべて列挙しているが、S の全組に共通する値は「甲」のみなので誤り。
- エ:S の全組に共通する Z の値「甲」のみを正しく抽出しているため正解。
補足コラム
関係代数の商演算は、データベースにおける「全ての条件を満たす」データ抽出に使われます。
例えば、「全ての科目を履修した学生」を抽出する場合などに応用されます。
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, 全称条件

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

