商演算とは?しょうえんざん
商演算とは、関係代数で、関係Rを関係Sで割り、Sに現れるすべての値と組になっている行だけを取り出す演算。「すべての〜を満たす」という全称条件を表現する。基本演算ではなく直積・差・射影の組合せで表現でき、SQLではNOT EXISTSの二重否定で書くのが定石。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
射影・選択・結合は「ある条件に合う行」を選ぶ道具で、「条件をすべて満たす」は素直に書けない。全称条件は実務では「要求される権限をすべて持つ利用者」「必須研修をすべて受講した担当者」のように頻出するため、それを1つの演算として定義したのが商。支援士試験では、認可判定や監査での網羅性チェックをSQLで組む際の考え方として問われる。
具体例
「必須のセキュリティ研修をすべて受講した社員」は、受講(社員番号, 研修ID)÷必須研修(研修ID)で得られる。SQLでは「受講していない必須研修が存在しない社員」とNOT EXISTSを重ねて書く。IPAの過去問では、履修表と必修科目表の組合せで出題される。
試験での引っ掛け
商は「割る側の値をすべて持つ行」であり、「どれか1つでも持つ」なら結合で足りる。結果にはSの属性は残らない。SQLで単純にIN句を使うと「いずれか」の意味になって全称にならない点が引っ掛け。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。