DB 구성
Last updated
Was this helpful?
Last updated
Was this helpful?
우리는 1차 개발 때는 DB 관리를 직접 JSON으로 만들어서 저장을 했었지만 관리하기 어렵고, 필요시 조회하기가 번거로워 MySQL로 DB를 전환했다. MySQL을 사용하면 칼럼별 조회가 빠르고 한눈에 볼 수 있다는 장점이 있어 관리할 DB가 많은 우리 서비스에 적합하다고 판정했다. 다만, 데이터를 어떤 기준으로 구별할지가 상당한 고민이 필요했는데, 그래서 우리는 개발 전 DB 구조를 정의하고 그 틀에 맞춰서 데이터 저장을 하기로 했다.
먼저 주문 내역들의 정보가 담기는 order_buffer 테이블을 보면 위의 사진과 같다. 가장 첫 컬럼에 있는 order_code는 데이터가 추가되면 자동으로 increment 되며 따라서 order_code는 고유의 값을 가지게 된다. 다음으로 state는 주문의 상태를 나타내는 값으로 0은 신규 접수된 주문, 1은 매장에서 주문을 접수한 주문, 2는 조리가 완료된 주문, 3은 수령 완료된 주문, 4는 사용자가 취소한 주문, 5는 매장에서 거절한 주문을 나타낸다. 나머지 컬럼들은 해당 컬럼명이 뜻하는 바와 동일하여 이해하기 쉬울 것이다. 그래서 order_buffer 테이블은 저장된 주문 내역이 필요할때마다 조회하여 DB에서 쉽게 가져올 수 있게 설계했다.
다음은 일반 고객의 정보를 담고있는 customer_account 테이블이다. 일반 고객의 정보를 담기위해 아이디, 비밀번호, 이름, 휴대폰번호, 카드정보, fcm_token을 저장한다. 특히, fcm_token은 일반 고객의 디바이스에 해당하는 정보가 담겨있어서 테이블에 저장하게 되면 고객 디바이스에 알람을 보낼 때 꺼내 쓸 수 있다.
uospartner_account는 매장 점주의 정보를 담고있는 테이블이다. 해당 테이블에는 아이디, 비밀번호, 점주이름, 휴대폰번호, 회사이름, 사업자등록번호, 회사타입(“음식점”, “영화관”, “피시방”), 회사주소가 담기게된다.
restaurant_점주ID 테이블은 회사 타입이 “음식점”일 때 같이 생성되는 테이블이다. 테이블 구성에는 카테고리, 메뉴 타입(단품, 세트, 티켓), 메뉴명, 가격, 설명, 정보, 세트 메뉴에 속하는 카테고리가 있다.
pc_점주ID 테이블은 회사 타입이 “pc방”일 때 같이 생성되는 테이블로 구조는 restaurant_점주ID 테이블과 동일하다.
movie_점주ID 테이블은 회사 타입이 “영화관”일 경우 같이 생성되는 테이블로, 음식점·pc방 때와는 달리 영화관에 들어맞는 구조로 생성된다. 영화이름, 상영관, 상영시간, 좌석 가로 길이, 좌석 세로 길이로 생성이 된다.
movie_점주ID_food 테이블은 movie_점주ID 테이블이 생성될 때 같이 생성된다. 해당 테이블은 영화관에서 구매할 수 있는 음식 메뉴들의 정보를 담고 있는 테이블이다. 테이블로 구조는 restaurant_점주ID 테이블과 동일하다.
movie_점주ID_num 테이블은 영화가 추가될 때 생성되어 그 영화에 대한 좌석 정보를 담는 테이블이다. 테이블 구조는 좌석 번호, 상태 정보(0: 예약 가능한 좌석, 1: 예약된 좌석, 2: 예약 불가능한 좌석, -1: 복도), 좌석 가격으로 이루어져 있다.