戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

データベーススペシャリスト 2010年 午前212


問題文

次の関係 R, S, T, U において、関係代数表現 R×S÷T×U の演算結果はどれか。ここで、×は直積、÷は商、-は差の演算を表す。
データベーススペシャリスト 2010年 午前2 問12の問題画像データベーススペシャリスト 2010年 午前2 問12の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

商演算【午前2解説】

正解の理由

商(÷)は次のように定義されます。

すなわち、商の結果は「除算される方 の属性から除かれる方 の属性を取り除いた残りの属性について、 の全ての組を付け加えても に含まれる組だけ」を返します。
本問では、まず の関係とみなし、これを (属性 )で割ると属性は になります。 を計算すると の候補は の両方が条件を満たします。さらに問題文の式にある差(−)的な除去を U の値で行う(U に が含まれる)と、残るのは だけです。したがって最終的な表は (B,C) = (a,y) の一行となり、選択肢 が該当します。

解法ステップ

  1. R×S を作る(属性は A,B,C)。R の各行に対して S の各 C 値を結合する:
    • R の行 (1,a),(2,b),(3,a),(3,b),(4,a) と S={x,y} から得られる (A,B,C) は次の10組: (1,a,x),(1,a,y),(2,b,x),(2,b,y),(3,a,x),(3,a,y),(3,b,x),(3,b,y),(4,a,x),(4,a,y)
  2. T の A 値は {1,3}。商 の定義により、候補となる (B,C) は「A が 1 と 3 の両方について (A,B,C) が上の R×S に存在する」組:
    • (a,x) を見ると (1,a,x) と (3,a,x) はどちらも存在 → 合格
    • (a,y) を見ると (1,a,y) と (3,a,y) はどちらも存在 → 合格
    • (b,x) では (1,b,x) が存在しない → 不合格
    • (b,y) では (1,b,y) が存在しない → 不合格 よって (属性は B,C)。
  3. 最後に問題文の式で U が関与する部分(差として扱う)を考えると、U は (B,C) = (a,x),(c,z) を含む。差を取ると が除かれ、残るのは のみ:
以上により最終結果は B=a, C=y の一行で、選択肢 の記述と一致します。

選択肢別の誤答解説

  • :正しい。上で示した通り、最終的に (B,C)=(a,y) の一行が残るため一致する。
  • イ: を主張しているが、A=1 のとき (1,b,x) が R×S に存在しないため、T の全 A 値を満たさず不正解。
  • ウ:複数行を含むが、(a,x) が U によって除去される点を無視しているか、あるいは商の「∀(全て)」条件を誤解している(また「y−x」のような表記は集合差の誤用で混乱を招く)。
  • エ:(a, y−x) のような表記や (−c, −z) の意味が曖昧で誤り。U にある (c,z) はもともと に含まれないため、こうした負の表記は意味をなさない。

よくある誤解

  • 商を「差(−)の反対」や「除外する操作」と誤解する:商は「ある属性群について全ての組が存在するか」を調べる全称(∀)の操作で、単純な差とは根本的に異なります。
  • 演算の順序を曖昧に扱う:×や÷などは結合順序で結果が変わる場合があるので、式の括弧や問題文の意図(どの演算を先にするか)を確認すること。
  • 商の結果属性を誤る: の属性は必ず の属性集合から の属性集合を取り去ったものになる()。

補足コラム

商演算は自然言語で言うと「ある属性の組(例えば B の値)が、別の属性群(ここでは A)のどの値と組になっても常に存在するか」を検査する操作です。実装的には SQL で「for all」を表現するために NOT EXISTS と組合せた除外表現や、次の同値変換を使います:
この式は「まず A の候補を取り出し、候補 × 全ての B(S)を作って R にない組があれば除外する」という構成です。実際の試験対策では、商を直接扱うよりこのような射影・直積・差の組合せで判定すると手計算しやすくなります。

FAQ

Q1. 商の divisor の属性が と同じ場合、結果はどうなる?
A1. その場合 が空集合になり、定義により「空属性のタプル(空タプル)が条件を満たすかどうか」が問題になります。全ての u∈Y について t∪u∈X を満たすならば空タプルを含む一行(=1行)を返し、満たさなければ空集合になります。
Q2. 商を手計算するときの実務的なコツは?
A2. (1) X を列挙して candidate(X の属性から Y を除いた投影)を作る、(2) 各 candidate について Y の全組と結合して X に含まれるかをチェック、(3) 不足があれば除外。必要なら差の式による同値変形を用いるとミスが減ります。

関連キーワード: 関係代数, 商, 直積, 差, 射影
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について