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

データベーススペシャリスト 2024年 午前211


問題文

関係R, Sに次の演算を行うとき、RとSが和両立である必要のないものはどれか。

選択肢

共通集合
差集合
直積(正解)
和集合

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

関係の和両立条件【午前2解説】

正解の理由

関係代数における和両立(和集合の適合性)とは、関係RとSが「同じ属性集合(同一のヘッダ:属性名と各属性のドメイン)」を持っていることを指します。和集合(Union)、共通集合(Intersection)、差集合(Difference)はこれを前提として定義されるため、RとSが和両立でなければこれらの演算は意味を持ちません。一方、直積(Cartesian product)は2つの関係の属性を単純に結合して新しいタプル集合を作る操作であり、RとSが同じ属性集合を持つ必要はありません。したがって、和両立が必要ないのは (直積)です。

解法ステップ

  1. 「和両立(和集合の適合性)」の定義を確認する:RとSが同一の属性名・対応する属性のドメインを持つこと。
  2. 各演算が属性スキーマの一致を必要とするか検討する:
    • 和集合(Union):同一スキーマが必須(要和両立)。
    • 共通集合(Intersection):同一スキーマが必須(要和両立)。
    • 差集合(Difference):同一スキーマが必須(要和両立)。
    • 直積(Cartesian product):スキーマを結合するだけでよく、同一スキーマは不要。
  3. 和両立が不要なものとして直積を選ぶ。

選択肢別の誤答解説

  • ア: 共通集合(Intersection)
    共通集合は、RとSの両方に同じ属性名・同じドメインを持つタプルが存在するかを比較して決める演算です。属性名・ドメインが一致していなければ「同じタプル」を定義できないため、和両立が必須です。
  • イ: 差集合(Difference)
    差集合は「RからSに含まれるタプルを除く」操作です。ここでも「RとSのタプルを比較する」必要があるため、属性名とドメインの一致(和両立)が必要です。差集合が和両立を前提としない、という表現は誤りです。
  • ウ: 直積(Cartesian product)
    直積はRの各タプルとSの各タプルを組み合わせ、新しいタプル(Rの属性+Sの属性)を作る操作です。RとSの属性セットが異なっていても問題なく定義できるため、和両立は不要です。したがって本問の正解は です。
  • エ: 和集合(Union)
    和集合はRとSのタプル群を結合(重複を除く)する操作であり、「同じ属性名・ドメインであること」が前提です。よって和両立が必須です。

よくある誤解

  1. 和両立=「共通部分が空であること」だと誤解する
    誤りです。和両立は属性の互換性(スキーマ一致)を指し、タプルの共通部分(集合としての重複)が空かどうかとは無関係です。
  2. 直積でも属性名が被ると和両立が必要になると考える
    直積は属性名の被り自体を許容します(実装上は名前衝突を解消するためにリネームすることがある)が、スキーマ一致(完全な属性集合の一致)は不要です。必要なのはタプルの直積をどう表現するかの処理です。
  3. 差集合は「場合によっては」和両立不要とするあいまい表現
    明確に、差集合は比較操作を伴うため和両立が必須です。「場合が多い」といった曖昧さは避けてください。

補足コラム

  • 関係代数での「同じ属性集合」とは、属性名が同一であることに加え、各属性のドメイン(型)が互換であることを含みます。実務やSQLの世界では若干の差異があります。たとえばSQLのUNIONでは列名そのものは必須条件ではなく、列数と型の互換性が重要です(列名は結果の列ヘッダに影響するが、照合の基準ではない)。一方、理論的なリレーショナル代数の記述では属性名の一致まで要求する解釈が多い点に注意してください。
  • 直積はデータ爆発(行数が掛け算される)を招くため、実運用では注意が必要です。代替として結合(Join)で結合条件を付けることが多いです。

FAQ

Q1: 属性名が異なっていてもドメインが同じなら和集合できるか?
A1: 理論的には属性名が同一であることが原則です。実装(SQL等)では列順と型の互換性により可とする場合がありますが、試験問題では「同一属性集合(名前とドメインの一致)」を満たすかで判断します。
Q2: 直積で属性名が重複したらどうなる?
A2: 定義上は問題なく演算できますが、実装では衝突を避けるため片方の属性名をリネームするなどの処理が行われます。リレーショナル代数の説明では「属性名の区別」を行って扱います。
Q3: 和両立はどの演算で必須かを一言で言うと?
A3: 要するに「集合演算(和・差・共通)」は和両立必須、直積は不要です。

関連キーワード: 和両立、スキーマ一致、和集合、差集合、共通集合、直積、直積と結合、属性名、ドメイン、リレーショナル代数
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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