アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

ER図とは:データベース設計の基礎を理解する

Featured image of the post

ER図(Entity-Relationship Diagram、エンティティ・リレーションシップ図)は、データベース設計において重要な役割を果たす視覚的なツールです。ER図を使用することで、システム内のデータの構造を視覚的にモデル化し、エンティティ間の関係を明確にすることができます。この記事では、ER図の基本概念やその作成方法、さらにその活用方法について解説します。

ER図の基本概念

ER図は、データベースの論理設計を行う際に使用されます。この図は、データの構造を視覚的に表現し、データベース内でどのようにデータが関連付けられているかを示します。ER図の基本要素は以下の通りです:

1. エンティティ(Entity)

エンティティとは、データベース内で管理する対象物や概念のことを指します。エンティティは実体とも呼ばれ、テーブルとして実装されることが一般的です。例えば、顧客情報を管理するための「顧客」や、製品情報を管理するための「製品」がエンティティに該当します。

エンティティは、四角形のボックスで表されます。

2. 属性(Attribute)

属性は、エンティティに関連付けられたデータ項目です。各エンティティは複数の属性を持ちます。例えば、「顧客」エンティティには「顧客ID」、「氏名」、「住所」などの属性が含まれます。属性はテーブルのカラムとして表現されます。

属性は、楕円形の図形でエンティティと接続して表されます。

3. リレーションシップ(Relationship)

リレーションシップは、エンティティ間の関連性を表します。例えば、「顧客」と「注文」の間には、顧客が注文を行うというリレーションシップが存在します。リレーションシップは、エンティティ同士を結びつけ、どのような関連があるかを示します。

リレーションシップは、ダイヤモンド形の図形でエンティティ間を結ぶ形で表現されます。

4. 主キー(Primary Key)と外部キー(Foreign Key)

主キーは、各エンティティの中で一意に識別できる属性を指します。例えば、「顧客ID」が「顧客」エンティティの主キーとなります。一方、外部キーは他のエンティティの主キーを参照する属性で、エンティティ間の関連を確立します。

erDiagram
    CUSTOMER {
        int id PK 
        string name
        string email
    }

    ORDER {
        int id PK
        date order_date
        float total_amount
        int customer_id FK
    }

    PRODUCT {
        int id PK
        string name
        float price
    }

    ORDER_PRODUCT {
        int order_id PK, FK
        int product_id PK, FK
        int quantity
    }

    CUSTOMER ||--o{ ORDER : "places"
    ORDER ||--o{ ORDER_PRODUCT : "contains"
    PRODUCT ||--o{ ORDER_PRODUCT : "is included in"

ER図の記法

ER図の記法は、幾つかのバリエーションがありますが、基本的な要素は共通しています。以下は一般的な記法の一部です:

  • Chen記法: 最も伝統的な記法で、エンティティを四角形、属性を楕円形、リレーションシップをダイヤモンド形で表現します。
  • Crow's Foot記法: 実務でよく使われる記法で、リレーションシップを「足跡」の形で表現し、多重度(1対1、1対多、多対多)を明示します。
graph LR
    subgraph "Chen記法"
        A["エンティティ"]
        B["リレーションシップ"]
        C["属性"]

        A -- "関連" --> B
        B -- "関連" --> A
        A -- "持つ" --> C
        C -- "属する" --> A
    end

    subgraph "Crow's Foot記法"
        X["エンティティ"]
        Y["リレーションシップ"]
        Z["エンティティ"]

        X --o Y
        Y --o Z
    end

ER図の作成手順

ER図を作成する際の基本的な手順は次の通りです:

  1. エンティティの定義: システム内で管理する必要がある主なエンティティを特定し、リスト化します。これには、顧客、注文、製品などのエンティティが含まれます。
  2. 属性の定義: 各エンティティに必要な属性を定義します。例えば、顧客エンティティには、顧客ID、氏名、住所などが含まれます。
  3. リレーションシップの設定: エンティティ間の関連を定義し、どのようなリレーションシップが存在するかを決めます。例えば、顧客と注文の間には、1対多のリレーションシップが存在します。
  4. 主キーと外部キーの設定: 各エンティティの主キーを設定し、必要に応じて外部キーを定義します。これにより、エンティティ間の関係が確立されます。
  5. ER図の作成: 上記の情報を基に、ER図を作成します。これは手描きでも、ソフトウェアを使用してもかまいません。

ER図の活用方法

ER図はデータベース設計の初期段階で使用されるだけでなく、他の多くの場面でも役立ちます。以下はその一例です:

1. データベースの構築

ER図を基に、リレーショナルデータベースを構築します。ER図が正確に描かれていれば、そのままデータベーススキーマとして実装することが可能です。

2. システムのドキュメント化

ER図は、システムのデータ構造を視覚的に表現するため、ドキュメントとして非常に有用です。開発者間での共通理解を助け、新たなメンバーのオンボーディングを容易にします。

3. システムのリファクタリング

既存のシステムをリファクタリングする際、ER図を使用してデータ構造を再評価し、改善点を見つけることができます。これにより、システム全体の効率性と保守性が向上します。

Mermaid記法でのER図の書き方

Mermaid記法でER図を作成するための基本的な方法を以下に紹介します。Mermaidには、ER図を表現するための専用の記法が用意されています。

基本構文

MermaidでER図を描く際は、erDiagramキーワードを使用します。以下に基本的な構文を示します。

erDiagram
    "EntityName1" {
        int Attribute1 PK
        string Attribute2
        string Attribute3
    }

    "EntityName2" {
        int AttributeA PK
        string AttributeB
    }

"EntityName1" ||--o{ "EntityName2" : "RelationshipName"
erDiagram
    "EntityName1" {
        int Attribute1 PK
        string Attribute2
        string Attribute3
    }

    "EntityName2" {
        int AttributeA PK
        string AttributeB
    }

"EntityName1" ||--o{ "EntityName2" : "RelationshipName"
説明
  • エンティティの定義EntityNameでエンティティを定義し、ブロック内で属性(Attribute)を列挙します。属性の型(int, string, floatなど)と属性名を指定します。PKは主キー、FKは外部キーを表します。
  • 属性の定義:各エンティティ内に定義される属性は、そのエンティティの持つデータ項目を表します。例えば、Attribute1EntityName1の一部として定義され、型としてintが指定されています。
  • リレーションシップの定義:エンティティ間のリレーションシップを||--o{のようなシンボルで表現します。||は1対1、o{は1対多のリレーションシップを意味します。
  • リレーションシップのラベル:リレーションシップの種類や意味を表すために、RelationshipNameを使用します。
リレーションシップの種類
  • ||--||: 1対1の関係
  • }o--||: 多対1の関係
  • ||--o{: 1対多の関係
  • }o--o{: 多対多の関係

まとめ

ER図は、データベース設計において不可欠なツールです。エンティティ、属性、リレーションシップなどの基本要素を理解し、適切な手順でER図を作成することで、効率的かつスケーラブルなデータベースを設計できます。また、ER図はドキュメント化やシステムの改善にも役立つため、開発プロセス全体を通じて有用です。正確なER図を作成し、システムの基盤をしっかりと構築しましょう。



▼ 目次