【データベース】データベースのER図技術チートシート - j-komatsu/myCheatSheet GitHub Wiki
データベースのER図技術チートシート
1. ER図とは?
ER図(Entity-Relationship Diagram)は、データベースの構造を視覚的に表現する図です。
- E(Entity): エンティティ(実体)
- R(Relationship): 関係
ER図は、データベース設計において「どんなデータを管理するか」「それらのデータがどのように関連しているか」を示します。
2. 主な構成要素
要素 | 説明 | 記号/表記 |
---|---|---|
エンティティ | データとして管理したい対象物(例: 人, 商品, 注文) | 四角形 |
属性 | エンティティの特徴や性質(例: 名前, 価格, 日付) | 楕円 |
リレーションシップ | エンティティ同士の関係(例: 注文する, 所属する) | 菱形 |
主キー | エンティティを一意に識別する属性(例: ユーザーID, 商品コード) | 下線付きテキスト |
外部キー | 別のエンティティの主キーを参照する属性 | 外部エンティティの主キー |
3. 専門的な要素解説
エンティティ
- エンティティ型: 同じ特徴を持つオブジェクトの集合。
- 例: 顧客(Customer)、製品(Product)
- エンティティインスタンス: 集合内の具体的な1つの要素。
- 例: 顧客 "田中太郎"、製品 "スマートフォンX"
属性
- 単純属性: 1つの値だけを持つ属性。
- 例: 名前、価格
- 複合属性: 複数の値に分割できる属性。
- 例: 住所 → 県、市、町
- 派生属性: 他の属性から計算できる属性。
- 例: 年齢(生年月日から計算)
リレーションシップ
- リレーションシップの種類:
- 1対1(1:1)
- 1対多(1:N)
- 多対多(M:N)
制約
- カーディナリティ: 関係の数。
- 例: "1人の顧客が複数の注文を行う(1:N)"
- 必須性: リレーションシップが必須かどうか。
- 例: "顧客は必ず1つ以上の注文を持つ"
4. 小学生向けの例題
シナリオ: 学校の図書館管理
例:
- 図書館には本がたくさんあります。
- 生徒は本を借ります。
- 本には「タイトル」や「著者」といった情報があります。
ER図例
graph LR
A[生徒] -->|借りる| B[本]
A --> C[名前]
B --> D[タイトル]
B --> E[著者]
解説:
- エンティティ:
- 生徒(A)
- 本(B)
- リレーションシップ:
- 借りる(A → B)
- 属性:
- 生徒 → 名前(C)
- 本 → タイトル(D)、著者(E)
5. 専門家向けER図
シナリオ: ECサイトの注文管理
例:
- 顧客が注文を行い、注文には複数の製品が含まれる。
- 製品には名前、価格がある。
graph TD
Customer[顧客] -->|行う| Order[注文]
Order -->|含む| Product[製品]
Customer --> Name[名前]
Order --> Date[注文日]
Product --> Price[価格]
Product --> PName[製品名]
解説:
- エンティティ:
- 顧客(Customer)、注文(Order)、製品(Product)
- リレーションシップ:
- 顧客 → 注文(行う)
- 注文 → 製品(含む)
- 属性:
- 顧客 → 名前(Name)
- 注文 → 注文日(Date)
- 製品 → 価格(Price)、製品名(PName)
6. ER図作成時のポイント
- 管理したいデータを洗い出す:
- 何を管理する必要があるかを明確にする。
- エンティティ間の関係を考える:
- どのデータがどのように関連しているかを整理する。
- 制約を明確にする:
- 必須なデータやユニーク性などを定義する。
- シンプルさを保つ:
- 必要以上に複雑にしない。
7. ER図作成に役立つツール
- Mermaid: Markdown内で使える。
- dbdiagram.io: 無料で使えるオンラインER図作成ツール。
- Lucidchart: プロ向けのフローチャート&ER図作成ツール。