関係データベースの結合操作はどれ?選択・射影・共通との違い
ITパスポート試験 令和5年度 問100 / データベース › データ操作
過去問にチャレンジ
関係データベースにおける結合操作はどれか。
- ア
表から,特定の条件を満たすレコードを抜き出した表を作る。
- イ
表から,特定のフィールドを抜き出した表を作る。
- ウ
二つの表から,同じ値をもつレコードを抜き出した表を作る。
- エ
二つの表から,フィールドの値によって関連付けした表を作る。
会話形式の解説
講師この問題では、関係データベースの基本操作の中から「結合」を選びます。見分けるときは、扱う表がいくつあるかと、何を取り出すかの二点に注目してください。
受験者選択・射影・結合は聞いたことがありますが、どれがどれか曖昧です。結合は「二つの表を使う」ものだと思うので、表が二つ出てくる選択肢に絞ればよいでしょうか。
講師絞り込みの第一歩としては良い考え方です。先に、表が一つの選択肢から見ていきましょう。条件を満たすレコード、つまり行を抜き出す操作は何と呼ぶでしょうか。
受験者条件に合う行を選ぶので、それが「選択」ですか。
講師そのとおりです。一つの表から条件に合う行を取り出すだけで、別の表と関連付けてはいないので、結合ではありません。では、特定のフィールド、つまり列を抜き出す操作はどうでしょう。
受験者残っている名前からすると「射影」ですね。これも表どうしを結び付けてはいないので、結合ではないと分かります。
講師はい。ここで残るのは、表が二つ出てくる二つの選択肢です。ここが一番紛らわしいところです。
受験者「二つの表から同じ値をもつレコードを抜き出す」も、二つの表をつなげているように読めて迷います。
講師それは集合演算の「共通」、積集合と呼ばれる操作です。両方の表にある共通の行を取り出すだけで、フィールドの値を使って表どうしを関連付けるわけではありません。表が二つ出てくるので、結合と取り違えやすいのです。
受験者では、「フィールドの値によって関連付けした表を作る」が結合ですね。具体的にはどんな操作になりますか。
講師たとえば社員表と部署表を部署コードで結び付けて、社員ごとに部署名も表示した一つの表を作る操作です。このとき表をつなぐ共通のフィールドを結合キーと呼びます。
受験者整理すると、表が一つで行を取り出すのが選択、列を取り出すのが射影、二つの表で共通の行を取り出すのが共通、共通のフィールドの値で表を関連付けて一つにするのが結合、ということですね。
講師正確です。補足すると、SQLでは行を絞り込む条件をWHERE句に、取り出す列をSELECT句に書き、表どうしの結合にはJOIN句を使います。「選択は行、射影は列」とセットで覚えると取り違えを防げます。
まとめ
関係データベースの結合は、複数の表を共通のフィールドの値で関連付けて一つの表にする操作です。一つの表から条件に合う行を取り出すのは選択、特定の列を取り出すのは射影です。二つの表で共通する行を取り出す操作は集合演算の共通(積集合)で、表が二つ出てくるため結合と取り違えやすく注意が必要です。SQLではWHERE句で行を絞り込み、SELECT句で列を指定し、JOIN句で表を結合します。
解答・解説
正解はエです
この問題のテーマ
関係データベースの基本操作である選択・射影・結合・集合演算のうち、「結合」がどの操作を指すかを問う問題です。
解き方の考え方
まず、各選択肢が「表がいくつあるか」と「何を取り出すか」を確認します。表が一つで行を取り出すなら選択、列を取り出すなら射影です。表が二つの場合は、同じ行を取り出すだけなのか、フィールドの値で表どうしを関連付けるのかを見分けます。関連付けて一つの表を作る操作が結合なので、エが正解です。
選択肢ごとの解説
- ×ア 表から,特定の条件を満たすレコードを抜き出した表を作る。アの「特定の条件を満たすレコードを抜き出す」操作は選択です。一つの表から条件に合う行を取り出すだけで、別の表と関連付けることはしないため、結合には当たりません。
- ×イ 表から,特定のフィールドを抜き出した表を作る。イの「特定のフィールドを抜き出す」操作は射影です。表から必要な列を選ぶだけで、表どうしを結び付けることはしないため、結合ではありません。
- ×ウ 二つの表から,同じ値をもつレコードを抜き出した表を作る。ウの「二つの表から同じ値をもつレコードを抜き出す」操作は、集合演算の一つである共通(積集合)です。両方の表にある共通の行を取り出すもので、フィールドの値を使って表を関連付ける結合とは別の操作です。表が二つ出てくるので、結合と取り違えやすい選択肢です。
- ○エ 二つの表から,フィールドの値によって関連付けした表を作る。エの「フィールドの値によって関連付けした表を作る」操作が結合です。たとえば社員表と部署表を部署コードで結び付け、社員ごとに部署名も表示した一つの表を作る操作がこれに当たります。
補足
SQLでは、行を絞り込む条件をWHERE句に、取り出す列をSELECT句に書き、表どうしの結合にはJOIN句を使います。結合のときに表をつなぐ共通のフィールドは、結合キーと呼ばれます。「選択は行、射影は列」と、対象をセットで覚えておくと取り違えを防げます。
POINT
- 選択は、表から条件を満たす行(レコード)を取り出す操作です。
- 射影は、表から特定の列(フィールド)を取り出す操作です。
- 結合は、複数の表を共通のフィールドの値で関連付けて、一つの表にする操作です。
- 「二つの表で共通する行を取り出す」は集合演算の共通(積集合)で、結合とは区別します。
