이번 글에서는 쇼핑몰 서비스를 예로 들어,
비즈니스 룰에서 어떻게 Entity와 Relationship을 도출하고, 최종적으로 ERD를 설계하는지 살펴보겠습니다.
1. 비즈니스 룰 살펴보기
쇼핑몰 서비스에서의 주요 비즈니스 룰은 다음과 같다
비즈니스 룰
- 유저는 상품을 주문할 수 있다.
- 동일한 주문 내역은 한 번의 배달로, 3일 안에 유저가 지정한 배송지에 전달돼야 한다.
만약 지연될 경우, 유저에게 최대한 빨리 알려야 한다.- 유저는 상품에 대한 평가를 남길 수 있다.
평가는 별점(1~5점)과 200자 이내의 줄글로 작성된다.
2. 명사와 동사 추출하기
비즈니스 룰에서 명사와 동사를 먼저 추출한다.
- 명사는 Entity와 Attribute 후보
- 동사는 Relationship 후보
| 비즈니스 룰 | 명사 (Entity/Attribute 후보) | 동사 (Relationship 후보) |
| 1. 유저는 상품을 주문할 수 있다 | 유저, 상품, 주문 | 주문하다 |
| 2. 동일한 주문 내역은 한 번의 배달로, 배송지 | 주문내역, 배송지, 유저 | 전달하다 |
| 3. 유저는 상품에 평가를 남길 수 있다 | 유저, 상품, 평가, 별점, 줄글 | 남기다 |
3. Entity와 Attribute 구분하기
추출한 명사 중에서 독립적으로 존재할 수 있는 Entity와 Entity의 성질을 설명하는 Attribute를 구분합니다.
(1) 유저 - 상품 - 주문
"유저는 상품을 주문할 수 있다."
- 유저(User) → Entity
- 상품(Product) → Entity
- 주문(Order) → 처음에는 관계로 생각할 수 있지만, 주문일시, 배송지, 상태 등 다양한 속성을 갖기 때문에 Entity로 격상
(2) 배송지
"동일한 주문 내역은 유저가 지정한 배송지로 전달돼야 한다."
- 배송지(Address) → 특정 주문에 속하는 정보이므로 주문(Order)의 Attribute가 된다.
(3) 평가
"유저는 상품에 대한 평가를 남길 수 있다."
- 평가(Review) → Entity
- 별점(Rating) → Attribute (1~5점 자연수)
- 줄글(Comment) → Attribute (200자 이내)
💡 구조 이해:
유저와 상품 사이에는 평가(Review)가 다리 역할을 하며, 유저는 평가를 남기고, 상품은 평가를 받는다.
4. 최종 Entity 설계
| Entity | 주요 attribute 예시 |
| 유저(User) | user_id, 이름, 연락처 |
| 상품(Product) | product_id, 상품명, 가격, 재고 |
| 주문(Order) | order_id, 주문일시, 배송지, 상태 |
| 평가(Review) | review_id, 별점, 줄글, 작성일시 |
5. ERD 설계
위에서 도출한 Entity와 관계를 바탕으로 ERD를 그려보면 아래와 같다.
[유저] ---< [주문] >--- [상품]
| |
| |
+----< [평가] >-------+
- 유저(User)와 상품(Product) 사이에 주문(Order)이 다리 역할
- 평가(Review)는 유저와 상품을 연결하며 리뷰 정보를 저장
6. 정리
데이터 모델링은 다음 과정을 거쳐 완성된다.
- 비즈니스 룰 작성 → 서비스가 지켜야 할 규칙을 텍스트로 정의
- 명사·동사 추출 → 명사는 Entity/Attribute, 동사는 Relationship 후보
- Entity와 Attribute 구분 → 독립된 개체인지 속성인지 판단
- ERD 설계 → Entity와 관계를 시각화
📌 핵심 포인트
- 처음에는 주문을 단순히 관계(Relationship)로 볼 수 있지만, 배송지, 주문일자, 상태 등 속성이 많아지면 Entity로 격상된다.
- 평가는 유저와 상품을 연결하는 중간 Entity로, 다대다(M:N) 관계를 해소한다.
- 비즈니스 룰을 기반으로 명확하게 구조를 정의하면, 이후 개발 과정에서 혼선을 줄이고 유지보수가 쉬워진다.
'데이터 분석 > 06. 데이터 모델링' 카테고리의 다른 글
| 카디널리티 관계 유형 (0) | 2025.09.29 |
|---|---|
| 식별자의 종류와 주식별자의 특성 (0) | 2025.09.29 |
| Attribute 후보에 대한 예외 경우 (0) | 2025.09.29 |
| [데이터 모델링] 모델링의 시작! 비즈니스 룰 이해하기 (0) | 2025.09.29 |
| [데이터 모델링] 데이터를 어떻게 저장해야할까 (0) | 2025.09.25 |