-
Notifications
You must be signed in to change notification settings - Fork 4
[BE] ERD 문서화 Ver.1
장현호 Hyunho Jang edited this page Sep 8, 2024
·
1 revision
- ADDRESS 엔티티 분리
- ITEM_IMAGE 엔티티 추가
- ITEM_CATEGORY 중간 테이블 추가
- CATEGORY에 자기 참조 관계 추가
- ORDER_ITEM에 priceAtPurchase 필드 추가
- REVIEW에 memberId 필드 추가
- PAYMENT에 status 필드 추가
- ADDRESS 엔티티 삭제
- MEMBER 엔티티 수정
- streetAddress, city, state, postalCode, country 필드 추가 (회원의 기본 주소 정보)
- ORDER 엔티티 수정
- streetAddress, city, state, postalCode, country 필드 추가 (주문의 배송 주소 정보)
- (추가) 주소정보 간소화
- streetAddress, detailAddress, postalCode 필드만 유지
이커머스 서비스, 관리자 공통 사용
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
}
사용자 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 회원 고유 식별자 |
String (UK) | 로그인에 사용되는 이메일 주소 | |
password | String | 암호화된 비밀번호 |
name | String | 회원 이름 |
phone | String | 전화번호 |
streetAddress | String | 도로명 주소 |
detailAddress | String | 상세 주소 (아파트 동호수 등) |
postalCode | String | 우편번호 |
lastLoginDate | DateTime | 마지막 로그인 일시 |
deletedAt | DateTime | 계정 삭제 시각 (null이면 활성 상태) |
createdAt | DateTime | 계정 생성 시각 |
updatedAt | DateTime | 정보 수정 시각 |
주문 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 주문 고유 식별자 |
memberId | Long (FK) | 주문한 회원의 ID |
streetAddress | String | 배송 받을 도로명 주소 |
detailAddress | String | 배송 받을 상세 주소 |
postalCode | String | 배송 받을 우편번호 |
status | Enum | 주문 상태 (예: 결제완료, 배송중, 배송완료 등) |
createdAt | DateTime | 주문 생성 시각 |
updatedAt | DateTime | 주문 정보 수정 시각 |
각 주문에 포함된 개별 상품 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 주문 항목 고유 식별자 |
orderId | Long (FK) | 연관된 주문의 ID |
itemId | Long (FK) | 주문된 상품의 ID |
quantity | Integer | 주문 수량 |
priceAtPurchase | Decimal | 구매 시점의 상품 가격 |
createdAt | DateTime | 주문 항목 생성 시각 |
updatedAt | DateTime | 주문 항목 수정 시각 |
판매되는 상품 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 상품 고유 식별자 |
name | String | 상품명 |
price | Decimal | 현재 판매 가격 |
description | String | 상품 설명 |
stockQuantity | Integer | 재고 수량 |
status | Enum | 판매 상태 (예: 판매중, 품절, 판매중지 등) |
createdAt | DateTime | 상품 등록 시각 |
updatedAt | DateTime | 상품 정보 수정 시각 |
상품 이미지 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 이미지 고유 식별자 |
itemId | Long (FK) | 연관된 상품의 ID |
imageUrl | String | 이미지 URL |
displayOrder | Integer | 이미지 표시 순서 |
createdAt | DateTime | 이미지 등록 시각 |
updatedAt | DateTime | 이미지 정보 수정 시각 |
상품 카테고리 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 카테고리 고유 식별자 |
parentId | Long (FK) | 상위 카테고리의 ID (자기 참조) |
name | String | 카테고리명 |
depth | Integer | 카테고리 깊이 |
createdAt | DateTime | 카테고리 생성 시각 |
updatedAt | DateTime | 카테고리 정보 수정 시각 |
ITEM과 CATEGORY 간의 다대다 관계를 표현하는 중간 테이블
필드 | 타입 | 설명 |
---|---|---|
itemId | Long (FK) | 상품의 ID |
categoryId | Long (FK) | 카테고리의 ID |
createdAt | DateTime | 관계 생성 시각 |
상품에 대한 리뷰 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 리뷰 고유 식별자 |
orderItemId | Long (FK) | 연관된 주문 항목의 ID |
memberId | Long (FK) | 리뷰를 작성한 회원의 ID |
score | Decimal | 평점 |
content | String | 리뷰 내용 |
createdAt | DateTime | 리뷰 작성 시각 |
updatedAt | DateTime | 리뷰 수정 시각 |
주문에 대한 결제 정보를 저장하는 테이블
필드 | 타입 | 설명 |
---|---|---|
id | Long (PK) | 결제 고유 식별자 |
orderId | Long (FK) | 연관된 주문의 ID |
amount | Decimal | 결제 금액 |
method | Enum | 결제 방법 (예: 신용카드, 계좌이체 등) |
status | Enum | 결제 상태 (예: 대기중, 완료, 실패, 환불 등) |
createdAt | DateTime | 결제 생성 시각 |
updatedAt | DateTime | 결제 정보 수정 시각 |
엔티티 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 | 하나의 주문에 대해 하나의 결제 정보가 존재함 |
Copyright © 2024 FC-InnerCircle 1th commerce project 5&6 BackEnd team 🚚
이너서클 1기
이너서클 MVP 발표회 발표자:
$\small{\color{#5ad7b7}@이호준}$
이너서클 최종 발표회 발표자:$\small{\color{#5ad7b7}@이재훈}$