エンティティ (実体) とは
エンティティとは、実世界における区別可能な対象または概念であって、ER モデルにおいて属性の集合として表現される抽象単位である。
まず身近な例で: 表の 1 行を「何」にするか
Excel か Google Sheets で生徒の表を作るとき、いちばん最初に決めるのは「1 行を何にするか」。生徒 1 人 = 1 行にするのか、 生徒とクラス担任のセット = 1 行にするのか、あるいは日々の出欠 = 1 行にするのか、 で表の意味も列も全部変わる。この 「1 行にしたい単位」 こそが、 ER 図でいう エンティティ。
エンティティは実世界の名詞そのものではない。 「システムが区別したい単位」だ。生徒 A と生徒 B を区別したいから「生徒」がエンティティになる。 「日本語」と「英語」を区別したいなら「言語」もエンティティ。区別する必要がなければ、単なる属性で終わる。
ER 図でのエンティティの描き方
ER 図では四角い箱で描き、箱の中に「エンティティ名 (通常は名詞、単数形が慣例)」を上段、 「属性のリスト」を下段に書く。主キー (行を一意に見分けるための列) には下線を引くのが IE 記法の慣習。
下線が引かれている列 (学籍番号 / クラスID) が主キー = 1 行を一意に特定する列。
エンティティにするか、属性にするかの判断基準
現場で迷うのは、「これは属性か、それとも独立のエンティティか」 の判断。 以下の 3 点のうちどれかに Yes なら、独立エンティティとして切り出したほうがよい:
- 複数値を持ちうるか — 「生徒の履修科目」は複数持てる → 独立エンティティ「履修」に切り出す
- 独立にライフサイクルを持つか — 「担任」は生徒と別に管理されている (異動・退職・引き継ぎがある) → 別エンティティ「教員」に切り出す
- 複数の他のエンティティから参照されるか — 「教員 (担任)」を学級からも、履修からも、成績表からも参照する → 独立エンティティ「教員」を用意して、 複数のエンティティから FK で参照する構造にする
逆に、「生徒の血液型」のような 1 対 1 で単一値・独立管理も参照もされない データは属性で十分。 余計な箱を作らないほうが図はシンプルになる。
変なER図 との対応: 違和感 #2「顧客」の属性欄破綻
変なER図 の「顧客」エンティティには、注文履歴JSON、カート内商品ID配列、レビュー全て、血液型 … と粒度もライフサイクルも違うものが並んでいる。
- 注文履歴 は複数値を持ち、注文ごとに独立して管理される → 別エンティティ「注文」「注文明細」に切り出すべき
- レビュー全て は複数属性の塊 (評価・本文・投稿日時…) → 別エンティティ「レビュー」に切り出すべき
- カート内商品ID配列 は複数値そのもの → 別エンティティ「カート項目」との関連に切り出すべき
これらを 1 つのエンティティに詰め込むと、更新のたびに JSON の一部だけ書き換えて残りを壊すなど、第1正規形 (1NF) の違反となる問題も同時に起きる。 ER 図の粒度と正規化は表裏一体の話だ。
強エンティティと弱エンティティの導入
エンティティは 強エンティティ と 弱エンティティ の 2 種類がある:
- 強エンティティ: 自前の主キーだけで一意に識別できる。生徒 (学籍番号)、クラス (クラスID) など
- 弱エンティティ: 親エンティティのキーを借りて初めて一意になる。注文明細 (注文ID + 明細番号) など。 詳細は 弱エンティティ ページ
判定基準は 「親を消したら子は意味を持つか」。 注文を消したら明細に意味はない → 弱。生徒を消してもクラスは意味を持つ → 強。
よくある疑問
関連トピック
もっと学びたい方へ(おすすめ書籍)
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第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 コース受講)