ホーム > データベーススペシャリスト試験 > 2016年
データベーススペシャリスト試験 2016年 午前2 問12
関係代数における直積に関する記述として, 適切なものはどれか。
ア:ある属性の値に条件を付加し, その条件を満たす全てのタプルの集合である。
イ:ある一つの関係の指定された属性だけを残して, 他の属性を取り去って得られる属性の集合である。
ウ:二つの関係における, あらかじめ指定されている二つの属性の2項関係を満たす全てのタプルの組合せの集合である。
エ:二つの関係における, それぞれのタプルの全ての組合せの集合である。(正解)
解説
関係代数における直積についての解説
直積(Cartesian Product)とは?
関係代数における直積は、2つの関係(テーブル)が与えられたとき、その関係のすべての組み合わせのタプルを生成する操作です。
例えば、関係Rがm個の属性を持ち、n個のタプルを含み、関係Sがp個の属性を持ち、q個のタプルを含む場合、直積R × Sは次のような関係を生成します。
例えば、関係Rがm個の属性を持ち、n個のタプルを含み、関係Sがp個の属性を持ち、q個のタプルを含む場合、直積R × Sは次のような関係を生成します。
- 生成される関係の属性数:( m + p )
- 生成されるタプル数:( n \times q )
つまり、Rの各タプルごとにSのすべてのタプルと結びつけられた新しいタプルが作成されます。
選択肢の説明
-
ア: 「ある属性の値に条件を付加し、その条件を満たすすべてのタプルの集合」
→ これは**選択(Selection)**操作に該当します。直積ではありません。 -
イ: 「ある一つの関係の指定された属性だけを残して、他の属性を取り去って得られる属性の集合」
→ これは**射影(Projection)**操作に該当します。直積ではありません。 -
ウ: 「二つの関係における、あらかじめ指定されている二つの属性の2項関係を満たす全てのタプルの組合せの集合」
→ これは**結合(Join)**操作に近く、特定の条件を使って結合するものです。直積とは異なります。 -
エ: 「二つの関係における、それぞれのタプルのすべての組合せの集合」
→ まさに**直積(Cartesian Product)**の定義と一致します。
まとめ
直積は2つの関係から、それぞれのタプルのすべての組み合わせを生成する操作で、条件の指定はありません。関係代数の基本操作の一つで、他の操作(例えば結合)は直積と選択の組み合わせにより表現できます。
そのため、今回の設問の正解は エ であり、以下のように定義されます。
ここで、( t_r ) は関係 ( R ) のタプル、( t_s ) は関係 ( S ) のタプル、そして ( \cup ) は属性と値の結合を示します。