外部結合(ガイブケツゴウ)とは | 意味や読み方など丁寧でわかりやすい用語解説
外部結合(ガイブケツゴウ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
外部結合 (ガイブケツゴウ)
英語表記
outer join (アウタージョイン)
用語解説
外部結合は、リレーショナルデータベースにおいて複数のテーブルからデータを取り出すための「結合」という操作の一種である。データベースでは、情報を正規化という考え方に基づき、関連するデータのまとまりごとにテーブルを分割して管理することが一般的である。例えば、「社員」の情報を持つテーブルと「部署」の情報を持つテーブルを別々に作成する。このとき、社員がどの部署に所属しているかといった、複数のテーブルにまたがる情報を一度に取得したい場合に結合操作が用いられる。結合にはいくつかの種類があるが、外部結合は、内部結合と対比して理解すると分かりやすい。内部結合が、結合する両方のテーブルに共通して存在するデータのみを結果として返すのに対し、外部結合は、片方のテーブルにしか対応するデータが存在しない場合でも、基準となるテーブルの行をすべて結果に含めることができる点が最大の特徴である。これにより、例えば部署に所属していない社員の情報や、まだ誰も所属していない部署の情報なども取得することが可能になる。
外部結合には、主に「左外部結合(LEFT OUTER JOIN)」「右外部結合(RIGHT OUTER JOIN)」「完全外部結合(FULL OUTER JOIN)」の三種類が存在する。それぞれの動作は、どのテーブルを基準としてデータを残すかによって異なる。
まず、左外部結合について説明する。これは、SQL文でFROM句の後に記述した左側のテーブルを基準とし、そのテーブルのすべての行を結果として返す結合方法である。左側テーブルの各行に対して、指定された結合条件に一致するデータが右側テーブルにあれば、そのデータを連結して返す。もし、右側テーブルに一致するデータが存在しなかった場合でも、左側テーブルの行は結果に含まれ、右側テーブルに対応する列にはNULLという特別な値(データが存在しないことを示す値)が設定される。例えば、「社員テーブル」を左側に、「部署テーブル」を右側に配置して、部署IDをキーに左外部結合を行うとする。この場合、すべての社員の情報が結果として表示される。部署に所属している社員については部署名が表示されるが、まだ部署に配属されていない社員がいたとしても、その社員情報も結果から欠落することなく、部署名にあたる部分がNULLとして表示される。このように、主となる情報(この場合は社員)をすべて表示しつつ、関連情報があれば付与するという用途で頻繁に利用される。
次に、右外部結合は左外部結合の逆の動作をする。つまり、右側に指定したテーブルを基準とし、そのテーブルのすべての行を結果に含める。左側テーブルに結合条件と一致するデータが存在しない場合、右側テーブルの行は結果に残り、左側テーブルに対応する列がNULLとなる。先の例で言えば、「社員テーブル」を左、「部署テーブル」を右として右外部結合を行うと、今度はすべての部署の情報が結果として表示される。ある部署に所属する社員がいればその社員情報も表示されるが、まだ一人も社員が所属していない新しい部署があったとしても、その部署の情報は結果に含まれ、社員情報にあたる部分がNULLとして表示される。実務上は、テーブルの記述順を入れ替えることで左外部結合と同じ結果を得られるため、構文の統一性の観点から左外部結合の方が好んで使われる傾向がある。
最後に、完全外部結合は、左外部結合と右外部結合の両方の性質を併せ持った結合方法である。これは、結合条件に一致するデータはもちろんのこと、左側テーブルにしか存在しないデータと、右側テーブルにしか存在しないデータの両方を結果に含める。一致しなかった相手側のテーブルに対応する列はNULLとなる。先の例で完全外部結合を行うと、部署に所属している社員、部署に所属していない社員、そしてまだ誰も所属していない部署のすべてが結果として返される。これは、両方のテーブルの情報を一切欠落させることなく、すべての関連性を一覧したい場合に用いられるが、対応していないデータベースシステムも存在するため、使用頻度は先の二つに比べて低い。
これらの外部結合は、データの関連性を網羅的に把握するために不可欠な機能である。内部結合では見えてこない「関連が存在しないデータ」を明確に可視化できるため、データ分析や、マスターデータとトランザクションデータの整合性チェックなど、幅広い場面で活用される。システム開発においては、どのデータを基準とし、どのような条件で情報を取得したいのかを正確に定義し、内部結合と各種外部結合を適切に使い分ける能力が求められる。