티스토리 뷰

회원 테이블의 특징 및 설계 결정 요소

 

거의 모든 서비스에서 참조하는 테이블이기에 READ 작업이 많아 불필요한 컬럼의 읽기가 일어나면 좋지 않을 수 있다.

그렇기에 1:1 매칭되는 컬럼이 있더라도, 정규화를 해서 분리하는 것이 좋다고 판단했다.

기본 테이블 구성에는 회원 정보, 회원 인증 정보등이 필요하지만 좀 더 나은 회원 데이터 관리를 위해서 필요한 정보들은 로그 데이터 및 휴면 계정 데이터 등이 있다.


테이블 구성회원 정보

  • 회원
  • 인증
  • 로그

스키마 단위로 나누면 보안 그룹 설정 관리와 MSA 적인 측면을 고려할 수 있다. 회원 인증 정보를 따로 두는 이유는 최근에는 엄청 다양한 로그인 방식이 있기 때문에 따로 둬서 관리하는 방법이 더 효율적이라고 생각했다. 아래는 각 스키마 별 구성이다.


회원 (MEMBER)

member.user

▷ 회원 식별 정보

  • user_id
  • user_name
  • auth_type - 인증 방식, 예: 내부 인증(패스워드), 외부 인증 공급자

member.profile

▷ 회원 프로필 정보 - 외부에서 확인할 수 있는 정보

  • profile_id
  • user_id
  • name
  • image_url
  • created_at
  • updated_at
  • 그 외 nickname, status_message, status 등 서비스에 따라서 추가

member.detail

▷ 회원 개인 정보 - 기본적으로 private한 정보들. 결제나 배송 정보로 사용될 수 있다.

  • detail_id
  • user_id
  • gender
  • birthday
  • phone_number
  • address

member.subscription

▷ 회원 구독 정보 - 구독형 상품 결제 시 생성. 배치 같은 일괄처리 기능에 사용될 수 있다.

  • subscription_id
  • user_id
  • subscription_plan
  • purchased_at
  • expired_date

member.device

▷ 로그인한 기기 정보 - 기기 분석 및 각종 기능(기기 제한, 보안 강화, 크롤링 방지 등등)을 위해 사용할 수 있다.

  • device_id
  • user_id
  • in_use
  • registed_id
  • uuid
  • model
  • os_type
  • os_versionc

 

인증 (AUTH)

auth.social_login

▷ 외부 플랫폼 인증 공급자를 통한 인증에 필요한 정보

  • social_login_id
  • user_id
  • provider_code - 예: google, naver, kakao
  • external_id - 해당 플랫폼에서의 고유 아이디값
  • (refresh_token) - 리프레쉬 토큰을 db에 저장시
  • updated_at

auth.password

▷ 일반 패스워드 로그인 인증에 필요한 정보. username(id)과 매칭하여 인증한다.

  • password_id
  • user_id
  • salt
  • password
  • updated_at

auth.cidi

▷ 통합 인증 시스템 인증에 관한 정보. 아이핀이나 휴대폰 인증같은 업체로부터 받는 값

  • cidi_id
  • user_id
  • ci
  • di

 

로그(LOG)

log.user_activity

▷ 유저의 활동 기록

  • user_activity_id
  • user_id
  • table_name - 변경된 레코드의 테이블명
  • row_id - 변경된 레코드의 식별자
  • activity_code - 활동 유형에 대한 코드 (예: CREATE, READ, UPDATE, DELETE)
  • as_is - 해당 레코드가 업데이트 되기 이전의 값
  • to_be - 해당 레코드가 업데이트 된 이후의 값
  • updated_by - 변경자
  • created_at

log.login

▷ 유저의 로그인 기록 - fraudalent한 로그인 패턴 분석을 위한 데이터

  • login_id
  • user_id
  • status_code
  • device_id
  • ip
  • fail_count
  • fail_reason
  • created_at

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함