商演算とは?しょうえんざん
商演算とは、関係Rを関係Sで割り、Sに現れるすべての値と組になっている値だけを取り出す演算。「すべての〜を満たすものを求めよ」という全称条件を一つの演算で表せる点に意味があり、結果の列はRの列からSの列を除いた残りになる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
SQLには「いずれかを満たす」を表すEXISTSはあるが、「すべてを満たす」を直接書く述語が用意されていない。そのため実装側では「満たさないものが一つも存在しない」と二重に否定して書く必要があり、書き手にとって発想しにくい形になる。関係代数の側でこの型に演算として名前を与えておくと、要件の文言から書くべき問合せの形へ一段で降りられる。試験はこの対応づけができるかを見ている。
具体例
取扱表(店舗コード, 商品コード)を店舗表(店舗コード)で割ると、「全店舗で取り扱われている商品」が得られる。結果に残るのは商品コードの列だけで、店舗コードは割った側に吸収されて消える。
試験での引っ掛け
商は基本演算ではなく、直積・差・射影の組合せで書き直せる導出演算である。SQLに直すときは NOT EXISTS を二重に重ねる形が定石で、これを「すべての行に対して条件が成り立つ」と素直に書けると誤解しやすい。結果の列がRとSの差集合になる(割った側の列は残らない)点も、結合と取り違えると答えが合わなくなる。
関連用語
出た過去問
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問11(IPA)
関係Rと関係Sにおいて、R÷Sの関係演算結果として、適切なものはどれか。ここで、÷は商演算を表す。
正解:店: B
要点:商演算は除数の全値と組になる行だけを取り出す
商演算R÷Sは、Sに現れるすべての値と組になっている左側の値だけを取り出す演算である。ここでは関係Sの3つの商品すべてと対応付けられている店を探すことになり、それに当てはまるのは1つだけである。よってウが結果となる。
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)
関係演算において、商演算と同等な結果が得られる演算の組合せはどれか。
正解:直積演算と射影演算と差演算
要点:商演算は直積・射影・差の組合せで表現できる
商(division)は、被除数の関係の中から、除数の関係に現れる値すべてと組になっている値を取り出す演算である。これは、まず候補を射影で取り出して除数と直積を作り、実際には存在しない組合せを差で洗い出し、その候補をもとの候補から差し引くという手順で表せる。したがって直積・射影・差の3演算があれば表現できる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。