和(関係演算)とは?初心者向けにわかりやすく解説|データベース基礎
生徒
「先生、データベースの勉強をしていたら“和(関係演算)”って出てきました。これはどういう意味なんですか?」
先生
「良いところに気がつきましたね。“和(ワ)”は、関係代数(カンケイダイ数)の基本的な演算の一つで、英語ではUnion(ユニオン)と呼ばれるものです。二つの表(テーブル)を合わせて一つにまとめる操作を指します。」
生徒
「なるほど!じゃあ二つのテーブルを合体させるんですね。でも、同じデータがあったらどうなるんですか?」
先生
「その場合は、重複(ジュウフク)は自動的に取り除かれます。つまり同じ行が二回表示されることはありません。これは集合の“和”のイメージと同じです。」
生徒
「集合と似ているんですね!じゃあ、SQL(エスキューエル)でも同じように使えるんですか?」
先生
「はい、SQLでもUNIONというキーワードを使って実現できます。詳しく見ていきましょう。」
1. 和(関係演算)の基本とは?
和(ワ)とは、関係代数(カンケイダイ数)の演算の一つで、英語ではUnion(ユニオン)と呼ばれます。二つの関係(テーブル)を一つにまとめるときに利用されます。例えば、学生テーブルと社会人テーブルの両方に含まれる「名前」をまとめて一覧表示したいときに役立ちます。
ここで重要なのは、和では同じ構造(同じ列数やデータ型)のテーブル同士でなければならないという点です。列が違うテーブル同士を無理に和にすることはできません。
2. 和(Union)のイメージ
和は算数で習った集合の和と同じイメージです。例えば、「A組の出席番号一覧」と「B組の出席番号一覧」を合わせて「全員の一覧」を作るようなイメージです。
このとき、もし同じ生徒が両方のリストに載っていても、結果としては一人分だけが表示されます。これは重複が取り除かれる仕組みがあるからです。
3. SQLでのUNIONの使い方
データベース言語であるSQL(エスキューエル)では、和を表現するためにUNIONというキーワードを使います。
SELECT 名前 FROM 学生
UNION
SELECT 名前 FROM 社会人;
この例では、学生テーブルと社会人テーブルの両方にある名前をまとめて一つの一覧にしています。もし同じ名前が両方にあっても一度だけ表示されます。
4. UNIONとUNION ALLの違い
SQLにはUNIONのほかにUNION ALLという書き方もあります。違いは「重複を削除するかどうか」です。
- UNION:重複を削除して表示する。
- UNION ALL:重複を削除せず、そのまま表示する。
例えば、テーブルAに「山田」があり、テーブルBにも「山田」があれば、UNIONでは一つだけ、UNION ALLでは二つ表示されます。状況に応じて使い分ける必要があります。
5. 和を使うと便利な場面
和(Union)は、複数のデータを一つにまとめたいときに役立ちます。例えば次のような場面です。
- 複数の支店の売上データを一つにまとめるとき。
- 異なる種類のユーザー(顧客、会員、社員)のリストを一つにまとめたいとき。
- 異なる年度の成績データを一つの表にしたいとき。
このように、和は実務でもとてもよく使われる操作です。
6. 和と他の関係演算との違い
関係演算(カンケイエンザン)には和以外にも差(サ)、積(セキ)、射影(シャエイ)、選択(センタク)などがあります。その中で和は「広くまとめる」役割を持っています。差は「片方にしかないデータ」を取り出し、積は「共通するデータ」を取り出すので、性質が異なります。
この違いを理解することで、データベースをより柔軟に扱えるようになります。
7. 和の歴史的な背景
和という演算は、1970年代にエドガー・F・コッド(Edgar F. Codd エドガーエフコッド)という研究者が提唱した「関係モデル(カンケイモデル)」に基づいています。数学の集合論を応用してデータを整理する考え方の中で、和という操作が重要な位置を占めています。
つまり、現在私たちが当たり前のように使っているSQLのUNIONも、この理論に根ざしたものなのです。