令和7年秋期試験問題 午前Ⅱ 問10
正解 イ問題へ
分野 :テクノロジ系
中分類:データベース
小分類:データ操作
中分類:データベース
小分類:データ操作
広告
解説
関係データベースの商演算(R÷S)は、関係Rのうち、関係Sの全ての要素と関連する行の集合を返す演算です。「全ての科目を受講している」「全ての部品を供給している」など、全部・全てを満たす条件(全称条件:for all)を集合として得るものですが、標準SQLでは実装されていません。
下記例でいえば、左表に含まれる組のうち右表のA(1,3)の両方をもつ、(a,x)と(a,y)が結果として得られます。
結論から言えば、商演算は「直積演算と射影演算と差演算」によって得ることができます。次の関係Rと関係Sにおいて、R÷Sを得る処理手順は以下のとおりです。
【別解】
商演算の性質を知っていれば、少なくとも列を取り出す必要があるため射影が不可欠とわかります。そうなると「イ」と「ウ」に解答候補が絞られます。直積の結果から不必要な行を削除するためには「和」ではなく「差」が適当なので、消去法で正解は「イ」と導けます。
下記例でいえば、左表に含まれる組のうち右表のA(1,3)の両方をもつ、(a,x)と(a,y)が結果として得られます。


- RからSの属性を除いたR'を得る(射影)

- R'とSの直積R'×Sを得る(直積)。この操作は、本来あるべき全組合せを用意することに相当します

- R'×SのうちRに含まれない行(R'×S)-Rを得る(差)。本来あるべき組合せのうち、実際にはRに存在しないものを取得します

- 3.の結果からSの属性を除く(射影)。差演算をするために和両立にします

- R'から4.の行を除く(差)。これで関係Sの組すべてを含む行のみが取得できる

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