次の関係R, S, T, Uにおいて, 関係代数表現R×S÷T-Uの演算結果はどれか。ここで, ×は直積, ÷は商, -は差の演算を表す。
解説
関係代数表現 R×S÷T - U の演算結果はどれか【午前2 解説】
要点まとめ
- 結論:演算結果は選択肢アの「B=a, C=y」の1行である。
- 根拠:R×Sの直積からTのA列で商を取り、Uの差集合を適用するとこの結果になる。
- 差がつくポイント:商演算の意味と差集合の適用順序を正確に理解し、属性の整合性を確認することが重要。
正解の理由
R×SはRの各行にSの全行を結合し、属性はA,B,Cとなる。
次に商演算 R×S÷T は、TのA列の値(1,3)に対応するAの値を持つR×Sの行を除外し、残りの行のB,C列を抽出する。
最後に差集合 -U で、Uにある(B,C)の組み合わせを除く。
この過程で残るのはB=a, C=yの1行のみであり、選択肢アが正解となる。
よくある誤解
商演算は単なる差集合ではなく、特定の属性に基づく除外である点を誤解しやすいです。
また、差集合の適用対象の属性を混同し、誤った結果を導くことがあります。
解法ステップ
- R×Sの直積を求め、属性A,B,Cの全組み合わせを作成する。
- TのA列の値(1,3)を用いて、R×SのA列がTに含まれる行を除外する(商演算)。
- 残った行のB,C列を抽出し、Uの(B,C)組み合わせを差集合で除外する。
- 最終的に残った行が演算結果となる。
選択肢別の誤答解説
- ア:正解。R×S÷T - U の演算結果として正しい。
- イ:B=b, C=x はTのA=3に該当する行が除外されていないため誤り。
- ウ:B=a, C=y−x のような演算結果は関係代数の基本演算に存在しないため誤り。
- エ:負の値や不正な属性値が含まれており、関係代数の演算結果として不適切。
補足コラム
関係代数の商演算は、ある関係の属性の部分集合に対して「すべての値を持つ」行を抽出する操作です。
本問題では商演算の逆の意味で使われているため、商の定義を正確に理解することが重要です。
また、差集合は同じ属性セットを持つ関係間でのみ適用可能です。
FAQ
Q: 商演算はどのような場合に使いますか?
A: 商演算は「ある属性の値の組み合わせがすべて存在する」行を抽出する際に使います。
Q: 差集合と商演算の違いは何ですか?
A: 差集合は単純に片方にあってもう片方にない行を除外する操作で、商演算は属性の包含関係に基づく抽出操作です。
関連キーワード: 関係代数, 直積, 商演算, 差集合, 属性, SQL基礎, データベース理論