작성
·
38
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요! 혹시 다대다의 경우는 중간테이블을 두어 푸는 것이 실무에서 필수적이라 했는데, 일대 다의 경우에도 비즈니스 로직 분리:
중간 테이블을 통해 비즈니스 로직(보상 분배, 순위 계산 등)을 별도로 관리함으로써, 엔티티 간의 복잡성을 줄입니다.
데이터의 독립적 관리:
과거 랭킹 기록, 보상 내역 등 변경하지 않아야 할 데이터를 독립적으로 저장하고 관리할 수 있습니다. 이런 이유로 중간테이블을 두기도 하나요? 예를 들어 사용자와 랭크 관계가 일대 다인 상황에서(사용자는 한 랭크만 참가 가능) 과거 정보들을 저장하기 위해 중간테이블을 두고 거기에 전적 같은 정보를 저장하고자 하는데 이런 경우 일대 다임에도 중간테이블을 놔두어 관리해도 되나요?
답변 1
0
안녕하세요. 염경호님, 공식 서포터즈 코즈위버입니다.
'사용자가 한 랭크만' 참여 가능하다는 의미를 정확히 알 수 없어 임의로 생각해보았는데요.
주요 엔티티는 '회원'과 '게임'으로 보이며 파생된 엔티티가 '랭크'(혹은 '매칭데이터'나 '게임결과'가 적당한 이름 같습니다)로 보입니다.
게임이 'LOL' 같은 형태로 운영되는 게임이라고 생각하겠습니다.
회원과 게임 엔티티의 관계를 생각해보면, 회원은 게임에 지속적으로 참가할 수 있습니다. 또 한 판의 게임에 여러 회원이 참가할 수 있으니 둘의 관계는 다대다 입니다.
게임이 시작되면 게임 인스턴스가 하나 생성되어야 하며 이는 고유키를 가질 것입니다. 그리고 이 게임에 참여한 회원들이 매핑이 되며 '랭크' 엔티티에 기록 되겠지요.
게임이 종료되면 최종 스코어를 '랭크' 엔티티에 업데이트 하겠지요. 그러면 추후 회원의 게임별 결과를 지속해서 조회할 수 있습니다.
감사합니다.