データベーススペシャリスト令和7年秋期 午前Ⅱ 問10

問10

関係演算において,商演算と同等な結果が得られる演算の組合せはどれか。
  • 直積演算と差演算と選択演算
  • 直積演算と射影演算と差演算
  • 直積演算と射影演算と和演算
  • 直積演算と選択演算と和演算

分類 :

テクノロジ系 » データベース » データ操作

正解 :

解説 :

関係データベースの商演算(R÷S)は、関係Rのうち、関係Sの全ての要素と関連する行の集合を返す演算です。「全ての科目を受講している」「全ての部品を供給している」など、全部・全てを満たす条件(全称条件:for all)を集合として得るものですが、標準SQLでは実装されていません。

下記例でいえば、左表に含まれる組のうち右表のA(1,3)の両方をもつ、(a,x)と(a,y)が結果として得られます。
10_1.png/image-size:442×211
結論から言えば、商演算は「直積演算と射影演算と差演算」によって得ることができます。次の関係Rと関係Sにおいて、R÷Sを得る処理手順は以下のとおりです。
10_2.png/image-size:201×149
  1. RからSの属性を除いたR'を得る(射影)
    10_3.png/image-size:81×128
  2. R'とSの直積R'×Sを得る(直積)。この操作は、本来あるべき全組合せを用意することに相当します
    10_4.png/image-size:321×216
  3. R'×SのうちRに含まれない行(R'×S)-Rを得る(差)。本来あるべき組合せのうち、実際にはRに存在しないものを取得します
    10_5.png/image-size:441×216
  4. 3.の結果からSの属性を除く(射影)。差演算をするために和両立にします
    10_6.png/image-size:82×106
  5. R'から4.の行を除く(差)。これでSの組すべてを含む行のみが取得できる
    10_7.png/image-size:395×128
したがって必要な演算は、直積、射影、差の3つとなります。よって「イ」が正解です。

【別解】
商演算の性質を知っていれば、少なくとも列を取り出す必要があるため射影が不可欠とわかります。そうなると「イ」と「ウ」に解答候補が絞られます。直積の結果から不必要な行を削除するためには「和」ではなく「差」が適当なので、消去法で正解は「イ」と導けます。

Pagetop