generated from pricelees/issue-pr-template
236 lines
9.5 KiB
SQL
236 lines
9.5 KiB
SQL
create table if not exists region (
|
|
code varchar(10) primary key,
|
|
sido_code varchar(2) not null,
|
|
sigungu_code varchar(3) not null,
|
|
sido_name varchar(20) not null,
|
|
sigungu_name varchar(20) not null,
|
|
|
|
constraint uk_region__sido_sigungu_code unique (sido_code, sigungu_code)
|
|
);
|
|
|
|
create table if not exists store(
|
|
id bigint primary key,
|
|
name varchar(20) not null,
|
|
address varchar(100) not null,
|
|
contact varchar(50) not null,
|
|
business_reg_num varchar(12) not null,
|
|
region_code varchar(10) not null,
|
|
status varchar(20) not null,
|
|
|
|
created_at timestamp not null,
|
|
created_by bigint not null,
|
|
updated_at timestamp not null,
|
|
updated_by bigint not null,
|
|
|
|
constraint uk_store__name unique (name),
|
|
constraint uk_store__contact unique (contact),
|
|
constraint uk_store__address unique (address),
|
|
constraint uk_store__business_reg_num unique (business_reg_num),
|
|
constraint fk_store__region_code foreign key (region_code) references region (code)
|
|
);
|
|
|
|
create table if not exists users(
|
|
id bigint primary key,
|
|
name varchar(50) not null,
|
|
email varchar(255) not null,
|
|
password varchar(255) not null,
|
|
phone varchar(20) not null,
|
|
region_code varchar(10) null,
|
|
status varchar(20) not null,
|
|
created_at datetime(6) not null,
|
|
created_by bigint not null,
|
|
updated_at datetime(6) not null,
|
|
updated_by bigint not null,
|
|
|
|
constraint uk__users_email unique (email),
|
|
constraint uk__users_phone unique (phone),
|
|
constraint fk__users_region_code foreign key (region_code) references region (code)
|
|
);
|
|
|
|
create table if not exists user_status_history(
|
|
id bigint primary key,
|
|
user_id bigint not null,
|
|
status varchar(20) not null,
|
|
reason varchar(255) not null,
|
|
created_at datetime(6) not null,
|
|
created_by bigint not null,
|
|
updated_at datetime(6) not null,
|
|
updated_by bigint not null,
|
|
|
|
constraint fk__user_status_history_user_id foreign key (user_id) references users (id)
|
|
);
|
|
|
|
create table if not exists admin(
|
|
id bigint primary key,
|
|
account varchar(20) not null,
|
|
password varchar(255) not null,
|
|
name varchar(20) not null,
|
|
phone varchar(20) not null,
|
|
type varchar(20) not null,
|
|
store_id bigint,
|
|
permission_level varchar(20) not null,
|
|
created_at timestamp not null,
|
|
created_by bigint not null,
|
|
updated_at timestamp not null,
|
|
updated_by bigint not null,
|
|
|
|
constraint uk_admin__account unique (account),
|
|
constraint uk_admin__phone unique (phone),
|
|
constraint chk_admin__type check (type in ('HQ', 'STORE')),
|
|
constraint chk_admin__store_id check (
|
|
(type = 'HQ' AND store_id IS NULL) OR
|
|
(type = 'STORE' AND store_id IS NOT NULL)
|
|
),
|
|
constraint fk_admin__store_id foreign key (store_id) references store (id)
|
|
);
|
|
|
|
create table if not exists login_history(
|
|
id bigint primary key,
|
|
principal_id bigint not null,
|
|
principal_type varchar(20) not null,
|
|
success boolean not null,
|
|
ip_address varchar(45) not null,
|
|
user_agent varchar(255) not null,
|
|
created_at timestamp not null
|
|
);
|
|
|
|
create table if not exists theme (
|
|
id bigint primary key ,
|
|
name varchar(30) not null,
|
|
difficulty varchar(20) not null,
|
|
description varchar(255) not null,
|
|
thumbnail_url varchar(255) not null,
|
|
price int not null,
|
|
min_participants smallint not null,
|
|
max_participants smallint not null,
|
|
available_minutes smallint not null,
|
|
expected_minutes_from smallint not null,
|
|
expected_minutes_to smallint not null,
|
|
is_active boolean not null,
|
|
created_at timestamp not null,
|
|
created_by bigint not null,
|
|
updated_at timestamp not null,
|
|
updated_by bigint not null
|
|
);
|
|
|
|
create table if not exists schedule (
|
|
id bigint primary key,
|
|
date date not null,
|
|
time time not null,
|
|
store_id bigint not null,
|
|
theme_id bigint not null,
|
|
status varchar(30) not null,
|
|
created_at timestamp not null,
|
|
created_by bigint not null,
|
|
updated_at timestamp not null,
|
|
updated_by bigint not null,
|
|
|
|
constraint uk_schedule__store_id_date_time_theme_id unique (store_id, date, time, theme_id),
|
|
constraint fk_schedule__store_id foreign key (store_id) references store (id),
|
|
constraint fk_schedule__theme_id foreign key (theme_id) references theme (id)
|
|
);
|
|
|
|
create table if not exists reservation (
|
|
id bigint primary key,
|
|
user_id bigint not null,
|
|
schedule_id bigint not null,
|
|
reserver_name varchar(30) not null,
|
|
reserver_contact varchar(30) not null,
|
|
participant_count smallint not null,
|
|
requirement varchar(255) not null,
|
|
status varchar(30) not null,
|
|
created_at timestamp not null,
|
|
created_by bigint not null,
|
|
updated_at timestamp not null,
|
|
updated_by bigint not null,
|
|
|
|
constraint fk_reservation__user_id foreign key (user_id) references users (id),
|
|
constraint fk_reservation__schedule_id foreign key (schedule_id) references schedule (id)
|
|
);
|
|
|
|
create table if not exists canceled_reservation (
|
|
id bigint primary key,
|
|
reservation_id bigint not null,
|
|
canceled_by bigint not null,
|
|
cancel_reason varchar(50) not null,
|
|
canceled_at timestamp not null,
|
|
status varchar(30) not null,
|
|
|
|
constraint uk_canceled_reservations__reservation_id unique (reservation_id),
|
|
constraint fk_canceled_reservations__reservation_id foreign key (reservation_id) references reservation (id)
|
|
);
|
|
|
|
create table if not exists payment (
|
|
id bigint primary key,
|
|
reservation_id bigint not null,
|
|
type varchar(20) not null,
|
|
method varchar(30) not null,
|
|
payment_key varchar(255) not null unique,
|
|
order_id varchar(255) not null unique,
|
|
total_amount integer not null,
|
|
status varchar(20) not null,
|
|
requested_at timestamp not null,
|
|
approved_at timestamp not null,
|
|
|
|
constraint uk_payment__reservationId unique (reservation_id),
|
|
constraint fk_payment__reservationId foreign key (reservation_id) references reservation (id)
|
|
);
|
|
|
|
create table if not exists payment_detail(
|
|
id bigint primary key,
|
|
payment_id bigint not null unique,
|
|
supplied_amount integer not null,
|
|
vat integer not null,
|
|
|
|
constraint fk_payment_detail__paymentId foreign key (payment_id) references payment (id)
|
|
);
|
|
|
|
create table if not exists payment_bank_transfer_detail (
|
|
id bigint primary key,
|
|
bank_code varchar(10) not null,
|
|
settlement_status varchar(20) not null,
|
|
|
|
constraint fk_payment_bank_transfer_details__id foreign key (id) references payment_detail (id)
|
|
);
|
|
|
|
create table if not exists payment_card_detail (
|
|
id bigint primary key,
|
|
issuer_code varchar(10) not null,
|
|
card_type varchar(10) not null,
|
|
owner_type varchar(10) not null,
|
|
amount integer not null,
|
|
card_number varchar(20) not null,
|
|
approval_number varchar(8) not null, -- 실제로는 unique 이지만 테스트 결제 위젯에서는 항상 000000으로 동일한 값이 나옴.
|
|
installment_plan_months tinyint not null,
|
|
is_interest_free boolean not null,
|
|
easypay_provider_code varchar(20),
|
|
easypay_discount_amount integer,
|
|
|
|
constraint fk_payment_card_detail__id foreign key (id) references payment_detail (id)
|
|
);
|
|
|
|
create table if not exists payment_easypay_prepaid_detail(
|
|
id bigint primary key,
|
|
easypay_provider_code varchar(20) not null,
|
|
amount integer not null,
|
|
discount_amount integer not null,
|
|
|
|
constraint fk_payment_easypay_prepaid_detail__id foreign key (id) references payment_detail (id)
|
|
);
|
|
|
|
create table if not exists canceled_payment(
|
|
id bigint primary key,
|
|
payment_id bigint not null,
|
|
requested_at timestamp not null,
|
|
canceled_at timestamp not null,
|
|
canceled_by bigint not null,
|
|
cancel_reason varchar(255) not null,
|
|
cancel_amount integer not null,
|
|
card_discount_amount integer not null,
|
|
transfer_discount_amount integer not null,
|
|
easypay_discount_amount integer not null,
|
|
|
|
constraint uk_canceled_payment__paymentId unique (payment_id),
|
|
constraint fk_canceled_payment__paymentId foreign key (payment_id) references payment(id)
|
|
);
|