結合演算【join operation】
概要

例えば、「氏名」「学部」を属性に持つ関係と、「学部」「キャンパス」を属性に持つ関係がある場合、両者の「学部」の値が一致する組(行)同士を結び付けることで、「氏名」「学部」「キャンパス」を属性に持つ新たな関係を得ることができる。同名かつ同じ意味を持つ属性を基準として対応する組を結合する操作は「自然結合」(natural join)と呼ばれ、最も基本的な結合演算である。
自然結合は結合条件に一致する組のみを抽出する「内部結合」(inner join)の一種で、他に、指定した属性同士の値が等しい組を結び付ける「等価結合」(equi join)、等号以外の条件で結び付ける「非等価結合(non-equi join)、任意の比較演算子で結合条件を指定する「シータ結合」(θ-join)などの種類がある。
一方の関係にしか存在しないデータも残して結合する演算は「外部結合」(outer join)と呼ばれ、左側の表を基準とする「左外部結合」(left join)、右側の表を基準とする「右外部結合」(right join)、両方の表のデータをすべて残す「完全外部結合」(full join)がある。条件に一致する組の存在だけを判定する「準結合」(semi-join)あるいは「半結合」もある。
リレーショナルデータベース管理システム(RDBMS)では、結合演算はSQLのSELECT文の中でJOIN句を用いて指示される。INNER JOINは内部結合、LEFT JOINやRIGHT JOIN、FULL JOINは外部結合に対応し、正規化によって複数の表に分割されたデータを必要に応じて再構成する際に用いられる。結合条件に使用する列には索引(インデックス)が設定されることが多く、これは検索や結合の処理効率に大きく影響する要素である。
関係代数では、結合演算と並んで「選択演算」(selection)および「射影演算」(projection)が基本的な演算として位置付けられる。関係(表)から条件を満たす組(行)を抽出する操作を「選択」(あるいは制限)と呼び、関係から条件を満たす属性(列)を抽出する操作を「射影」と呼ぶ。この3つの演算は和、差、共通部分、直積などとともに関係代数を構成する基本演算であり、これらを組み合わせることで複雑なデータ抽出や関連付けが表現される。