ITパスポート 令和5年度 問100:databaseに関する問題
関係データベースにおける結合操作はどれか。
- a表から,特定の条件を満たすレコードを抜き出した表を作る。
- b表から,特定のフィールドを抜き出した表を作る。
- c二つの表から,同じ値をもつレコードを抜き出した表を作る。
- d二つの表から,フィールドの値によって関連付けした表を作る。正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d です。
データベースの「結合」とは、2つの表を“共通の項目”でくっつけて1つの表にすること。たとえば「社員番号」をのりしろにして、社員の表と部署の表を貼り合わせ、誰がどの部署かを一覧にするイメージです。
👉 覚え方:結合=「2つの表を“共通のキー”でガッチャンコ」。
ほかの選択肢:a 条件に合う行だけ取り出す(選択)/b ほしい列だけ取り出す(射影)/c 同じ値の行を取り出す(共通部分・積)。dの「2つの表をフィールドの値で関連付ける」だけが結合の説明です。
なぜこれが正解か
正解は d。関係データベースの結合(join)は、二つ以上の表を、共通するフィールド(項目)の値をキーにして関連付け、一つの表にまとめる操作。dの「二つの表から、フィールドの値によって関連付けした表を作る」が定義に一致する。
各選択肢の解説
- a:特定の条件を満たすレコード(行)を抜き出す=選択(selection)。
- b:特定のフィールド(列)を抜き出す=射影(projection)。
- c:二つの表から同じ値をもつレコードを抜き出す=集合演算の共通(積/INTERSECT)で、結合とは異なる。
覚え方・ひっかけ注意
関係演算の基本は3つ。選択=行で絞る/射影=列で絞る/結合=表をつなぐ。「行か・列か・表の連結か」で振り分ける。cは“同じ値の行”という表現が結合と紛らわしいが、これは集合演算であって結合(関連付け)ではない点に注意。
理論的背景
関係代数(relational algebra)は関係データベース操作の数学的基盤であり、E.F. Coddが1972年に体系化した。関係代数の基本演算は5種類:選択(σ:条件に合う行の抽出)・射影(π:特定の列の抽出)・和(∪:2つの表の行の合併)・差(-:一方にのみ存在する行)・直積(×:2表の全組み合わせ)で、これらの合成として導出できる派生演算に「結合(join)」がある。結合(θジョイン)は2つの表から「指定した結合条件を満たす行の組み合わせ」を抽出した表を生成する演算であり、「フィールドの値によって関連付けた表」という本問の定義に直接対応する。選択(selection)が1つの表から行を絞り込む一方、結合(join)は複数の表を「関連する値で組み合わせる」点が根本的な違いである。SQL上での対応はSELECT文のWHERE節(選択)・SELECT列リスト(射影)・JOIN節(結合)である。標準的な結合の種類として、INNER JOIN(両表に一致する行のみ)・LEFT/RIGHT OUTER JOIN(片方に一致がなくてもNULLを補ってすべての行を保持)・CROSS JOIN(直積・全組み合わせ)・NATURAL JOIN(同名列で自動結合)がある。
実務での使われ方
実務のデータベース操作では結合が最も多用される操作の一つであり、正規化されたデータベース(複数テーブルに分割されたデータ)を使いやすい形に再結合するために不可欠である。典型的なERPシステムでは「受注テーブルJOIN顧客テーブルJOIN商品テーブル」という多段結合が日常的に実行される。結合操作の実行効率はデータベースのパフォーマンスに直結するため、SQLオプティマイザが実行計画(EXPLAIN PLAN)で最適な結合アルゴリズム(Nested Loop Join・Hash Join・Sort Merge Join)を自動選択する。インデックスが結合キー(外部キー等)に設定されているかどうかで結合性能が桁違いに変わるため、インデックス設計と結合クエリの最適化は実務DBエンジニアの核心スキルの一つである。NoSQL(MongoDB・DynamoDB等)はスケールアウトのために結合操作を意図的に制限しており、「非正規化(アプリ側で結合に相当する処理を行う)」が設計原則となる点が関係DBとの本質的な差異である。
試験での位置づけ
関係データベースの3大操作(選択・射影・結合)はITパスポートのデータベース分野で繰り返し出題される最頻出テーマである。本問のように4選択肢が「選択(条件を満たす行を抽出)」「射影(特定のフィールドを抽出)」「結合(値によって関連付けた表を生成)」という操作定義の記述問題になっているパターンは典型的であり、選択肢cの「同じ値を持つレコードを抽出」という記述が「等結合(EQUI-JOIN)」に近似した表現であることに注意が必要である(実際は等結合も結合の一形態であり、「フィールドの値によって関連付けた表」という正解dの方がより汎用的な結合の定義)。基本情報技術者では結合の種類(内部結合・外部結合・自己結合)とSQLでの実装、副問い合わせ(サブクエリ)との違い、集合演算(UNION・INTERSECT・EXCEPT)まで踏み込んで問われる。
選択肢の発展補足
選択肢aの「特定の条件を満たすレコードを抽出」は選択(Selection)であり、SQLではWHERE句に対応する。「SELECT * FROM 受注 WHERE 受注日 > '2024-01-01'」のように行をフィルタリングする操作である。選択肢bの「特定のフィールドを抽出」は射影(Projection)であり、SQLではSELECT句の列リストに対応する。「SELECT 顧客名, 電話番号 FROM 顧客」のように不要な列を除いた垂直方向の絞り込みである。選択肢cの「同じ値を持つレコードを抽出した表を作る」は正確には「等結合(equi-join)」か、あるいは集合演算の「共通(INTERSECT)」に近い記述であり、本問の文脈では「2つの表から同じ値を持つレコードの組み合わせを取り出す」という等結合の特殊ケースを示しているが、「フィールドの値によって関連付けた表を作る」という選択肢dの方がより一般的な結合(θジョイン:等号以外の比較条件も含む)の定義として正確である。実務ではLeft Join vs Inner Joinの選択ミスによるデータ欠落バグが多発するため、外部結合の動作(一致しない側をNULLで補完)の正確な理解が保守性の高いSQL作成に不可欠である。
出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和5年度 問100/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。