基本情報技術者試験「関係代数」の問題
社員表から『部署が営業部である社員の氏名と社員番号』を取り出すには、関係代数のどの演算をどう組み合わせればよいか。
ア氏名と社員番号で射影した後、部署=営業部で選択する。順序は結果に影響しない
イ和集合演算で営業部の関係と社員表を結合し、その後で結合を行う
ウ部署=営業部で選択した後、結合演算で氏名と社員番号を取り出す
エ部署=営業部で行を選択し、その結果に対して氏名と社員番号で射影する
正解
エ.部署=営業部で行を選択し、その結果に対して氏名と社員番号で射影する
まず選択で『部署=営業部』の行を抽出し、次に射影で氏名と社員番号の列だけを残す。条件抽出(選択)と列抽出(射影)を組み合わせるのが正しい手順である。
?選択肢ごとの解説
ア ×先に氏名と社員番号だけへ射影すると部署列が失われ、後から部署=営業部の選択ができなくなる。順序が結果に影響しないという記述も誤りである。
イ ×列を取り出す操作は射影であって結合ではなく、和集合や結合を使うという説明は演算の選び方が誤っている。
ウ ×列を取り出すのは射影であり結合ではない。結合は複数の関係を結びつける演算で、単一表から列を選ぶ用途には合わない。
エ ○まず選択で『部署=営業部』の行を抽出し、次に射影で氏名と社員番号の列だけを残す。条件抽出(選択)と列抽出(射影)を組み合わせるのが正しい手順である。
✎くわしく
行の絞り込み(選択)に使う属性を後の射影で落としてしまうと条件が指定できなくなるため、選択を先に行うのが安全である。SQLではWHERE(選択)とSELECT句(射影)が一文で書けるが、関係代数では演算順序を意識する必要がある。
✓本番での押さえどころ
試験のコツ
『行を絞る=選択(WHERE)』『列を選ぶ=射影(SELECT)』。条件に使う列を落とさぬよう選択を先に置く。
覚え方
選択で『欲しい行に絞り』、射影で『欲しい列に映す』。横に絞って縦に投影、と順序で覚える。
よくある誤り
列を取り出す操作に結合や和集合を選ぶ、または射影を先に行い条件列を失う誤りが多い。
データベースの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0236