안녕하세요.
대용량 테이블이 될 것 같은 느낌이 드는 기능이 있어서 글을 올리게 되었습니다.
바로 본론으로 들어가겠습니다!
저희는 건물을 관리해주는 서비스를 운영하고 있습니다.
건물 수를 추려내보면 5천 건이 조금 넘습니다.
만들어야 할 기능으로써는,
1. 모든 건물의 입주율(방이 20개 인데, 실제로 계약되어 있는 방은 15개 -> 0.75%)을 날짜 기준으로 웹 상에서 표시
예시) 11월1일은 0.75%, 11월2일은 0.75%, 11월3일은 0.8%...
2. 특정 건물을 선택할 수 있어야 한다.
예시) 초기 설정은 모든 건물을 보여주나, 셀렉트 박스로 A건물만 선택 가능
3. 날짜를 기간으로 선택할 수 있어야 한다.
예시) 초기 설정은 오늘 날짜의 달을 보여주고, 클라이언트가 2018-10-01 ~ 2018-11-26 으로 설정할 수 있습니다.
해당 기간의 입주율을 날짜 단위로 모두 보여주고, 총 평균(56일간의 입주율 평균치)을 보여준다.
CREATE TABLE IF NOT EXISTS `mt_room_occupancy_rate` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '[ID]', `date` DATE NOT NULL COMMENT '[날짜]', `occupancy_count` INT UNSIGNED NOT NULL COMMENT '[입주방수]', `total_count` INT UNSIGNED NOT NULL COMMENT '[총방수]', `mt_property_id` INT UNSIGNED NOT NULL COMMENT '[건물ID]', PRIMARY KEY (`id`), INDEX `fk_mt_room_occupancy_rate_mt_property1_idx` (`mt_property_id` ASC), INDEX `fk_mt_room_occupancy_rate_mt_property2_idx` (`mt_property_id` ASC, `date` ASC), CONSTRAINT `fk_mt_room_occupancy_rate_mt_property1` FOREIGN KEY (`mt_property_id`) REFERENCES `mt_property` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE) ENGINE = InnoDB;
일단 이런 식으로 만들었는 데, 더 좋은 방법이나 조언이 있으시면 부탁드리겠습니다.