// 회원
Table p_user {
id bigint [pk]
username varchar(100) [not null, unique]
nickname varchar(100)
email varchar(255) [not null, unique]
password varchar(255)
role_id varchar(50) [ref: > p_role_type.id]
is_public boolean
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 권한
Table p_role_type {
id varchar(50) [pk] // UUID
name varchar(50) [not null, unique]
description TEXT
}
// 지역
Table p_area {
id varchar(50) [pk] // UUID
// 시
city varchar(50)
// 구
district varchar(50)
// 로
street varchar(50)
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 가게
Table p_store {
id varchar(50) [pk] // UUID
name varchar(100)
// area
area_id varchar(100) [ref: > p_area.id] // 시울시 ~ xx 로
// 상세주소
detail_address varchar(200) // xx아파트 상가 1층 105호
// 사장 정보
owner_name varchar(100)
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// AI 요청 기록
Table p_ai_request {
id varchar(50) [pk] // UUID
// 질문
question TEXT [not null]
// 응답
answer TEXT
// 가게 정보
store_id varchar(50)
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 메뉴
Table p_menu {
id varchar(50) [pk] // UUID
// 메뉴 이름
name varchar(100) [not null]
// 메뉴 설명
description TEXT
// 가격
price int
// 노출상태 (판매중, 하루품절, 숨김)
expose_status varchar(30) [not null, default: "ONSALE"]
// 가게 정보
store_id varchar(50) [not null]
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
Table p_image {
id varchar(50) [pk] // UUID
// 노출 순서
sequence int
s3_url varchar(200)
file_name varchar(100) [not null]
// menu
menu_id varchar(50) [ref: > p_menu.id]
// option
menu_option_id varchar(50) [ref: > p_menu_option.id]
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 옵션
Table p_menu_option {
id varchar(50) [pk] // UUID
// 옵션 이름
name varchar(100) [not null]
// 옵션 설명
description TEXT
// 옵션 가격
price int
// 노출상태 (판매중, 하루품절, 숨김)
expose_status varchar(30) [not null, default: "ONSALE"]
// 메뉴
menu_id varchar(50) [not null, ref: > p_menu.id]
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// menuOrder : 매핑테이블 + 수량
Table p_menu_order{
id bigint [pk, increment]
// 메뉴
menu_id varchar(50)
menu_name varchar(100)
count int
price int
// 주문
order_id varchar(50) [ref: > p_order.id]
}
// menuOptionOrder : 매핑테이블 + 수량
Table p_menu_option_menu_order {
id bigint [pk, increment]
menu_option_id varchar(50)
menu_option_price int
menu_option_name varchar(100)
menu_option_count int
menu_order_id bigint [ref: > p_menu_order.id]
}
// 주문
Table p_order {
id varchar(50) [pk] // UUID
store_id varchar(50)
store_name varchar(100) // 가게 이름
// 주문 상태
order_status varchar(50) [not null, default: "WAIT"]
// 전체 주문 금액 : 반정규화
total_price int
// 주문자
customer_name varchar(50)
// 주문 유형 : 배송 or 현장
order_type varchar(50) [not null, default: "INSTORE"]
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 배달 (배송지정보)
Table p_delivery {
id varchar(50) [pk] // UUID
// 주문
order_id varchar(50)
// 배송지
address varchar(100)
// 배송 상태 : START, END
status varchar(50) [not null]
customer_name varchar(50)
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 결제
Table p_payment {
id varchar(50) [pk] // UUID
// 주문
order_id varchar(50)
// 결제 주체
payment_agent_id varchar(50) [ref: > p_payment_agent.id]
// 결제사측 결제 ID
payment_pid varchar(200) [not null, unique]
// 결제 상태 : SUCCESS, CANCEL
status varchar(20)
customer_name varchar(50)
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
Table p_payment_agent {
id varchar(50) [pk] // UUID
name varchar(100) [not null, unique]
}
// 카테고리
Table p_category {
id varchar(50) [pk] // UUID
name varchar(100) [not null, unique]
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
// 매핑 테이블
Table p_category_store {
id bigint [pk, increment]
category_id varchar(50) [ref: > p_category.id]
store_id varchar(50) [ref: > p_store.id]
}
// 리뷰
Table p_review {
id varchar(50) [pk]
// 작성자 이름
writer_id bigint
store_id varchar(50)
store_name varchar(100)
// 주문 정보
order_id varchar(50)
// 별점
rate int
// 리뷰 내용
contents text
created_at timestamp
created_by bigint
updated_at timestamp
updated_by bigint
deleted_at timestamp
deleted_by bigint
}
수정 사항