O0oO0Oo / netty-reservation-service

트랜잭션, 동시성을 공부하기 위한 토이 프로젝트입니다.
0 stars 0 forks source link

docs: erd design #1

Closed O0oO0Oo closed 3 months ago

O0oO0Oo commented 3 months ago

이슈 개요

Netty 서버의 구현, db 에서 동시성 처리 학습을 위한 프로젝트이므로, 최소한의 기능의 erd 설계

  1. Store (호텔, 슈퍼 등) 가 ReseravableItem(객실, 물품) 을 수량과 함께 등록한다.
  2. User 들은 ReseravableItem을 보고 동시에 ReseravableItem 예약을 누른다.
  3. 예약이 완료되면 Reservation 에 예약 기록이 남는다.

재현 단계

  1. ERD 설계

예상 동작

  1. 계획
    • User
    • ReseravableItem -> 유저들이 요청하는 부분
    • Store -> item 등록
    • Reservation -> 확정 예약

실제 동작

초안

image


CREATE TABLE `user`(
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

CREATE TABLE store(
    store_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    `type` VARCHAR(255) NOT NULL
);

CREATE TABLE reservable_item(
    item_id INT AUTO_INCREMENT PRIMARY KEY,
    store_id INT,
    name VARCHAR(255) NOT NULL,
    quantity INT NOT NULL,
    max_quantity_per_user INT NOT NULL,
    FOREIGN KEY (store_id) REFERENCES store(store_id)
);

CREATE TABLE reservation_record(
    reservation_id INT AUTO_INCREMENT PRIMARY KEY,
    item_id INT,
    store_id INT,
    user_id INT,
    reserved_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quantity INT NOT NULL,
    `status` VARCHAR(255) NOT NULL,
    FOREIGN KEY (item_id) REFERENCES reservable_item(item_id),
    FOREIGN KEY (store_id) REFERENCES store(store_id),
    FOREIGN KEY (user_id) REFERENCES `user`(user_id)
);

1차 수정

image

추가 정보