変なER図あなたには、この ER 図の異常さがわかりますか?
下に、明らかにおかしい ER 図が 1 枚あります。仕込まれているのは 9 つの違和感。
「なんとなく変」で止まっていた感覚を、ER 図の概念で 1 つずつ言語化していきましょう。
ER 図 (Entity-Relationship Diagram) とは、実世界を「エンティティ (実体)」と「関連 (リレーションシップ)」の 2 種類の抽象単位で表現する図式手法であり、リレーショナルデータベース設計における概念モデルの標準的記法である。
9 つの違和感
各項目のタイトルをクリックすると、ヒントと答えが個別に展開されます。 「ヒント表示」で全項目のヒントを一斉表示、「全て答え合わせ」で答え+バッジも表示します。
ER 図の基本を体系的に学ぶ
推奨する学習順序で並べています。各違和感の解説から辿ってきた場合は、 該当ページだけ拾い読みしても構いません。
- 基礎01エンティティエンティティ (実体) とは
ER 図の四角い箱の中身。何をエンティティにするか、何を属性に落とすかの判断基準を、身近な例で整理する。
- 基礎02関連関連 (リレーションシップ) とは
ER 図の線が表す「エンティティ同士がどう繋がっているか」の意味。役割名と方向、自己参照 (再帰関連) までを身近な例で整理する。
- 基礎03カーディナリティカーディナリティ (多重度) とは
「1 人の部長は何人の部下を持つか」を規定する多重度制約。1:1、1:N、多対多 を身近な例で整理する。
- 基礎04参加制約参加制約 (必須参加 / 任意参加) とは
「所属する社員が 0 人の部署を認めるか」「どの部署にも所属していない社員を認めるか」を規定する最小基数の制約。IE 記法の記号の読み方まで。
- 基礎05多対多多対多 (N:M) と連関実体
「1 学生は複数科目を取り、1 科目に複数学生が集まる」の多対多関係を、連関実体 (履修登録) で分解する手続き。
- 基礎06弱エンティティ弱エンティティと識別関係
「注文書の 3 行目」のように、親がいなければ意味を持たないエンティティ。エンティティ側から見れば「弱」、関連側から見れば「識別関係」— 主キーの構造で判別する。
- 基礎07記法ER 図の記法比較 (IE / IDEF1X / Chen)
同じ ER 図を 3 記法で描き分けた 1:1 対応表。実務ではどれを選ぶかの判断基準まで。
レビュー時のコピペ用チェックリスト
9 つの違和感を汎化した項目。Slack や PR の ER 図レビューで貼って、上から順に潰していく。
### ER 図レビュー チェックリスト - [ ] エンティティの粒度は適切か (属性に複数値・JSON が入っていないか) - [ ] 主キーは適切か (全エンティティに 1 つ以上宣言、代理/自然キーの使い分けは統一されているか) - [ ] 関連に役割名が付いているか (特に同エンティティ間に複数の関連があるとき) - [ ] 自己参照 (再帰関連) の方向と役割名が明示されているか - [ ] カーディナリティが実世界の業務ルールと一致しているか - [ ] 参加制約 (必須/任意) が明示され矛盾がないか - [ ] 多対多は連関実体に分解されているか - [ ] 弱エンティティは親エンティティと識別関係で繋がっているか - [ ] 図全体で記法が統一されているか
よくある疑問
もっと学びたい方へ(おすすめ書籍)
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第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 コース受講)