ER図(Entity-Relationship Diagram)は、データベースの構造を視覚的に表現するための図です。ER図は、データベースのエンティティ(Entity)とそれらの関係(Relationship)を示し、データの構造とその関連性を明確にするのに役立ちます。
ER図の基本要素
-
エンティティ(Entity):
- 実体を表し、データベース内で保存される対象物(例えば、ユーザー、商品、注文など)。
- 四角形で表される。
-
属性(Attribute):
- エンティティの特性やプロパティを表す(例えば、ユーザーの名前、商品の価格)。
- 楕円形で表される。
-
リレーションシップ(Relationship):
- エンティティ同士の関連性を表す(例えば、ユーザーが注文する、商品が注文される)。
- 菱形で表される。
-
主キー(Primary Key):
- 各エンティティ内で一意に識別できる属性(例えば、ユーザーID、商品ID)。
- 属性名の下線で示される。
-
外部キー(Foreign Key):
- 他のエンティティの主キーを参照する属性(例えば、注文テーブルのユーザーIDはユーザーテーブルの主キーを参照する)。
- 通常は関係の一部として示される。
ER図の具体例
例: オンラインショッピングシステム
このシステムには、ユーザー(User)、商品(Product)、注文(Order)の3つのエンティティがあります。それぞれのエンティティには以下の属性があります。
-
User
- user_id (主キー)
- username
- password
-
Product
- product_id (主キー)
- product_name
- price
- stock_quantity
-
Order
- order_id (主キー)
- order_date
- user_id (外部キー)
- total_amount
そして、以下のリレーションシップがあります。
- UserとOrderの間には「UserがOrderを行う」というリレーションシップ。
- OrderとProductの間には「OrderがProductを含む」というリレーションシップ。
ER図の描画
+-------------+ +--------------+ +-------------+
| User | | Order | | Product |
+-------------+ +--------------+ +-------------+
| user_id |<--------+ | order_id |<--------+ | product_id |
| username | | order_date | | product_name |
| email | | user_id (FK) | | price |
| password | | total_amount | | stock_quantity|
+-------------+ +--------------+ +-------------+
詳細なER図
+-------------+ +--------------+ +-------------+
| User | | Order | | Product |
+-------------+ +--------------+ +-------------+
| PK user_id |-----+ | PK order_id |-------+ | PK product_id |
| username | | | order_date | | | product_name |
| email | | | FK user_id | | | price |
| password | | | total_amount | | | stock_quantity|
+-------------+ | +--------------+ | +-------------+
| |
+-------------<-------------+
Places
リレーションシップの種類
-
1対1 (One-to-One):
- 例: 人とそのパスポート。1人の人が1つのパスポートを持ち、1つのパスポートが1人の人に対応する。
-
1対多 (One-to-Many):
- 例: ユーザーと注文。1人のユーザーが複数の注文を行うことができるが、1つの注文は1人のユーザーに対応する。
-
多対多 (Many-to-Many):
- 例: 学生と授業。1人の学生が複数の授業を受け、1つの授業に複数の学生が登録される。
実際のER図の作成
ユーザー、商品、注文を持つオンラインショッピングシステムのER図
+----------------+ +----------------+ +----------------+
| User | | Order | | Product |
+----------------+ +----------------+ +----------------+
| PK user_id |<-+ | PK order_id |<-+ | PK product_id |
| username | | | order_date | | | product_name |
| email | | | FK user_id | | | price |
| password | +--< | total_amount | +--< | stock_quantity |
+----------------+ +----------------+ +----------------+
1 | \ 1 / | \ 1 / | \
| \ / | \ / | \
| \ Places / | \ Contains / | \
| \ / | \ / | \
+----------------+ +----------------+ +------+
N N N
ツール
ER図を作成するためのツールは数多くあります。以下はその一部です。
- Lucidchart: 直感的なドラッグアンドドロップインターフェースを持つオンラインツール。
- draw.io: 無料で使用できるオンライン図作成ツール。
- Microsoft Visio: プロフェッショナルな図作成ツール。
- MySQL Workbench: MySQLデータベースの設計に特化したツール。
- dbdiagram.io: 簡単にER図を作成できるオンラインツール。
ER図はデータベース設計の重要な部分であり、データ構造を視覚的に理解するのに役立ちます。
設計段階でのエンティティとその関係性を明確にすることで、データベース開発の効率と品質を向上させることができます。