Skip to content

[BE] ERD 문서화 Ver.1

장현호 Hyunho Jang edited this page Sep 8, 2024 · 1 revision

🚀 목차


⚠️ 주요 변경사항 (24.08.19)

  • ADDRESS 엔티티 분리
  • ITEM_IMAGE 엔티티 추가
  • ITEM_CATEGORY 중간 테이블 추가
  • CATEGORY에 자기 참조 관계 추가
  • ORDER_ITEM에 priceAtPurchase 필드 추가
  • REVIEW에 memberId 필드 추가
  • PAYMENT에 status 필드 추가

⚠️ 주요 변경사항 (24.08.20)

  • ADDRESS 엔티티 삭제
  • MEMBER 엔티티 수정
    • streetAddress, city, state, postalCode, country 필드 추가 (회원의 기본 주소 정보)
  • ORDER 엔티티 수정
    • streetAddress, city, state, postalCode, country 필드 추가 (주문의 배송 주소 정보)
  • (추가) 주소정보 간소화
    • streetAddress, detailAddress, postalCode 필드만 유지

📚 ERD

이커머스 서비스, 관리자 공통 사용

erDiagram
    MEMBER ||--o{ ORDER : places
    MEMBER {
        Long id PK
        String email UK
        String password
        String name
        String phone
        String streetAddress
        String detailAddress
        String postalCode
        DateTime lastLoginDate
        DateTime deletedAt
        DateTime createdAt
        DateTime updatedAt
    }
    ORDER ||--|{ ORDER_ITEM : contains
    ORDER {
        Long id PK
        Long memberId FK
        String streetAddress
        String detailAddress
        String postalCode
        Enum status
        DateTime createdAt
        DateTime updatedAt
    }
    ORDER_ITEM {
        Long id PK
        Long orderId FK
        Long itemId FK
        Integer quantity
        Decimal priceAtPurchase
        DateTime createdAt
        DateTime updatedAt
    }
    ITEM ||--o{ ORDER_ITEM : "ordered in"
    ITEM ||--o{ ITEM_CATEGORY : belongs
    ITEM {
        Long id PK
        String name
        Decimal price
        String description
        Integer stockQuantity
        Enum status
        DateTime createdAt
        DateTime updatedAt
    }
    ITEM_IMAGE ||--o{ ITEM : has
    ITEM_IMAGE {
        Long id PK
        Long itemId FK
        String imageUrl
        Integer displayOrder
        DateTime createdAt
        DateTime updatedAt
    }
    CATEGORY ||--o{ ITEM_CATEGORY : categorizes
    CATEGORY {
        Long id PK
        Long parentId FK
        String name
        Integer depth
        DateTime createdAt
        DateTime updatedAt
    }
    ITEM_CATEGORY {
        Long itemId FK
        Long categoryId FK
        DateTime createdAt
    }
    REVIEW ||--|| ORDER_ITEM : "written for"
    REVIEW {
        Long id PK
        Long orderItemId FK
        Long memberId FK
        Decimal score
        String content
        DateTime createdAt
        DateTime updatedAt
    }
    PAYMENT ||--|| ORDER : "paid for"
    PAYMENT {
        Long id PK
        Long orderId FK
        Decimal amount
        Enum method
        Enum status
        DateTime createdAt
        DateTime updatedAt
    }
Loading

📚 ERD 엔티티 상세 설명

MEMBER

사용자 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 회원 고유 식별자
email String (UK) 로그인에 사용되는 이메일 주소
password String 암호화된 비밀번호
name String 회원 이름
phone String 전화번호
streetAddress String 도로명 주소
detailAddress String 상세 주소 (아파트 동호수 등)
postalCode String 우편번호
lastLoginDate DateTime 마지막 로그인 일시
deletedAt DateTime 계정 삭제 시각 (null이면 활성 상태)
createdAt DateTime 계정 생성 시각
updatedAt DateTime 정보 수정 시각

ORDER

주문 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 주문 고유 식별자
memberId Long (FK) 주문한 회원의 ID
streetAddress String 배송 받을 도로명 주소
detailAddress String 배송 받을 상세 주소
postalCode String 배송 받을 우편번호
status Enum 주문 상태 (예: 결제완료, 배송중, 배송완료 등)
createdAt DateTime 주문 생성 시각
updatedAt DateTime 주문 정보 수정 시각

ORDER_ITEM

각 주문에 포함된 개별 상품 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 주문 항목 고유 식별자
orderId Long (FK) 연관된 주문의 ID
itemId Long (FK) 주문된 상품의 ID
quantity Integer 주문 수량
priceAtPurchase Decimal 구매 시점의 상품 가격
createdAt DateTime 주문 항목 생성 시각
updatedAt DateTime 주문 항목 수정 시각

ITEM

판매되는 상품 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 상품 고유 식별자
name String 상품명
price Decimal 현재 판매 가격
description String 상품 설명
stockQuantity Integer 재고 수량
status Enum 판매 상태 (예: 판매중, 품절, 판매중지 등)
createdAt DateTime 상품 등록 시각
updatedAt DateTime 상품 정보 수정 시각

ITEM_IMAGE

상품 이미지 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 이미지 고유 식별자
itemId Long (FK) 연관된 상품의 ID
imageUrl String 이미지 URL
displayOrder Integer 이미지 표시 순서
createdAt DateTime 이미지 등록 시각
updatedAt DateTime 이미지 정보 수정 시각

CATEGORY

상품 카테고리 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 카테고리 고유 식별자
parentId Long (FK) 상위 카테고리의 ID (자기 참조)
name String 카테고리명
depth Integer 카테고리 깊이
createdAt DateTime 카테고리 생성 시각
updatedAt DateTime 카테고리 정보 수정 시각

ITEM_CATEGORY

ITEM과 CATEGORY 간의 다대다 관계를 표현하는 중간 테이블

필드 타입 설명
itemId Long (FK) 상품의 ID
categoryId Long (FK) 카테고리의 ID
createdAt DateTime 관계 생성 시각

REVIEW

상품에 대한 리뷰 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 리뷰 고유 식별자
orderItemId Long (FK) 연관된 주문 항목의 ID
memberId Long (FK) 리뷰를 작성한 회원의 ID
score Decimal 평점
content String 리뷰 내용
createdAt DateTime 리뷰 작성 시각
updatedAt DateTime 리뷰 수정 시각

PAYMENT

주문에 대한 결제 정보를 저장하는 테이블

필드 타입 설명
id Long (PK) 결제 고유 식별자
orderId Long (FK) 연관된 주문의 ID
amount Decimal 결제 금액
method Enum 결제 방법 (예: 신용카드, 계좌이체 등)
status Enum 결제 상태 (예: 대기중, 완료, 실패, 환불 등)
createdAt DateTime 결제 생성 시각
updatedAt DateTime 결제 정보 수정 시각

📚 ERD 관계 설명

엔티티 1 관계 엔티티 2 설명
MEMBER 1:N ORDER 한 회원은 여러 주문을 할 수 있음
ORDER 1:N ORDER_ITEM 하나의 주문은 여러 주문 항목을 포함할 수 있음
ITEM 1:N ORDER_ITEM 하나의 상품은 여러 주문 항목에 포함될 수 있음
ITEM 1:N ITEM_IMAGE 하나의 상품은 여러 이미지를 가질 수 있음
ITEM M:N CATEGORY 하나의 상품은 여러 카테고리에 속할 수 있고, 하나의 카테고리는 여러 상품을 포함할 수 있음 (ITEM_CATEGORY 중간 테이블 사용)
CATEGORY 1:N CATEGORY 카테고리는 계층 구조를 가질 수 있음 (자기 참조)
ORDER_ITEM 1:1 REVIEW 하나의 주문 항목에 대해 하나의 리뷰를 작성할 수 있음
MEMBER 1:N REVIEW 한 회원은 여러 리뷰를 작성할 수 있음
ORDER 1:1 PAYMENT 하나의 주문에 대해 하나의 결제 정보가 존재함

🚚... 커머스 프로젝트

이너서클 1기

🧑🏼‍🎨공통

🧑🏻‍💻백엔드

👨🏻‍🏫멘토링 일지


커머스 5&6 백엔드팀 스토리

이너서클 MVP 발표회 발표자: $\small{\color{#5ad7b7}@이호준}$
이너서클 최종 발표회 발표자: $\small{\color{#5ad7b7}@이재훈}$

Clone this wiki locally