【データベース】データベースの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図作成時のポイント

  1. 管理したいデータを洗い出す:
    • 何を管理する必要があるかを明確にする。
  2. エンティティ間の関係を考える:
    • どのデータがどのように関連しているかを整理する。
  3. 制約を明確にする:
    • 必須なデータやユニーク性などを定義する。
  4. シンプルさを保つ:
    • 必要以上に複雑にしない。

7. ER図作成に役立つツール

  • Mermaid: Markdown内で使える。
  • dbdiagram.io: 無料で使えるオンラインER図作成ツール。
  • Lucidchart: プロ向けのフローチャート&ER図作成ツール。