基礎ER図

カーディナリティ (多重度) とは

定義

カーディナリティとは、ER モデルにおいて 2 つのエンティティ集合の間の関連が、片方のインスタンス 1 個に対してもう片方のインスタンス何個と結び付くかを規定する多重度制約である。

まず身近な例で: 部長は何人の部下を持てるか

「1 人の部長は複数の部下を持つ」「1 人の部下は 1 人の部長にしか報告しない」。 これがカーディナリティの直感。線の両端から見て、相手を 何個と結び付けているか を規定する制約。

よく見ると、上の一文には実は 2 つの情報が混ざっている:

  • 上限: 相手を「多くて何個持てるか」(1 個までか、何個でも OK か)
  • 下限: 相手を「最低何個持たないといけないか」(0 個で OK か、必ず 1 個以上か)

用語としては上限を 最大基数、下限を 最小基数 (= 参加制約) と呼ぶ。 ER 図の記号はこの 2 つを 1 本の線に同居させて描く仕組みになっている。

本ページでは主に 上限 (最大基数) の話 — 1:1、1:N、N:M の使い分け — を扱う。 下限側の話は 参加制約 ページ で詳しく解説する。

3 種類のカーディナリティ

1:1 (1 対 1)

両側ともに「多くて 1 個」。「社員」と「社員証」など、物理的な 1:1 対応があるときに使う。

この図が現実世界で語っているルール:

  • 1 人の社員は必ず 1 つの社員証を持つ (社員証を持たない社員は存在しない)
  • 1 枚の社員証は必ず 1 人の社員に紐付く (誰にも配られていない社員証は存在しない)
  • 1 人の社員に社員証を 2 枚以上配布することはない
  • 1 枚の社員証を複数人で使い回すことはない
1:1 の例 — 社員と社員証
社員社員ID (PK)氏名社員証社員証ID (PK)有効期限

両端に縦棒 1 本 = 「必ず 1、多くて 1」。上のルールでは「両方の上限が 1」= 3 番目と 4 番目のルールを規定している (「必ず持つ」= 下限側は参加制約ページで扱う)。

1:N (1 対 多)

片側は「多くて 1 個」、もう片側は「複数個」。もっとも頻出のパターン。

この図が現実世界で語っているルール:

  • 1 人の部下は必ず 1 人の部長に報告する (どの部長にも属さない部下はいない)
  • 1 人の部長は必ず 1 人以上の部下を持つ (部下 0 人の部長は存在しない)
  • 1 人の部下が同時に 2 人以上の部長に報告することはない
  • 1 人の部長が持てる部下の人数に上限はない
1:N の例 — 部長と部下
部長部長ID (PK)氏名部下部下ID (PK)氏名部長ID

部長側は縦棒 (必ず 1)、部下側は縦棒 + 鳥足 (必ず 1 以上)。上のルールでは「部下の上限が 1」= 3 番目、「部長の上限は無制限」= 4 番目を規定している。

N:M (多 対 多)

両側とも「複数個」。学生と履修科目、顧客と商品 (直接繋いだ場合) など。実装時には必ず連関実体 (中間テーブル) に分解する。 詳細は 多対多と連関実体 ページ

この図が現実世界で語っているルール:

  • 1 人の学生は 1 科目以上を履修する (履修必須)
  • 1 つの科目は 1 人以上の学生に履修される (履修者必須)
  • 1 人の学生が複数の科目を同時に履修できる
  • 1 つの科目を複数の学生が同時に履修できる
N:M の例 — 学生と履修科目
学生学籍番号 (PK)氏名科目科目ID (PK)科目名

両端に縦棒 + 鳥足 = 「必ず 1 以上」。上のルールでは「両方の上限が N」= 3 番目と 4 番目を規定 (これが N:M の本質)。この形は必ず連関実体に分解する。下限側は 参加制約 ページで扱う。

