K-FreeMarket 프로젝트 ERD 설계 과정

wjd15sheep·2025년 6월 11일
0

프로젝트

목록 보기
9/10
post-thumbnail

K-FreeMarket 프로젝트는 상품을 판매하는 웹 서비스를 목표로 혼자서 개발하게 되었습니다.
기본적인 기능은 상품 조회 및 판매, 유저의 장바구니와 결제, 주문 처리 등이며,
동시 접속자 수는 약 100명 내외를 예상하고 있습니다.

본 문서에서는 웹 서비스의 서버 구축에 앞서 가장 기초가 되는 ERD 설계 과정을 단계별로 소개하겠습니다.

ERDCloud 사이트를 활용해 작성했습니다.

📐 ERD 설계 순서

1번째 엔티티를 도출

우선 서비스를 구성하는 주요 데이터 단위를 식별합니다. 아래는 도출한 핵심 엔티티입니다.

엔티티설명
User (유저)개인 정보 및 계정 정보를 담당
CartItem (장바구니)유저가 담은 상품 정보 담당
Order (주문)결제 후 주문의 상태 및 정보 관리
OrderItem (주문 상세)주문에 포함된 각 상품의 상세 정보 담당
Payment (결제 내역)결제 수단, 상태, 결제 일시 등 관리
Product (상품)상품 기본 정보 관리
ProductImage (상품 이미지)상품에 연결된 이미지 관리
Review (리뷰)유저가 남긴 상품 리뷰 담당
Question (질문)상품에 대해 유저가 남긴 질문 담당
Answer (답변)질문에 대한 관리자 또는 판매자의 응답
ErrorLog (로그)시스템 이벤트, 에러, 행동 기록 등 수집 독립적인 엔티티
Banner (배너)이벤트, 상품 홍보 등 메인 화면 배너 관리

📌 ERD 엔티티:

💡 Error_Log 는 시스템 전반의 에러를 기록하기 위한 독립적인 엔티티입니다.
다른 엔티티와 직접적인 관계를 맺지 않고도 시스템 전체의 예외 상황을 추적할 수 있도록 구성합니다.

2. 엔티티 배치

엔티티 간의 관계를 도식화하기 전에, 핵심 엔티티를 중심으로 배치합니다.
보통 서비스 구조상 중요한 엔티티는 왼쪽 상단에 배치하는 것이 좋습니다.

3. 엔터티 간의 관계 설정

이 단계가 ERD 설계의 핵심입니다. 각 엔티티 간의 관계를 다음과 같이 정의합니다:

  • 1:1, 1:N, N:M 관계를 명확하게 설정합니다.

    • User ↔ Review: 1:N
    • Product ↔ Review: 1:N
    • Order ↔ OrderItem: 1:N
    • Product ↔ ProductImage: 1:N
    • User ↔ CartItem: 1:N
  • N:N 관계는 중간 테이블(엔티티)을 두어 1:N - N:1로 분해합니다.

    • 예: User ↔ Product의 "좋아요" 기능이 있다면, Favorite이라는 중간 엔티티를 둡니다.

식별관계 vs 비식별관계

  • 식별관계: 부모의 PK가 자식의 PK + FK로 들어가는 관계
  • 비식별관계: 부모의 PK가 자식의 일반 속성(FK)으로만 들어가는 관계

📸 관계 도식화

최종적인 모습

아래는 관계 및 제약 조건까지 고려한 최종 ERD 구성입니다.
(많은 수정을 거쳤습니다. 또한 많은 수정을 할 예정입니다.)


📝 마무리

ERD 설계는 단순히 테이블을 나열하는 것이 아니라, 비즈니스 로직과 데이터 흐름을 정제된 구조로 표현하는 과정입니다.

  • 기능을 구현하기 전에 ERD를 먼저 명확하게 설계하도록 노력해야합니다.
  • 개발 중간에 발생할 수 있는 데이터 누락, 관계 오류, 성능 이슈를 예방할 수 있습니다.
profile
성장 위해 노력하는 웹 개발자 주니어

0개의 댓글