이번 팀 프로젝트는 개인 + 그룹 스터디 플래너이다.
설명 :
1. 개인이 게시물을 올릴 수 있고 그 게시물에는 원하는 목표를 적고 스톱워치/타이머 기능을 활용하여 스터디에 집중한다.
2. 공부 시간은 마이페이지엣서 누적시간을 조회할 수 있다.
3. 게시물은 메인 페이지에서 카테고리별로 리스트화되고 누구나 조회가 가능하다.
4. 개인은 관심사가 비슷한 유저를 검색/조회할 수 있고 유저를 그룹에 초대할 수 있다.
5. 그룹 상세 페이지에는 그룹의 공동 목표를 적고 누적 공부시간이 높은 순으로 유저순위가 표시된다.
꽤나 복잡한 연관관계를 가졌기 때문에 ERD를 설계하는 데에 시간이 오래 걸렸다.
특별히 고민이 필요한 연관관계는 스톱워치/타이머와 누적시간의 테이블을 어떻게 설정하는 지였다.
1. 스톱워치/타이머 기능은 개인스터디(게시물)에만 사용이 되기 때문에 1:1의 연관관계가 될 것이라는 생각이 들었다. 그러나 이 부분은 팀원들과 조율이 필요한 듯하여 추후에 팀회의를 다시 가질 예정이다.(과연 일대다인가 일대일인가)
2. 누적시간은 마이페이지와 그룹 스터디 상세 페이지에서 조회만 되어야 하므로 당연히 사용자 Entity에 필드로 들어갈 것이라고 생각하였다. 그런데 생각해 보니 누적시간은 스톱워치/타이머의 시간이 save 되면서 계속해서 업데이트가 필요한 부분이므로 엔티티가 자주 업데이트가 되는 것은 기능적으로 효율적이지 않은 설계라는 판단이 되었다.(feat. 튜터님)
따라서 사용자 테이블에서 join table로 설계하여 누적시간 테이블만 업데이트가 되는 방향으로 설계를 결정하였다.
프로젝트를 시작하기 전, 제일 중요한 것은 ERD 설계가 아닐까 싶다. 그 이유는 테이블 간의 연관관계와 필요/불필요한 테이블의 유무 설계에 따라 Restful 한 API를 만들 수 있느냐 아니냐의 결정될 것이라 생각되었기 때문이다.
추후에 시간이 되면 ERD에 대한 강의/유튜브로 공부를 해야겠다.
'미니 팀프로젝트' 카테고리의 다른 글
팀프로젝트 OKOWAN 1일차 : Board API 생성 (0) | 2023.08.08 |
---|---|
팀프로젝트 OKOWAN (0) | 2023.08.08 |
3조 동물농장 KPT 회고 (0) | 2023.05.19 |
미니 팀프로젝트 : 팀 소개 웹페이지 4일차 (0) | 2023.05.19 |
미니 팀프로젝트 : 팀 소개 웹페이지 3일차 (0) | 2023.05.19 |