IE 記法 (crow's foot) の記号早見

  • 縦棒 (|) — 「必ず 1」の最小基数
  • 円 (○) — 「0 も許容」の最小基数
  • 鳥足 (<) — 「多 (N)」の最大基数

これらを線の両端に配置する。「入口から見て遠い側」の記号が「相手からの参加制約」で、 「入口から見て近い側」の記号が「相手からの最大基数」を表すという読み方の慣習になっている。

試してみる: 記号を変えると現実世界のルールがどう変わるか

3 つの ER 図を用意した。両端のボタンで 上限側の記号 (| と |<) を切り替えると、 その図が表す業務ルール (O = 成立 / X = 成立しない) が動的に変わる。 下限 (円 vs 縦棒) は本ページでは触らず、 参加制約 ページで別途扱う。まずは「上限だけの差」が現実世界のどのルールに直結しているかを、実際に手を動かして確かめてほしい。

問 1: 顧客 と 注文

EC サイトの顧客と注文の関連。初期状態は「1 人の顧客は 1 個以上の注文を持ち、1 つの注文は必ず 1 人の顧客に紐付く」設計。各エンティティの内側のボタンで「上限」を切り替えると、成立する業務ルールがどう変わるかを試せる。

顧客 — 発注 — 注文
発注顧客顧客ID (PK)氏名注文注文ID (PK)注文日顧客ID
顧客
注文

この図が現実世界で語っているルール — 各行、成立する (O) か成立しない (X) か答えよう

  • 1 人の顧客は複数の注文 (2 個以上) を持てる未回答
  • 1 つの注文は必ずちょうど 1 人の顧客に紐付く未回答
  • 1 つの注文が複数の顧客に共同で紐付く (共同購入) ことがあってよい未回答

問 2: 学生 と 履修科目

大学の履修モデル。初期状態は両側「1 以上」= 学生は 1 科目以上履修し、科目にも 1 人以上の履修者がいる設計 (下限は「必ず 1 以上」で固定)。両端の上限を変えて履修ルールがどう変わるかを試そう。

学生 — 履修 — 科目
履修学生学籍番号 (PK)氏名科目科目ID (PK)科目名
学生
科目

この図が現実世界で語っているルール — 各行、成立する (O) か成立しない (X) か答えよう

  • 1 人の学生は同時に複数の科目を履修できる未回答
  • 1 つの科目を同時に複数の学生が履修できる未回答
  • 1 人の学生が履修できる科目は最大 1 つまで未回答

問 3: 社員 と 部署

会社の所属モデル。初期状態は「社員は必ず 1 つの部署に所属」「部署には必ず 1 人以上の社員がいる」設計。兼務を許すか、1 部署のみに絞るか、上限側の記号 1 つで揺れる。

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

この図が現実世界で語っているルール — 各行、成立する (O) か成立しない (X) か答えよう

  • 1 人の社員は 1 つの部署にしか所属できない (兼務なし)未回答
  • 1 つの部署に複数の社員が所属できる未回答
  • 1 人の社員が複数部署を兼務できる未回答

変なER図 との対応: 違和感 #4「EC サイトなのに 1:1」

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

変なER図 の「顧客 —発注— 注文」は、 顧客側が 縦棒 1 本 (最大 1)、注文側が 縦棒+円 (最大 1、最小 0)。 両端とも 最大基数が 1 に固定 されているので、「1 人の顧客は 最大 1 注文しか持てず、1 つの注文にも 最大 1 顧客しか紐付けられない」 という実質 1:0..1 (ほぼ 1:1 固定) の関係を強制している。

EC サイトなら本来は 1 顧客が複数回注文でき、購入履歴も保持したい。 カーディナリティの選択は業務ルールを直接規定するので、最初にここで間違えると その後のスキーマも実装も破綻する。「EC サイト」と「顧客-注文 1:1」は 1 秒でおかしいと気づけるようになりたい。

よくある疑問

Q.1:1 の関連はいつ使いますか?
A.「1 人の社員は 1 つの社員証を持ち、1 つの社員証は 1 人の社員に紐付く」など、両側とも一意な物理的対応があるとき。実装上は 1 テーブルにまとめても成立するので、あえて分ける理由 (機密属性の分離、大きな添付ファイルの切り出しなど) が必要。
Q.IE 記法の鳥足の意味は?
A.鳥足 (crow's foot) は「多 (N)」を意味する。線の端が 3 本に枝分かれしている記号が「相手が複数個」を表す。縦棒 1 本は「必ず 1」、円は「0 も許容」。この 3 つの組み合わせで 5 種類のカーディナリティを表現する。
Q.1:N の N には上限はありますか?
A.ER モデルの記法上、上限はない (任意の N)。上限を持たせたい場合は制約条件を注釈で書くか、上位のドキュメントで規定する。実装時には NOT NULL / CHECK 制約 / アプリケーション層で担保する。

関連トピック

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

おすすめ
達人に学ぶ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 コース受講