基礎ER図

関連 (リレーションシップ) とは

定義

関連とは、2 つ以上のエンティティ集合の間に存在する意味的な繋がりを表す ER モデルの構成要素であり、その両端のカーディナリティと参加制約によって関係の性質が規定される。

まず身近な例で: 「社員は部署に所属する」

会社の組織を考える。「社員」と「部署」があり、 「社員は必ず 1 つの部署に所属している」というルールがある。 これを ER 図に描くと、こうなる。

社員 — 所属 — 部署 (基本形)
社員社員ID (PK)氏名部署ID部署部署ID (PK)部署名

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 として現れる列と、多対多を分解するための 連関実体監査担当 を含めて描く。

役割名で複数の関連を区別する (FK と連関実体も明示)
所属責任者社員社員ID (PK)氏名所属部署ID部署部署ID (PK)部署名責任者社員ID監査担当社員ID (PK)部署ID (PK)

「所属」= 社員に 所属部署ID (FK)、「責任者」= 部署に 責任者社員ID (FK)、「監査」= 多対多なので連関実体 監査担当 を挟む。役割名がないと、どの線がどの意味か区別できなくなる。

自己参照 (再帰関連)

関連はエンティティが 自分自身と繋がる こともある。よくある例は「社員の上司も別の社員」:

自己参照: 社員が別の社員 (上司) を持つ
上司社員社員ID (PK)氏名上司ID

社員から社員へループ。両端のカーディナリティ (上司側は 1 人 or 0 人 = 社長は上司なし、部下側は 0 or 複数 = 末端社員は部下なし) と役割名を必ず明示する。

変なER図 との対応: 違和感 #1 循環参照

架空 EC サイト運営システム ER 図
発注確定購入階層1所属明細P対象配送先配送先ID (PK)郵便番号住所カテゴリカテゴリID (PK)名称サブカテゴリID商品商品ID (PK)商品名価格カテゴリID顧客顧客ID (PK)氏名注文履歴JSONカート内商品ID配列レビュー全て血液型注文注文ID (PK)注文日顧客IDレビューレビューID (PK)評価本文サブカテゴリサブカテゴリID (PK)名称親カテゴリID1注文明細明細ID (PK)商品名数量

変なER図 の「カテゴリ ⇔ サブカテゴリ」の関連は、実はサブカテゴリがカテゴリと同じ性質のエンティティで、 しかも サブカテゴリID をカテゴリが持ち、親カテゴリID をサブカテゴリが持ち…と互いに参照している。 これは 自己参照 (再帰関連) で書くべきところを別エンティティに分解した結果、 方向と参加制約が定義できず無限にたどれるようになってしまった状態。

自己参照で書き直せば、「カテゴリ → 親カテゴリ (別の 1 件)」という有向・任意参加の再帰関連として明示できる。 トップ層のカテゴリ (親を持たないルート) の存在も参加制約で表現できる。

変なER図 との対応: 違和感 #3「発注」と「確定」が並行して引かれている

架空 EC サイト運営システム ER 図
発注3確定3購入階層所属明細P対象配送先配送先ID (PK)郵便番号住所カテゴリカテゴリID (PK)名称サブカテゴリID商品商品ID (PK)商品名価格カテゴリID顧客顧客ID (PK)氏名注文履歴JSONカート内商品ID配列レビュー全て血液型注文注文ID (PK)注文日顧客IDレビューレビューID (PK)評価本文サブカテゴリサブカテゴリID (PK)名称親カテゴリID注文明細明細ID (PK)商品名数量

変なER図 では、 「顧客」と「注文」の間に 「発注」「確定」 の 2 本の線が引かれている。 どちらも役割名は付いているように見えるが、日本語としてほぼ同じ意味に読めてしまい、 実際何の違いがあるのか図から読み取れない。この 2 本を厳密に語り分けられるのが、ER 図が読める人の第一歩。

よくある疑問

Q.同じエンティティ間に複数の関連を描いてもいいですか?
A.描いてもよい。むしろ現実には頻繁に発生する (社員と部署の間に「所属」と「監査対象」の 2 つの関連など)。ただし必ず役割名を付けて 2 本の線を区別すること。
Q.自己参照 (再帰関連) はどう描きますか?
A.同じエンティティから同じエンティティに戻る線を描く。役割名を必ず付ける (社員が上司 = 別の社員を持つなら「上司」など)。参加制約 (トップ層の社員には上司がいない = 任意参加) の記号も忘れずに。
Q.関連にも属性を持たせられますか?
A.持たせられる。「学生 —履修— 科目」の関連に「履修年度」「成績」といった属性を付ける場合、それは連関実体 (履修) として独立させたほうが実装しやすい。詳細は [多対多と連関実体](/data-modeling/er-diagram/many-to-many) を参照。

関連トピック

もっと学びたい方へ(おすすめ書籍)

おすすめ
達人に学ぶDB設計徹底指南書 第2版
ミック

テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。

Amazon で見る →
おすすめ
楽々ERDレッスン (CodeZine BOOKS)
羽生章洋

ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。

Amazon で見る →
情報処理教科書 データベーススペシャリスト 2025年版
三好康之

IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。

Amazon で見る →
理論から学ぶデータベース実践入門
奥野幹也

リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。

Amazon で見る →
達人に学ぶSQL徹底指南書 第2版
ミック

SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。

Amazon で見る →
SQLアンチパターン 第2版
Bill Karwin

実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。

Amazon で見る →
[改訂3版]内部構造から学ぶPostgreSQL
勝俣智成 ほか

PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。

Amazon で見る →

本セクションはAmazonアソシエイトのリンクを含みます。

オンライン個別指導

もっと深くDBを学びたい方へ。

たいてっくが、SQL・データベース設計・パフォーマンスチューニング・ IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。

無料相談を予約する →
  • 教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。
    H 様DB・SQL コース受講
  • 体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。
    M 様DB・SQL コース受講
  • 大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。
    K 様DB・SQL コース受講