레슨 5 / 8·20분
상태도와 ER 다이어그램
상태 다이어그램(State Diagram)
상태 다이어그램은 객체가 가질 수 있는 상태(state)와 상태 간 전이(transition)를 표현합니다. 주문 상태, 결제 프로세스, UI 컴포넌트의 상태 관리 등을 설계할 때 매우 유용합니다. Mermaid에서는 stateDiagram-v2 키워드로 작성합니다.
mermaid
stateDiagram-v2
[*] --> 대기중
대기중 --> 처리중 : 주문 접수
처리중 --> 배송중 : 결제 완료
배송중 --> 완료 : 배송 도착
처리중 --> 취소됨 : 결제 실패
배송중 --> 반품요청 : 반품 신청
반품요청 --> 환불완료 : 환불 처리
완료 --> [*]
취소됨 --> [*]
환불완료 --> [*]복합 상태(Composite State)
상태 안에 하위 상태를 정의하면 복잡한 상태 머신을 계층적으로 표현할 수 있습니다.
mermaid
stateDiagram-v2
[*] --> 로그인
state 로그인 {
[*] --> 아이디입력
아이디입력 --> 비밀번호입력 : 아이디 확인
비밀번호입력 --> 인증처리 : 제출
인증처리 --> 성공 : 인증 통과
인증처리 --> 실패 : 인증 거부
실패 --> 아이디입력 : 재시도
}
로그인 --> 대시보드 : 로그인 성공
state 대시보드 {
[*] --> 메인화면
메인화면 --> 설정
메인화면 --> 프로필
설정 --> 메인화면
프로필 --> 메인화면
}
대시보드 --> [*] : 로그아웃포크(Fork)와 조인(Join)
mermaid
stateDiagram-v2
state fork_state <<fork>>
state join_state <<join>>
[*] --> fork_state
fork_state --> 데이터검증
fork_state --> 권한확인
fork_state --> 로그기록
데이터검증 --> join_state
권한확인 --> join_state
로그기록 --> join_state
join_state --> 처리완료
처리완료 --> [*]ER 다이어그램 심화
ER(Entity-Relationship) 다이어그램은 데이터베이스 설계의 핵심입니다. 엔티티(테이블), 속성(컬럼), 관계(외래키)를 시각적으로 표현하여 데이터 모델을 명확히 합니다.
mermaid
erDiagram
CUSTOMER {
int id PK
string name
string email UK
date created_at
}
ORDER {
int id PK
int customer_id FK
date order_date
string status
float total_amount
}
ORDER_ITEM {
int id PK
int order_id FK
int product_id FK
int quantity
float unit_price
}
PRODUCT {
int id PK
string name
string category
float price
int stock
}
REVIEW {
int id PK
int customer_id FK
int product_id FK
int rating
string comment
}
CUSTOMER ||--o{ ORDER : "주문한다"
ORDER ||--|{ ORDER_ITEM : "포함한다"
PRODUCT ||--o{ ORDER_ITEM : "주문된다"
CUSTOMER ||--o{ REVIEW : "작성한다"
PRODUCT ||--o{ REVIEW : "평가된다"ER 다이어그램 관계 표기법
- •||--|| : 1 대 1 (정확히 하나)
- •||--o| : 1 대 0 또는 1
- •||--|{ : 1 대 1 이상 (필수 다수)
- •||--o{ : 1 대 0 이상 (선택 다수)
- •PK : Primary Key (기본 키)
- •FK : Foreign Key (외래 키)
- •UK : Unique Key (유니크 키)
💡
상태 다이어그램과 ER 다이어그램은 시스템 설계 문서에서 가장 많이 사용됩니다. 상태도는 비즈니스 로직의 흐름을, ER 다이어그램은 데이터 구조를 명확히 전달합니다.