<p><style_prompt: technical_tutor_style="">本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</style_prompt:></p>
<h1 class="wp-block-heading">令和5年度 秋期 データベーススペシャリスト 午前Ⅱ 問1 関係代数</h1>
<p>本問題は、関係代数の基本演算の組み合わせが、どの演算の定義と一致するかを問うています。直積・選択・射影の合成による「結合」の成立過程を理解することが肝要です。</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>【問題】
関係 R と関係 S に対して、次の手順で行う演算の結果はどれか。</p>
<p>① R と S の直積(デカルト積)を求める。
② ①の結果から、R の属性 A と S の属性 B の値が等しいという条件で選択(選択)を行う。
③ ②の結果から、R と S の全属性(重複する属性は除く)を抽出(射影)する。</p>
<p>ア:差
イ:結合
ウ:交わり
エ:和</p>
</blockquote>
<p>【解説】
関係データベースの理論的基礎である関係代数において、複数の基本演算を組み合わせることで、より高度な操作を定義できます。本問の手順は、リレーショナルデータベースで最も多用される「等結合(Equi-join)」の定義そのものです。</p>
<ol class="wp-block-list">
<li><p><strong>直積 ($R \times S$)</strong>: 2つの関係のすべてのタプルの組み合わせを作成します。</p></li>
<li><p><strong>選択 ($\sigma_{C}$)</strong>: 直積の結果から、特定の条件($R.A = S.B$ など)に合致する行のみを抽出します。</p></li>
<li><p><strong>射影 ($\pi_{L}$)</strong>: 抽出された行から、必要な列(属性)のみを取り出します。</p></li>
</ol>
<p>これら一連の流れは、数学的に以下の等式で表されます。</p>
<p>$$ R \bowtie_{R.A=S.B} S = \pi_{L}(\sigma_{R.A=S.B}(R \times S)) $$</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
R["関係R"] --> Product["直積 R × S"]
S["関係S"] --> Product
Product --> Selection{"選択 σ R.A=S.B"}
Selection --> Projection["射影 π"]
Projection --> Result["結合結果 R ⨝ S"]
</pre></div>
<p>【選択肢の吟味】</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">選択肢</th>
<th style="text-align:left;">判定</th>
<th style="text-align:left;">解説</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">ア</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">差($R – S$)は、Rに含まれSに含まれないタプルを抽出する演算であり、直積は使用しません。</td>
</tr>
<tr>
<td style="text-align:left;">イ</td>
<td style="text-align:left;"><strong>正解</strong></td>
<td style="text-align:left;">直積、選択、射影をこの順で行う演算は、内部結合(特に等結合)の定義に合致した操作です。</td>
</tr>
<tr>
<td style="text-align:left;">ウ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">交わり($R \cap S$)は、RとSの両方に共通するタプルを抽出する演算です。</td>
</tr>
<tr>
<td style="text-align:left;">エ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">和($R \cup S$)は、RまたはSに含まれるすべてのタプル(重複除外)を抽出する演算です。</td>
</tr>
</tbody>
</table></figure>
<p>【ポイント】</p>
<ul class="wp-block-list">
<li><p><strong>結合(Join)の本質</strong>: 直積集合から条件に合うものをフィルタリングする操作である。</p></li>
<li><p><strong>和・差・交わりの前提</strong>: これらの集合演算を行うには、属性数とドメインが一致する「型適合(Union-compatibility)」が必要。</p></li>
<li><p><strong>直積の計算量</strong>: タプル数が $n, m$ の場合、直積の結果は $n \times m$ となり、大規模データでは選択を先に行う最適化が重要。</p></li>
</ul>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
令和5年度 秋期 データベーススペシャリスト 午前Ⅱ 問1 関係代数
本問題は、関係代数の基本演算の組み合わせが、どの演算の定義と一致するかを問うています。直積・選択・射影の合成による「結合」の成立過程を理解することが肝要です。
【問題】
関係 R と関係 S に対して、次の手順で行う演算の結果はどれか。
① R と S の直積(デカルト積)を求める。
② ①の結果から、R の属性 A と S の属性 B の値が等しいという条件で選択(選択)を行う。
③ ②の結果から、R と S の全属性(重複する属性は除く)を抽出(射影)する。
ア:差
イ:結合
ウ:交わり
エ:和
【解説】
関係データベースの理論的基礎である関係代数において、複数の基本演算を組み合わせることで、より高度な操作を定義できます。本問の手順は、リレーショナルデータベースで最も多用される「等結合(Equi-join)」の定義そのものです。
直積 ($R \times S$): 2つの関係のすべてのタプルの組み合わせを作成します。
選択 ($\sigma_{C}$): 直積の結果から、特定の条件($R.A = S.B$ など)に合致する行のみを抽出します。
射影 ($\pi_{L}$): 抽出された行から、必要な列(属性)のみを取り出します。
これら一連の流れは、数学的に以下の等式で表されます。
$$ R \bowtie_{R.A=S.B} S = \pi_{L}(\sigma_{R.A=S.B}(R \times S)) $$
graph TD
R["関係R"] --> Product["直積 R × S"]
S["関係S"] --> Product
Product --> Selection{"選択 σ R.A=S.B"}
Selection --> Projection["射影 π"]
Projection --> Result["結合結果 R ⨝ S"]
【選択肢の吟味】
| 選択肢 |
判定 |
解説 |
| ア |
誤り |
差($R – S$)は、Rに含まれSに含まれないタプルを抽出する演算であり、直積は使用しません。 |
| イ |
正解 |
直積、選択、射影をこの順で行う演算は、内部結合(特に等結合)の定義に合致した操作です。 |
| ウ |
誤り |
交わり($R \cap S$)は、RとSの両方に共通するタプルを抽出する演算です。 |
| エ |
誤り |
和($R \cup S$)は、RまたはSに含まれるすべてのタプル(重複除外)を抽出する演算です。 |
【ポイント】
結合(Join)の本質: 直積集合から条件に合うものをフィルタリングする操作である。
和・差・交わりの前提: これらの集合演算を行うには、属性数とドメインが一致する「型適合(Union-compatibility)」が必要。
直積の計算量: タプル数が $n, m$ の場合、直積の結果は $n \times m$ となり、大規模データでは選択を先に行う最適化が重要。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント