<호텔 예약시 잔여 Room 개수 최신화 >
CASE 1
# Room예약 기간 (01.26 ~ 01.29)로 예약한다고 가정한다.
총 잔여 방 갯수 : 10개
예약 1 (01.03 ~ 01.05) : 방 3개 예약 / 잔여방 7개
예약 2 (01.07 ~ 01.09) : 방 4개 예약 / 잔여방 6개
예약 3 (01.10 ~ 01.13) : 방 8개 예약 / 잔여방 2개
-개념-
(01.26 / 01.27 / 01.28 / 01.29) 반복문을 통해서 예약 기간동안 하루 일 단위로 나누어 데이터베이스에 저장하여 관리
-초기화 방법-
각 데이터베이스에 저장된 날짜별로 조회하여 현재 사용중인 방의 총 개수를 파악해서 현재 예약 가능한 방 수를 계산한다.
- 잔여 방 개수 Counting -
예약 DB에서 해당 날짜 예약건을 모두 조회 후 더하면 끝
-관리-
관리 측면에서도 필드에 예약번호를 추가해서 기간으로 예약했을 때 기간으로 묶음조회도 가능하고, 일별 조회 관리도 가능하게 된다.
CASE 2
# 위와 동일하게 Room예약 기간 (01.26 ~ 01.29)로 예약한다고 가정한다.
총 잔여 방 갯수 : 10개
예약 1 (01.03 ~ 01.05) : 방 3개 예약 / 잔여방 7개
예약 2 (01.07 ~ 01.09) : 방 4개 예약 / 잔여방 6개
예약 3 (01.10 ~ 01.13) : 방 8개 예약 / 잔여방 2개
- 방법 -
예약은 기간으로 저장한다. 오늘 날짜가 checkIn 날짜와 동일하면 방 개수를 차감하고 오늘 날짜가 checkOut 날짜가 되면 방 갯수를 초기화해서 방 개수를 관리. (단점으로는 checkIn 날짜가 되어야 방 갯수가 줄어들 기 때문에 해당 날짜가 되기 전 미리 파악할 수 없는 헛점이 발생한다. 보완할 수 있는 아이디어가 필요)
방 조회시 위 방법 수행
- 잔여 방 개수 Counting -
Query를 사용해서 내 예약 범위 내에 다른 예약을 조회하고 Counting해서 계산했으나, Query문 자체로도 굉장히 복잡하고 로직을 구성하는데 이슈가 많이 발생했다. (원하는대로 계산이 어려움)
-장점-
오늘 날짜를 기준으로 해서 CheckOut날짜보다 이후가 될 경우 RoomCount를 다시 초기화 시켜준다는 개념이 좋다.
따라서 우리는 Case 1 방식으로 선택했다.
예약 관리 측면이나 논리가 명확하다고 판단했다. 다만 아쉬운 것은 예약기간을 하나로 저장할 수 있었던 것을 일 단위로 나누어 저장한다는 측면때문에 데이터가 방대해진다는 단점이 있는데, 사실 이 부분도 숙소 하루 수용량이 기하급수적으로 늘어나는 것이 아니라 정해져있기 때문에 통제가 가능한 범위 내에 있기 때문에 단점이라고 보기는 어려울 것 같다.
'개발 일지 > 개인 회고' 카테고리의 다른 글
[Main Project] @Convert : booleanToString (2) | 2022.09.29 |
---|---|
Code States - MainProject 중간 회고록 (3) | 2022.09.27 |
[Main Project] 코드 작동 오류 ( 해결 ~ ) (7) | 2022.09.22 |
[Main Project] 중요한 정보 (1) (4) | 2022.09.21 |
[Main Project] ERD 구조 (3) | 2022.09.13 |