関連 (リレーションシップ) とは
関連とは、2 つ以上のエンティティ集合の間に存在する意味的な繋がりを表す ER モデルの構成要素であり、その両端のカーディナリティと参加制約によって関係の性質が規定される。
まず身近な例で: 「社員は部署に所属する」
会社の組織を考える。「社員」と「部署」があり、 「社員は必ず 1 つの部署に所属している」というルールがある。 これを ER 図に描くと、こうなる。
1 本の線が 1 つの関連 = 「社員は部署に所属する」を表す。カーディナリティは 社員側 (many) + 部署側 (one) で「1 部署に多数の社員が所属」を意味する。
関連の 2 要素: 線とカーディナリティ
ER 図の関連は、エンティティ (箱) 同士を 線 で繋いで、両端に カーディナリティ (多重度)と 参加制約の記号を置くだけでよい。線の意味はエンティティ名の組み合わせから読み取れる (「社員」と「部署」を線で繋げば、意味は「所属」以外ありえない)。
カーディナリティの 3 種類 (要点)
カーディナリティは「片方から見て、もう片方は何個と結び付くか」を規定する数の制約。 3 種類だけ覚えれば ER 図はほぼ読める:
- 1:1 — 両側とも「多くて 1」。社員と社員証など、物理 1:1 対応
- 1:N — 片側「1」、もう片側「複数」。部長と部下、部署と社員など (最頻出パターン)
- N:M — 両側とも「複数」。学生と履修科目など。 必ず 連関実体 に分解する
IE 記法の記号 (縦棒・鳥足・○) の対応や、5 種類 (1 / 0..1 / 1..N / 0..N / N..M) の記号早見表、 FK の置き場所まで詳しくは カーディナリティ ページ を参照。
同じエンティティ間に複数の関連があるとき
現実の業務では、同じ 2 つのエンティティの間に 意味の違う複数の関連 が発生する。 例えば、社員と部署の間には所属だけでなく、以下のようなケースが考えられる:
- 「社員は部署に 所属する」(1 部署に多数の社員)
- 「社員は他部署の 監査を担当する」(監査担当は複数部署を掛け持ち可)
- 「社員は部署の 責任者 (部長) である」(1 部署に責任者は 1 人か 0 人)
これらを 1 本の線にまとめると意味が混ざってしまうので、それぞれ独立した関連として別々の線 で描く。 この 複数線を区別するときに限って、線の上に「所属」「監査」などの役割名を付ける。 単純な 1 本線の場合は役割名は不要 (エンティティ名の組み合わせで意味が確定するため)。
3 つの関連は、それぞれカーディナリティが違うため、実装 (FK の置き場所) も別々になる。 図には FK として現れる列と、多対多を分解するための 連関実体監査担当 を含めて描く。
「所属」= 社員に 所属部署ID (FK)、「責任者」= 部署に 責任者社員ID (FK)、「監査」= 多対多なので連関実体 監査担当 を挟む。役割名がないと、どの線がどの意味か区別できなくなる。
自己参照 (再帰関連)
関連はエンティティが 自分自身と繋がる こともある。よくある例は「社員の上司も別の社員」:
社員から社員へループ。両端のカーディナリティ (上司側は 1 人 or 0 人 = 社長は上司なし、部下側は 0 or 複数 = 末端社員は部下なし) と役割名を必ず明示する。
変なER図 との対応: 違和感 #1 循環参照
変なER図 の「カテゴリ ⇔ サブカテゴリ」の関連は、実はサブカテゴリがカテゴリと同じ性質のエンティティで、 しかも サブカテゴリID をカテゴリが持ち、親カテゴリID をサブカテゴリが持ち…と互いに参照している。 これは 自己参照 (再帰関連) で書くべきところを別エンティティに分解した結果、 方向と参加制約が定義できず無限にたどれるようになってしまった状態。
自己参照で書き直せば、「カテゴリ → 親カテゴリ (別の 1 件)」という有向・任意参加の再帰関連として明示できる。 トップ層のカテゴリ (親を持たないルート) の存在も参加制約で表現できる。
変なER図 との対応: 違和感 #3「発注」と「確定」が並行して引かれている
変なER図 では、 「顧客」と「注文」の間に 「発注」 と 「確定」 の 2 本の線が引かれている。 どちらも役割名は付いているように見えるが、日本語としてほぼ同じ意味に読めてしまい、 実際何の違いがあるのか図から読み取れない。この 2 本を厳密に語り分けられるのが、ER 図が読める人の第一歩。
よくある疑問
関連トピック
もっと学びたい方へ(おすすめ書籍)
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。
ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。
IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。
リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。
SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。
実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。
PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。
本セクションはAmazonアソシエイトのリンクを含みます。
もっと深くDBを学びたい方へ。
たいてっくが、SQL・データベース設計・パフォーマンスチューニング・ IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)