表の結合(内部結合・外部結合)とは?
表の結合(内部結合・外部結合)とは、複数の表を関連する列の値で突き合わせて1つの結果表にする操作。両表に対応する行があるものだけを返す内部結合と、片側に対応が無くてもNULLを補って残す外部結合(LEFT・RIGHT・FULL)がある。どちらを使うかで件数と集計値が変わるため、要件の読み取りが要点になる。
応用情報技術者試験の過去問では4回出題されています(2022年度〜2024年度)。
ひょうのけつごう
表の結合(内部結合・外部結合)の意味
複数の表を関連する列の値で突き合わせて1つの結果表にする操作。両表に対応する行があるものだけを返す内部結合と、片側に対応が無くてもNULLを補って残す外部結合(LEFT・RIGHT・FULL)がある。どちらを使うかで件数と集計値が変わるため、要件の読み取りが要点になる。
表の結合(内部結合・外部結合)の具体例
「全社員と、その社員が受講した研修」を出すとき、内部結合では未受講者が消えてしまう。社員表を左にしたLEFT OUTER JOINにすれば未受講者も研修名NULLで残り、受講率の分母が正しくなる。逆に「受講実績の一覧」なら内部結合が正しい。
表の結合(内部結合・外部結合)は試験でどう引っ掛けられる?
外部結合で残した側にWHERE句で「研修名 = '安全教育'」と条件を書くと、NULL行が弾かれて内部結合と同じ結果に戻ってしまう。外部結合の条件はON句へ書く必要がある。また結合条件を書き忘れると直積(クロス結合)になり件数が爆発する。
表の結合(内部結合・外部結合)と関連する用語
表の結合(内部結合・外部結合)が出た過去問
モジュールの独立性の尺度であるモジュール結合度は、低いほど独立性が高くなる。次のうち、モジュールの独立性が最も高い結合はどれか。
正解:データ結合
要点:結合度が最も弱いのは必要な値だけを渡すデータ結合
モジュール結合度は、弱い順にデータ結合、スタンプ結合、制御結合、外部結合、共通結合、内容結合と分類される。データ結合は、必要な値だけを引数として受け渡す最も弱い結合で、モジュール間の依存が小さく独立性が最も高い。したがって設計上はデータ結合を目指すのが望ましい。
出典:令和4年度 春期 応用情報技術者試験 午前 問46(IPA)モジュールの独立性を高めるには、モジュール結合度を低くする必要がある。モジュール間の情報の受渡し方法のうち、モジュール結合度が最も低いものはどれか。
正解:入出力に必要なデータ項目だけをモジュール間の引数として渡す。
要点:結合度はデータ結合が最弱。共通領域や制御の受渡しは避ける
モジュール結合度は弱いほど独立性が高く保守しやすい。選択肢の中では、処理に必要なデータ項目だけを引数として受け渡すデータ結合が最も結合度が低い。共通領域や外部宣言による共有は共通結合や外部結合にあたり、制御用の値を渡して相手の動きを決めるのは制御結合で、いずれもより結合度が高い。
出典:令和5年度 春期 応用情報技術者試験 午前 問46(IPA)"部品"表及び"在庫"表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。 〔SQL文〕 SELECT 部品.部品ID AS 部品ID, …
正解:COALESCE(SUM(在庫.在庫数), 0)
要点:複数行の在庫はSUMで集計しNULLはCOALESCEで0に置き換える
部品IDでグループ化しているので、同じ部品が複数倉庫にある場合は在庫数を合計して発注点と比べる必要がある。P01は90+90=180で発注点100を上回るため不要となり、SUMを使うのが正しい。さらに在庫表に行がないP03は外部結合の結果がNULLになるため、COALESCEで0に置き換えることで発注点100>0となり必要と判定できる。
出典:令和6年度 春期 応用情報技術者試験 午前 問26(IPA)モジュール結合度に関する記述のうち、適切なものはどれか。
正解:大域的なデータを参照するモジュール間の関係は、共通結合である。
要点:大域データ領域の共有は共通結合、単一データ項目の共有は外部結合
モジュール結合度は結合が弱いほど良い設計とされ、弱い順にデータ結合・スタンプ結合・制御結合・外部結合・共通結合・内容結合と並ぶ。共通結合は、複数のモジュールが同じ大域的なデータ領域(構造をもつ共通のデータ群)を共有して参照・更新する関係を指す。したがって大域的なデータを参照し合うモジュール間の関係は共通結合であり、エが正しい。
出典:令和6年度 春期 応用情報技術者試験 午前 問46(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。