自然結合とは?しぜんけつごう
自然結合とは、共通する名前の属性の値が等しい行どうしを結び付け、重複する結合列を1列にまとめた結合。関係代数では、等結合したうえで重なった列を射影で落とす操作にあたる。結合条件を明示せず列名の一致で決まるため、列名の付け方がそのまま結合の意味を決める。
最終更新:2026-10-06
この語が出る過去問を解く →背景
関係モデルは冗長を除くために表を分けることを前提にしており、分けた表を元の姿に戻す操作が必ず要る。直積を取ってから選択と射影を毎回書くのは煩雑なので、共通列名を条件とみなす演算をひとつ用意した。データベーススペシャリスト試験では、関係代数の結果の行数・列数を数える設問に加え、無損失分解の判定が「自然結合で復元できるか」で定義されるため、正規化の議論の土台としても効いてくる。
具体例
受注(受注番号, 顧客番号, 受注日)と顧客(顧客番号, 顧客名)を自然結合すると、共通列の顧客番号は1列だけ残り、結果は4列になる。PostgreSQLやOracle DatabaseではNATURAL JOINと書くが、実務では条件を明示するINNER JOIN ... ONで書くのが一般的である。
試験での引っ掛け
同名の列はすべて結合条件に入るのが落とし穴。両表に「登録日」や「更新日」があると、意図しないその列まで条件になり結果が0行になる。共通列が1つも無ければ直積になる。等結合との違いは重複列を残すか落とすかだけで、結合される行の集合は同じ。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9(IPA)解説で登場
関係R, Sの等結合演算は、どの演算によって表すことができるか。
正解:直積と選択
要点:等結合は直積を作って結合条件で選択したもの
等結合は、まず二つの関係の直積を作り、そこから指定した属性の値が等しいタプルだけを選択することで得られる。すなわち直積と選択の組合せで表現できる。なお、重複する結合列を取り除いた自然結合ではさらに射影が必要になる。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問6(IPA)
関係モデルにおいて、情報無損失分解ができ、かつ、関数従属性保存が成り立つ変換が必ず存在するものはどれか。ここで、情報無損失分解とは自然結合によって元の関係が復元…
要点:第3正規形までは無損失かつ関数従属性保存の分解が必ず存在
第3正規形までであれば、自然結合で元の関係を復元できる分解でありながら、元の関数従属をすべて分解後の関係に残す変換が必ず存在することが知られている。ボイス・コッド正規形以降では無損失分解はできても関数従属性の保存が犠牲になる場合があるため、アが正しい。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7(IPA)解説で登場
便名に対して、客室乗務員名の集合及び搭乗者名の集合が決まる関係"フライト"がある。関係"フライト"に関する説明のうち、適切なものはどれか。ここで、便名、客室乗務…
正解:関係"フライト"は、情報無損失分解が可能である。
要点:多値従属を持つ関係は無損失に分解でき、第4正規形(多値従属性を取り除いた形)へ進む
便名が決まると乗務員名の集合と搭乗者名の集合がそれぞれ独立に決まるため、この関係には多値従属が存在し、両者の全組合せが行として並んでいる。全属性が主キーを構成するので関数従属の観点では問題がないが、便名と乗務員、便名と搭乗者の2つの関係へ分ければ自然結合で元へ戻せる。よってウが適切。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問9(IPA)解説で登場
"商品"表と"納品"表を商品番号で等結合した結果はどれか。
正解:商品番号・商品名・価格・商品番号・顧客番号・納品数の列(商品番号が2列)を持ち、S01/ボールペン/150/S01/C01/10、S01/ボールペン/150/S01/C02/30、S02/消しゴム/80/S02/C02/20、S02/消しゴム/80/S02/C03/40、S03/クリップ/200/S03/C03/60 の5行(納品明細ごとに1行)。
要点:等結合は結合列を重複したまま残す(自然結合との違い)
等結合は直積のうち結合条件が成り立つ組だけを残す演算で、自然結合と違って重複する結合列は消去されない。したがって結果には商品側と納品側の商品番号が2列とも現れる。行数は納品側の明細数に一致し、1商品に複数明細があればその数だけ商品情報が繰り返される。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。