ERD vs UMLクラス図 — 主な違い
ER図とUMLクラス図を比較。それぞれの使用場面、記法の違い、データベース設計vsアプリケーション設計へのマッピングを理解します。
Design Patterns
詳細な説明
2つのダイアグラム、2つの視点
ERDとUMLクラス図は両方ともリレーションシップを持つ構造化データをモデリングしますが、異なる世界から来ており、異なる目的を果たします。
ER図(Entity-Relationship Diagram)
- フォーカス: データベース構造(テーブル、カラム、キー)
- 起源: データベース設計(Peter Chen, 1976)
- 記法: クロウズフット、Chen、またはBachman記法
- 要素: エンティティ(テーブル)、属性(カラム)、リレーションシップ(外部キー)
- 対象者: DBA、バックエンド開発者、データアーキテクト
UMLクラス図
- フォーカス: オブジェクト指向ソフトウェア構造(クラス、メソッド、プロパティ)
- 起源: ソフトウェアエンジニアリング(Grady Booch、James Rumbaugh、Ivar Jacobson, 1990年代)
- 記法: UML標準記法
- 要素: クラス、属性、メソッド、アソシエーション、継承
- 対象者: ソフトウェア開発者、アーキテクト、システム設計者
並列比較
| 機能 | ERD | UMLクラス図 |
|---|---|---|
| エンティティ/クラス | カラム付きテーブル | プロパティとメソッド付きクラス |
| リレーションシップ | 外部キー、結合テーブル | アソシエーション、集約、コンポジション |
| カーディナリティ記法 | クロウズフット(──<) |
多重度数値(1..*) |
| 継承 | ネイティブではない(スーパータイプ/サブタイプを使用する場合あり) | 第一級の概念(extends) |
| メソッド/振る舞い | 含まれない | パラメータと戻り値型付きメソッド |
| データ型 | SQL型(VARCHAR、INT) |
言語型(String、int) |
| 制約 | PK、FK、UNIQUE、NOT NULL、CHECK | 可視性(+、-、#)、ステレオタイプ |
それぞれの使用場面
ERDを使う場合:
- リレーショナルデータベーススキーマの設計またはドキュメント作成
- DBAやデータチームとのコミュニケーション
- データベース間の移行計画
- SQL DDL文の生成
UMLクラス図を使う場合:
- オブジェクト指向アプリケーションアーキテクチャの設計
- 振る舞い(メソッド)を持つドメインオブジェクトのモデリング
- 継承階層の計画
- APIコントラクトのドキュメント作成
重なりはあるか?
はい。多くのORMツール(Prisma、TypeORM、Hibernateなど)が両方の世界を橋渡しします — クラス定義がデータベーステーブルにマッピングされます。ORMを使用する場合、ERDは物理データベース構造を、クラス図はアプリケーションレベルのオブジェクトモデルを示します。2つは一貫している必要がありますが、同一ではありません。
ユースケース
設計レビューやドキュメント作成にどのダイアグラムタイプを使用するかを決定している場合。この区別を理解することで、適切なツールを選択できます:データベースに焦点を当てた議論にはERD、アプリケーションアーキテクチャの議論にはUMLクラス図。