Learning
레슨 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 다이어그램은 데이터 구조를 명확히 전달합니다.