강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

윤중진님의 프로필 이미지
윤중진

작성한 질문수

반복 일정 구현 관련

작성

·

1.5K

0

"종료일이 없는" 무한 반복 일정 구현하려고 하는데, 테이블 설계 어떻게 하면 좋을지 조언 얻고 싶습니다!

예를 들면, "2023년 06월 03일" 기점으로 "1주일" 마다 "종료일 없이" 반복 일정을 세운다고 할 때, DB를 어떻게 짜야할 지 잘 모르겠습니다.

제가 생각했던 방법은,

 

table 일정

일정id BIGINT

일정내용 VARCHAR

일정시작일시 DATETIME

반복 CHAR ( D: 매일, W: 매주, M: 매달, Y: 매년)

 

이런 식으로 테이블을 설계해서 만약 06월 03일의 일정을 조회할 때,

일정 table의 모든 레코드를 조회해서 일정시작일시와 반복 파라미터를 분석해 06월 03일에 일정이 생긴다면 반환하는 식으로 구현하려고 했는데,

현실적으로 모든 일정을 조회할 때마다 table의 모든 레코드를 select하는 것은 말이 안된다고 생각합니다..

혹시 비슷한 고민 해결해보신 분 있으시면 조언 듣고싶습니다!

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

반복 일정을 구현하기 위해서는 “반복 주기”와 “시작일” 정보가 필요합니다. 이를 DB에 저장하려면 예를 들어 다음과 같은 구조로 테이블을 설계할 수 있습니다.

  1. 반복 주기 정보가 저장될 테이블
  • 일정ID
  • 반복주기 (D: 매일, W: 매주, M: 매달, Y: 매년)
  • 주기별 몇 번째 날인지(Ex. 2: 둘째주)
  • 시작일
  • 종료일 (NULL 이면 무한반복)
  1. 일정 내용이 저장될 테이블
  • 일정ID
  • 일정내용
  • 일정날짜

이렇게 구조를 설계하면 일정내용이 저장될 테이블에는 반복 일정을 분해해서 저장하고, 반복 주기 정보가 저장될 테이블에서는 해당 일정이 반복되는 주기와 시작일, 종료일을 저장할 수 있습니다. 이렇게 설계하면 조회 시에도 필요한 일정만 조회할 수 있으며, 복잡한 일정 구현도 가능합니다.

위 구조를 참고하시어 구현해보시기 바랍니다. 감사합니다.

윤중진님의 프로필 이미지
윤중진

작성한 질문수

질문하기