基礎ER図

エンティティ (実体) とは

定義

エンティティとは、実世界における区別可能な対象または概念であって、ER モデルにおいて属性の集合として表現される抽象単位である。

まず身近な例で: 表の 1 行を「何」にするか

Excel か Google Sheets で生徒の表を作るとき、いちばん最初に決めるのは「1 行を何にするか」。生徒 1 人 = 1 行にするのか、 生徒とクラス担任のセット = 1 行にするのか、あるいは日々の出欠 = 1 行にするのか、 で表の意味も列も全部変わる。この 「1 行にしたい単位」 こそが、 ER 図でいう エンティティ

エンティティは実世界の名詞そのものではない。 「システムが区別したい単位」だ。生徒 A と生徒 B を区別したいから「生徒」がエンティティになる。 「日本語」と「英語」を区別したいなら「言語」もエンティティ。区別する必要がなければ、単なる属性で終わる。

ER 図でのエンティティの描き方

ER 図では四角い箱で描き、箱の中に「エンティティ名 (通常は名詞、単数形が慣例)」を上段、 「属性のリスト」を下段に書く。主キー (行を一意に見分けるための列) には下線を引くのが IE 記法の慣習。

エンティティの基本形
生徒学籍番号 (PK)氏名学年血液型クラスクラスID (PK)クラス名担任

下線が引かれている列 (学籍番号 / クラスID) が主キー = 1 行を一意に特定する列。

エンティティにするか、属性にするかの判断基準

現場で迷うのは、「これは属性か、それとも独立のエンティティか」 の判断。 以下の 3 点のうちどれかに Yes なら、独立エンティティとして切り出したほうがよい:

  • 複数値を持ちうるか — 「生徒の履修科目」は複数持てる → 独立エンティティ「履修」に切り出す
  • 独立にライフサイクルを持つか — 「担任」は生徒と別に管理されている (異動・退職・引き継ぎがある) → 別エンティティ「教員」に切り出す
  • 複数の他のエンティティから参照されるか — 「教員 (担任)」を学級からも、履修からも、成績表からも参照する → 独立エンティティ「教員」を用意して、 複数のエンティティから FK で参照する構造にする

逆に、「生徒の血液型」のような 1 対 1 で単一値・独立管理も参照もされない データは属性で十分。 余計な箱を作らないほうが図はシンプルになる。

変なER図 との対応: 違和感 #2「顧客」の属性欄破綻

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

変なER図 の「顧客」エンティティには、注文履歴JSONカート内商品ID配列レビュー全て血液型 … と粒度もライフサイクルも違うものが並んでいる。

  • 注文履歴 は複数値を持ち、注文ごとに独立して管理される → 別エンティティ「注文」「注文明細」に切り出すべき
  • レビュー全て は複数属性の塊 (評価・本文・投稿日時…) → 別エンティティ「レビュー」に切り出すべき
  • カート内商品ID配列 は複数値そのもの → 別エンティティ「カート項目」との関連に切り出すべき

これらを 1 つのエンティティに詰め込むと、更新のたびに JSON の一部だけ書き換えて残りを壊すなど、第1正規形 (1NF) の違反となる問題も同時に起きる。 ER 図の粒度と正規化は表裏一体の話だ。

強エンティティと弱エンティティの導入

エンティティは 強エンティティ 弱エンティティ の 2 種類がある:

  • 強エンティティ: 自前の主キーだけで一意に識別できる。生徒 (学籍番号)、クラス (クラスID) など
  • 弱エンティティ: 親エンティティのキーを借りて初めて一意になる。注文明細 (注文ID + 明細番号) など。 詳細は 弱エンティティ ページ

判定基準は 「親を消したら子は意味を持つか」。 注文を消したら明細に意味はない → 弱。生徒を消してもクラスは意味を持つ → 強。

よくある疑問

Q.エンティティと属性の違いは?
A.エンティティは「区別したい単位そのもの」で、属性はエンティティが持つ「性質」。生徒はエンティティ、生徒の血液型は属性。ただし血液型を集計軸として使いたくなったら別エンティティに切り出す判断もあり得る。
Q.何をエンティティにすべきかの基準は?
A.(1) 複数値を持ちうるか (「生徒の履修科目」など複数持てる項目)、(2) 独立にライフサイクルを持つか (親と別に登録・更新・削除される)、(3) 複数の他エンティティから参照されるか、の 3 点で判断する。どれかに Yes なら独立エンティティに切り出す。
Q.強エンティティと弱エンティティの違いは?
A.強エンティティは自前の主キーだけで一意に識別できる。弱エンティティは親エンティティのキーを借りて初めて識別できる。親を消したら子が意味を持たなくなる関係が目印。

関連トピック

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

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