inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복

복합 키 설계

[DB설계] 탈퇴 유저의 구독 정보 유지 및 이메일 마스킹 관련 질문입니다.

33

obi

작성한 질문수 2

0

안녕하세요, 유저 테이블과 구독 테이블 설계 중 해결하기 까다로운 지점이 생겨 질문드립니다.
*현재 상황을 보다 이해하시는데 문제가 없으시기 위해 ai로 질문을 정리한점 먼저 말씀드립니다.

1. 현재 상황 및 서비스 정책

2. 제가 고민해 본 방법들과 예상되는 문제점

3. 질문 요약

개인정보 보호를 위해 유저 테이블의 이메일 원본은 마스킹하면서도, 재가입 시 동일인임을 식별해 과거 구독 정보를 매칭해 주어야 합니다. 여기에 유저의 이메일 변경 가능성까지 고려해야 하는 상황입니다.

이 경우 구독 테이블의 매핑 키 체계를 어떻게 잡는 것이 가장 깔끔하고 현명한 DB 설계 원칙일까요? 실무에서 이런 케이스를 해결하는 정석적인 아키텍처 가이드가 궁금합니다!

sql mysql dbms/rdbms 소프트웨어-설계 SQLD

답변 1

0

김영한

안녕하세요. obi님

우선 제 생각에 비즈니스 정책을 단순하게 변경하는게 가장 좋을 것 같아요.

하지만 그게 어려운 상황이라면, 중간 테이블을 하나 만들어서 해결하는 것이 필요합니다.

예를 들어서 users -> subscribers -> subscriptions 구조를 만드는 것이지요.

 

users: 로그인 계정
subscribers: 구독 권리를 가진 주체
subscriptions: 현재 구독 정보

 

users는 탈퇴 후 재가입하면 새로 생길 수 있으니, 구독이 직접 바라보면 안 됩니다.

대신 구독은 오래 유지되는 subscriber_id를 바라보게 합니다.

그래서 재가입 시에는 새 users 로우를 만들고, 기존 subscriber_id에 다시 연결합니다.

즉, 핵심은 구독의 FK를 user_id가 아니라 subscriber_id로 바꾸는 것입니다.

감사합니다.

자연키 vs 대리키 실무질문

0

20

1

1:N 관계에서 중간테이블 (연관엔티티)

0

44

2

일대일 fk 위치

0

37

1

제 3 정규형 vs BCNF 정규형 차이점?

0

82

3

BCNF 질문

0

72

2

연관 엔티티 네이밍 규칙

0

49

1

진짜 강의 듣는거 너무 고문

0

133

1

28강 sql 파일 어딨나여?

0

88

1

2NF의 엄밀한 정의

0

72

1

comment 채번을 사용해야 하는 이유에 대한 설명이 필요합니다.

0

122

3

학습중인 수업자료를 받아볼 수 있을까요??

0

100

2

수업자료 pdf파일관련 건의 - 제목 링크위치 개선

0

87

2

서비스 운영 중 잘못된 테이블 설계 발견시 수정 시점에 대한 질문

1

103

2

실무적인 설계로 접근했을 때 제 2정규형 항상 만족?

0

80

1

슈퍼/서브 타입 joined 전략

0

72

2

created_at 관련 구현과 DB ENUM에 대해

0

71

1

M:N 관계의 연관 엔티티 설계 순서

0

78

2

데이터 역사성 훼손 문제

0

65

2

실무팁 - 등록자,수정자 컬럼 관리 관련 질문입니다.

0

83

1

구글이 이메일 변경을 허용하는 이유

0

124

1

order_item 테이블 (order_id, product_id) 유니크 제약조건 누락

0

100

2

BCNF 정규화에 대한 질문

0

121

2

주문, 결제 엔티티의 분류

1

129

1

실무에서의 복수 항목에 대한 관리 방법이 궁금합니다.

0

90

1