システム監査技術者 2010年 午前2 問21
問題文
関係データベースの表XとYを結合した後、実行結果Zを得る演算はどれか。

選択肢
ア:射影と選択(正解)
イ:射影と和
ウ:選択
エ:選択と和
🔒 解説は解答すると表示されます
射影と選択【午前2解説】
正解の理由
実行結果Zには、学部名が「情報学部」の学生だけが残っており、列も「学部名」「学生番号」「氏名」に絞られています。
結合後の表から、まず「情報学部」の学生だけを取り出す操作が選択です。さらに、必要な3列だけを取り出す操作が射影です。この2つの操作を行うため、正しいのはアです。
解法ステップ
- 表Xと表Yを「学部コード」で結合します。表Xの学生に、表Yの学部名を対応付けます。
- 結合結果から、学部名が「情報学部」の行だけを選びます。これが選択です。
- 「学部名」「学生番号」「氏名」の列だけを残します。これが射影です。
なお、選択は行を絞り込み、射影は列を絞り込む操作です。
選択肢別の誤答解説
- ア:正解です。行を選択し、必要な列を射影することでZになります。
- イ:射影と和の組合せです。和は、同じ属性構成の関係に含まれる行をまとめる演算です。今回のように条件で行を絞り込む操作にはなりません。
- ウ:選択だけでは、結合結果にある不要な列が残ります。Zの列構成にするには射影も必要です。
- エ:選択は行を絞り込めますが、和では必要な列だけを取り出せません。
よくある誤解
- 選択と射影を取り違える:選択は行、射影は列に対する操作です。
- 選択だけでZになると思う:行数は絞れても、列は結合結果のまま残るため、射影が必要です。
- 和を「条件に合う行をまとめる操作」と考える:和は、同じ属性構成を持つ関係どうしを統合する演算です。
補足コラム
関係代数では、選択を 、射影を で表します。たとえば、学部名が「情報学部」の行を選び、その後に必要な列を取り出す処理は、概念的に次のように表せます。
FAQ
選択と射影は、必ず選択を先に行いますか?
この問題では、行を条件で絞ってから必要な列を残すと考えると分かりやすいです。処理の表し方や最適化によって、実際の実行順序が変わる場合もあります。
この問題では、行を条件で絞ってから必要な列を残すと考えると分かりやすいです。処理の表し方や最適化によって、実際の実行順序が変わる場合もあります。
表Xにある学部コードCの学生がいないのに、表YにCがあるのはなぜですか?
通常の内部結合では、両方の表に対応する学部コードがある行だけが結合結果に含まれます。学部コードCは表Xにないため、結合結果には現れません。
通常の内部結合では、両方の表に対応する学部コードがある行だけが結合結果に含まれます。学部コードCは表Xにないため、結合結果には現れません。
関連キーワード: 関係代数、射影、選択、結合、和

\ せっかくなら /
システム監査技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

