基本情報技術者 2009年 春期 午前(科目A) 問34
問題文
関係データベースの操作に関する記述のうち、適切なものはどれか。
選択肢
ア:結合は、二つ以上の表を連結して、一つの表を生成することをいう。(正解)
イ:射影は、表の中から条件に合致した行を取り出すことをいう。
ウ:選択は、表の中から特定の列を取り出すことをいう。
エ:挿入は、表に対して特定の列を挿入することをいう。
🔒 解説は解答すると表示されます
関係データベース操作【午前解説】
正解の理由
アが正解です。結合(join)はリレーショナルデータベースで二つ以上の表を、共通の属性(列)や条件に基づいて組み合わせ、新たな結果表(タプルの組み合わせ)を生成する操作を指します。SQLでは INNER JOIN、LEFT JOIN などで実現され、結果は結合条件に一致する行の組合せになります。選択(selection)や射影(projection)とは目的が異なり、アの記述が結合の定義に合致します。
解法ステップ
- 各用語(結合、射影、選択、挿入)の定義をリレーショナル代数やSQLの観点で頭の中で確認する。
- 選択肢の日本語表現が概念に合致するかを「列(属性)を扱うか」「行(タプル)を扱うか」「表の構造を変えるか」に分けて判定する。
- 該当する操作がSQLのどの文に対応するか(JOIN、SELECT(列指定/WHERE)、INSERT、ALTER TABLEなど)で照合して誤りを除外する。
- 最後に残った選択肢が正解であることを定義的に確認する。
選択肢別の誤答解説
- ア: 正しい。結合は二つ以上の表を共通属性や条件で組み合わせて一つの結果表を作る操作です(SQLのJOIN)。
- イ: 誤り。記述は「選択(selection)」の定義にあたります。射影(projection)は列を取り出す操作です。
- ウ: 誤り。記述は「射影(projection)」の定義です。選択(selection)は条件に合う行を取り出す操作を指します。
- エ: 誤り。挿入(INSERT)は表に「行(レコード)」を追加する操作であり、列を追加する操作はALTER TABLEで行います。
よくある誤解
- 射影と選択を逆に覚える:射影は「列を取り出す」、選択は「行を取り出す(条件で絞る)」と整理すること。
- 挿入は列を追加する操作だと思い込む:挿入(INSERT)は新しい行(レコード)を追加する操作であり、列を追加するにはALTER TABLEで列定義を変更します。
- 結合=単純な連結と誤認:結合は単に行を上下に繋ぐ連結ではなく、指定した列や条件に基づく組合せ(行の結合)です。単純な上下連結はUNIONや縦方向の連結に相当します。
補足コラム
リレーショナル代数とSQLの対応は試験でも頻出です。基本的な対応は次の通りです。
- 結合(join) → SQL: JOIN ... ON ... (内部結合、外部結合など)
- 射影(projection) → SQL: SELECT 列名, ...(列の指定)
- 選択(selection) → SQL: WHERE 条件(行のフィルタ)
- 挿入(insertion) → SQL: INSERT INTO テーブル (列1,列2) VALUES (...);
また、表の「列」を追加・削除する操作は DDL の ALTER TABLE を使用します。結合は概念的には各表の行を組み合わせるため、結合条件が適切でないと結果が冗長になったり行数が増えたりする点にも注意してください。
例(SQL)
-- 結合(join)
SELECT A.*, B.price
FROM Orders A
JOIN Products B ON A.product_id = B.id;
-- 射影(列抽出)と選択(行抽出)
SELECT id, name FROM Users WHERE active = true;
-- 挿入(行の追加)
INSERT INTO Users (id, name, active) VALUES (1, '田中', true);
FAQ
Q1: 射影と選択はどちらが列を扱い、どちらが行を扱いますか?
A1: 射影(projection)は列(属性)を抽出する操作、選択(selection)は行(タプル)を条件で抽出する操作です。
A1: 射影(projection)は列(属性)を抽出する操作、選択(selection)は行(タプル)を条件で抽出する操作です。
Q2: 結合とUNIONはどう違いますか?
A2: 結合は行どうしを条件で組み合わせ横に結合する(列を結合して新しい行を作る)操作、UNIONは複数のSELECT結果を縦に連結して行を合成する操作です。
A2: 結合は行どうしを条件で組み合わせ横に結合する(列を結合して新しい行を作る)操作、UNIONは複数のSELECT結果を縦に連結して行を合成する操作です。
Q3: テーブルの列を追加したいときは挿入でできますか?
A3: いいえ。列の追加は ALTER TABLE ADD COLUMN を使うDDL操作であり、INSERT は行(レコード)を追加するDML操作です。
A3: いいえ。列の追加は ALTER TABLE ADD COLUMN を使うDDL操作であり、INSERT は行(レコード)を追加するDML操作です。
関連キーワード: 関係データベース、リレーショナル代数、結合、射影、選択、挿入、SQL、JOIN、SELECT、WHERE、INSERT、ALTER TABLE

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

