ERD(Entity Relationship Diagram)와 UML(Unified Modeling Language)은 모두 시스템 설계를 위한 다이어그램이지만, 각각 다른 목적과 관점에서 시스템을 표현합니다.
ERD는 데이터베이스 설계를 위한 다이어그램으로, 데이터베이스 내의 엔티티(Entity), 속성(Attribute), 관계(Relationship)를 시각적으로 표현합니다.
[사용자] ----<주문한다>---- [주문]
| |
| |
[이름] [주문번호]
[이메일] [주문일자]
[전화번호] [총액]
UML은 소프트웨어 시스템 전체를 모델링하기 위한 표준화된 시각적 표기법으로, 객체 지향 설계를 중심으로 다양한 다이어그램을 제공합니다.
시스템의 정적 구조를 표현
클래스 다이어그램 (Class Diagram)
컴포넌트 다이어그램 (Component Diagram)
배치 다이어그램 (Deployment Diagram)
시스템의 동적 동작을 표현
시퀀스 다이어그램 (Sequence Diagram)
활동 다이어그램 (Activity Diagram)
상태 다이어그램 (State Diagram)
유스케이스 다이어그램 (Use Case Diagram)
┌─────────────┐
│ User │
├─────────────┤
│ - userId │
│ - name │
│ - email │
├─────────────┤
│ + login() │
│ + logout() │
└─────────────┘
│
│ 1
│
│ *
▼
┌─────────────┐
│ Order │
├─────────────┤
│ - orderId │
│ - orderDate │
│ - totalAmount│
├─────────────┤
│ + create() │
│ + cancel() │
└─────────────┘
| 구분 | ERD | UML |
|---|---|---|
| 주요 목적 | 데이터베이스 설계 | 소프트웨어 시스템 전체 모델링 |
| 관점 | 데이터 중심 | 객체 지향 중심 |
| 초점 | 데이터 구조와 관계 | 클래스, 동작, 프로세스 |
| 표현 범위 | 정적 데이터 모델 | 정적 구조 + 동적 동작 |
| 구분 | ERD | UML (클래스 다이어그램) |
|---|---|---|
| 엔티티/클래스 | 엔티티 (데이터만) | 클래스 (데이터 + 메서드) |
| 속성 | 속성 (Attribute) | 속성 (Attribute) |
| 관계 | 관계 (Relationship) | 연관 (Association), 상속 (Inheritance), 집합 (Aggregation), 합성 (Composition) |
| 동작 표현 | 없음 | 메서드 (Method) 포함 |
| 구분 | ERD | UML |
|---|---|---|
| 학습 난이도 | 낮음 | 중-높음 |
| 표기법 복잡도 | 단순 | 복잡 |
| 다이어그램 종류 | 1가지 (기본) | 14가지 이상 |
| 표준화 | 여러 변형 존재 | 국제 표준 |
| 구분 | ERD | UML |
|---|---|---|
| 주요 사용자 | 데이터베이스 설계자, DBA | 소프트웨어 아키텍트, 개발자 |
| 활용 분야 | 데이터베이스 설계, 데이터 모델링 | 소프트웨어 설계, 시스템 분석 |
| 도구 | ERwin, MySQL Workbench, dbdiagram.io | Enterprise Architect, StarUML, PlantUML |
데이터베이스 설계 단계
데이터 중심 프로젝트
간단한 표현이 필요한 경우
소프트웨어 설계 단계
복잡한 시스템 개발
동작과 프로세스 표현이 필요한 경우
많은 프로젝트에서 ERD와 UML을 함께 사용합니다:
┌──────────┐ ┌──────────┐
│ User │ │ Order │
├──────────┤ ├──────────┤
│ userId │◄───1:N──│ orderId │
│ name │ │ userId │
│ email │ │ orderDate│
│ phone │ │ totalAmt │
└──────────┘ └──────────┘
특징:
┌──────────────────┐
│ User │
├──────────────────┤
│ - userId: int │
│ - name: string │
│ - email: string │
│ - phone: string │
├──────────────────┤
│ + login() │
│ + logout() │
│ + createOrder() │
└──────────────────┘
│
│ 1
│
│ *
▼
┌──────────────────┐
│ Order │
├──────────────────┤
│ - orderId: int │
│ - orderDate: Date│
│ - totalAmount: │
│ decimal │
├──────────────────┤
│ + create() │
│ + cancel() │
│ + calculateTotal()│
└──────────────────┘
특징:
ERD와 UML은 서로 다른 목적을 가진 모델링 도구입니다:
프로젝트의 성격과 목적에 따라 적절한 도구를 선택하거나, 두 가지를 함께 활용하여 시스템을 다각도로 설계할 수 있습니다.
핵심 차이점 요약:
1. ERD는 데이터 구조에 집중, UML은 데이터 + 동작에 집중
2. ERD는 단순하고 직관적, UML은 복잡하지만 표현력이 풍부
3. ERD는 데이터베이스 설계자에게, UML은 소프트웨어 개발자에게 더 친숙
4. ERD는 정적 모델, UML은 정적 + 동적 모델 모두 표현 가능