プログラミングの用語一覧へ
このページの目次

関連とは?

最終更新:2026/08/18

3秒でわかる

クラステーブルが参照でつながっている関係のこと。設計図では直線と多重度で表し、DBの外部キーをどこに置くかを決める手がかりになります。

もう少し詳しく

どういうものか

関連(association)は、あるクラスが別のクラスを知っていて利用できる、という関係を指します。UMLのクラス図では2つのクラスを結ぶ直線で描き、線の両端に「1」「0..*」といった多重度を添えて、片方から見て相手が何個あるのかを表します。コードの上では、あるクラスがフィールドとして別のクラスの参照を持っている状態が関連にあたります。

なぜ必要か

オブジェクト指向の設計では、1つの巨大なクラトに全部を詰め込まず、責務ごとにクラスを分けます。分けた瞬間に「注文は顧客のものである」「記事にはコメントがぶら下がる」というつながりを表現する手段が必要になり、それが関連です。関連を先に整理しておくと、DBのテーブル設計や外部キーの置き場所がそのまま決まります。

具体例

class Customer { private String name; } // Order から Customer への一方向の関連 class Order { private Customer customer; // 多重度は Order 多 対 Customer 1 private List<OrderLine> lines = new ArrayList<>(); }

このコードは、注文が顧客を1人参照し、明細を複数持つ、という2本の関連を表しています。DBに落とすと orders テーブルに customer_id 列が生まれます。

つまずきやすいところ

関連の向きを意識しないまま、両方のクラスがお互いの参照を持つ形にしてしまうのがよくある失敗です。双方向にすると、片方を更新したときにもう片方の整合を取る処理が必ず必要になり、循環参照でJSON変換が無限ループします。まず一方向で書き、どうしても逆からたどりたい場面が出てから双方向にします。

似た用語との違い

関係意味消えたとき
関連単に参照しているだけ相手は生き残る
集約全体と部分だが独立している部分は生き残る
コンポジション全体が部分の生死を握る部分も消える

覚え方

クラス図の直線は、コードの上では「相手を型として持っているフィールド」に置き換わります。線を1本引いたら、どちらのクラスにフィールドが生えるのかを口に出して確かめると、向きと多重度の取り違えが減ります。DBへ落とすときは、多の側に外部キーが入る、と覚えておくと迷いません。

名前を付けられる関係かどうかも見分けの助けになります。「注文は顧客に属する」と一文で言えるなら、それは関連として図に描く価値のあるつながりです。

次に学ぶ

多重度とは?

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地関連プログラミング

先に理解しておきたい用語

次に学ぶ用語

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

Javaコースの全編を見る