담당 일정 배치에 관하여
처음 일정 관리 프로그램을 설계할 때, "개인 일정 관리"에 초점을 맞춰 설계한 것이 문제점으로 떠올랐다. 이로 인해 팀 일정 관리 또는 여러 사용자가 같은 일정을 관리하는 시나리오를 제대로 고려하지 않았을 가능성이 있었다. 따라서, 엔티티 관계와 데이터 모델링에서 개인 일정 관리와 팀 일정 관리의 차이점을 반영할 필요가 있다.
문제점의 본질 인식
일정 작성 유저가 담당 유저들을 배치할 수 있는 기능이 구현되었는가?
라는 평가표의 일부를 보았기에 여기서 다대다 관계에 관해서 떠올릴 수 있었다.
기존의 데이터 모델링과 엔티티 관계가 1:1 또는 단순한 1관계를 기반으로 하고 있을 가능성이 있다. 하지만 팀 기반의 일정 관리에서는 N관계가 주로 발생하며, 각 유저의 역할에 따라 접근 권한 및 역할 분리가 중요해진다.
그렇다면, 관계를 재설계할 필요가 있다.
문제 해결 접근 방법
N:M 관계 형성
- 일정(Todo)과 유저(User) 간의 관계를 확장해야 한다. 이를 위해 User와 Todo 간에 N관계를 설정하고, 이를 매핑하는 중간 테이블 역할의 UserTodo를 설계하는 방식으로 접근했다.
유저의 역할(Role) 정의
- memberId 라는 것을 추가해서 이 글의 주인이 누구인지를 명시 했다.
엔티티 구조 수정
- 기존의 개인 일정 관리 중심의 구조를 N관계를 반영한 구조로 변경해야 한다.
문제 해결 이후 개선된 일정 관리 앱
N
관계를 통한 유연한 배정
- User와 Todo가 N관계로 설정되어 있으며, 이를 통해 하나의 일정에 여러 명의 유저를 배정할 수 있고, 동시에 한 유저가 여러 일정을 담당할 수 있다.
일정 관리에서의 성능 문제 해결
- 지연 로딩(LAZY)과 즉시 로딩(EAGER)의 설정을 다시 검토하였다.