ERD가 변경되었다. 내가 없는 사이 팀원이 ERD를 다시 구상하였다고한다.
우선, 우리가 초기 구성한 ERD를 살펴보자.
우리가 이 ERD를 구상하면서 가장 고민이 되었던 부분이 바로 old_XX 엔티티이다.
old_XX 엔티티를 만든 이유는 사용자에게 과거 사진 교환 목록을 제공하기 위함이다. sending과 matching에 과거 사진 교환이 성공한 이력을 저장하고자 하였지만 테이블이 누적되는 것도, status를 갖고 있어야하는 것도 조금 걸렸다.
그래서 완료된 데이터를 저장하는 테이블과 진행 중인 테이블을 분리하였는데..
위와 같은 erd에서는 user_id가 주어졌을 때, 사진 교환 이력을 불러오는데 다음과 같은 복잡한 과정을 거친다.
- user_id 기반으로 old_sending_id를 찾는다.
- old_sending_id를 기반으로 old_matching 테이블에서 데이터들을 찾아낸다.
- user가 받은 old_sending_id를 기반으로 old_sending에서 '받은 사진'을 찾아낸다.
이 과정은 매우 번거롭다.
그러던 중 팀원의 놀라운 아이디어로 ERD가 변경된다. 그것은 우리의 서비스가 1:1 대화기록과 유사하다는 것이다.
카카오톡을 예를 들어도, 나라는 id를 기반으로 대화기록을 불러온다. 이럴 때 사용되는 방식을 찾아보았고 그 점을 참고하여 아래처럼 바꾸었다.
Matched 테이블을 이용한다. 여기에서 matched_id는 사진을 교환한 2 사람은 같은 번호를 부여받는다. 카카오톡도 내가 A라는 사람과 연락을 주고받는다면 그러한 내역을 불러오기 위해 나와 A의 대화기록에 같은 room_id를 부여하는 방식으로 이용한다고 한다.
이렇게 변경된다면 user_id 기반으로 다음과 같은 과정을 통해 user의 사진 교환 기록을 불러올 수 있다.
- user_id를 기반으로 Matched 테이블에서의 user_id가 동일한 데이터들을 불러온다.
- 본인의 user_id를 제외한 다른 데이터 중에서 같은 matched_id를 찾아온다.
이렇게 간단한 방식으로 나의 교환 정보를 불러올 수 있는 것이다.
이제 이 변경된 ERD를 통해서 다시 엔티티를 설계해봐야겠다.
'Project > Random Photo Matcher' 카테고리의 다른 글
[RPM] 프로젝트 생성 (1) | 2024.04.08 |
---|---|
[RPM] ERD 구상하기 (0) | 2024.04.07 |
[RPM] 프로젝트 개요 (0) | 2024.04.07 |