Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

사용자 - 그룹 - 그룹사용자 관계 변경 #2

Open
mybloom opened this issue Apr 17, 2023 · 0 comments
Open

사용자 - 그룹 - 그룹사용자 관계 변경 #2

mybloom opened this issue Apr 17, 2023 · 0 comments

Comments

@mybloom
Copy link
Owner

mybloom commented Apr 17, 2023

Describe

✔ AS-IS : 그룹 - 사용자 - 그룹사용자 - 그룹 (N:1 - 1:M - M:1)의 관계로 인한 문제점 발생

  • 그룹과 그룹사용자 테이블을 이용해 자신이 속한 그룹을 제대로 조회해올 수 없는 문제.
    • 그룹에 있는 host_id(그룹장 사용자 정보)를 그룹사용자 테이블과 조인할 때 조건 부재
  • 그룹을 이용하는 역할에 따라 즉, 그룹장인지 그룹원인지의 정보가 두 개의 테이블로 분리되어 있어 나타나는 문제
  • 그룹에 그룹장 정보를 두는 것에 대한 이점(비정규화)
    • 그룹방 리스트에서 로그인한 사용자가 어떤 그룹의 방장인지 정보를 알 수 있다.
    • 하지만 이 정보도 그룹리스트에서 가지고 있다 하더라도 푸쉬 알림 리스트에서 방장인지 확인해야 한다. api의 parameter로만 방장 여부를 신뢰하면 안되기 때문이다.
    • 그러므로 group에서 그룹장 사용자 아이디는 굳이 가지고 있을 필요가 없는 정보라 판단.
  • 이를 해결하기 위해 , 그룹사용자에 그룹장 아이디도 추가한다. 하지만 해당 테이블에서는 그룹원인지 그룹장인지 나타내지 않는다.
    • 이와 같은 방법도 문제가 있는 것은 아니지만 정규화 측면에서는 올바른 데이터 분리는 아니다. 그로 인해 비즈니스 로직에 따라 접근해야 하는 테이블도 달라진다.
      Group-GroupUser_asis

✔ TO-BE : 사용자 - 그룹사용자 - 그룹 (1:N - M:1)의 관계로 변경

  • 그룹사용자 테이블로 그룹에 속한 사용자 문제 없이 조회.
  • 그룹을 이용하는 역할에 따라 사용자 정보가 두 개의 테이블로 분리되어 있던 부분을 그룹사용자 테이블 하나에 표현해 그룹에 속한 사용자 조회 문제 해결

Group-GroupUser_tobe

Work

No response

@mybloom mybloom changed the title 리팩토링 사용자 - 그룹 - 그룹사용자 관계 변경 May 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant