inflearn logo
강의

講義

知識共有

キム・ヨンハンの実践データベース - 設計編2、実務で必ず遭遇する9つの設計パターン

섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼

解決済みの質問

72

choeyoungju12349120

投稿した質問数 2

0

안녕하세요!

질문이 있습니다

Soft delete 환경에서 UNIQUE를 걸 시, 가상 컬럼을 이용한 해결 방법은 소개되지 않은 이유가 있나요?

가상 컬럼으로 해결하는 방식은 추천하지 않는 방법인가요?

 

예를 들어,

(MySQL)

목표 = Member - email의 unique를 지키는 것

 

<Member 테이블>

필드 = email, deleted_at, _active_check

UNIQUE(email, _active_check)

 

이때,

가상 컬럼 =

_active_check

-> _active_check BOOLEAN

GENERATED ALWAYS AS (

IF(deleted_at IS NULL, TRUE, NULL)

) VIRTUAL;

 

이렇게 하면

  1. hello 계정 생성

email = "hello", deleted_at = null, _active_check = true

(이때, hello 계정은 다시 INSERT 불가 (UNIQUE(email, _active_check))

  1. hello 계정 soft 삭제

email = "hello", deleted_at= 2025.01.01, _active_check = null

  1. hello 계정 다시 생성

     

email = "hello", deleted_at= 2025.01.01, _active_check = null

email = "hello", deleted_at = null, _active_check = true

=> 결과적으로 UNIQUE 제약이 지켜짐

 

가상 컬럼을 활용하여, Soft Delete 환경에서 UNIQUE 제약을 지키는 방식은 좋지 않은 방법인가요?

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

回答 1

0

yh

안녕하세요. 최영주님

같은 문제를 해결하는 여러가지 방법들이 있고, 각자의 장단점이 있는데요.

말씀하신 방식은 충분히 좋은 방법입니다 🙂

강의에서는 이 문제를 해결할 때 MySQL에 특화된 기능보다는 조금 더 보편적인 내용을 다루어서 제외하게 되었습니다.

감사합니다.

히스토리 관련 질문

0

51

2

통계 데이터 수정 질문

1

59

2

공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?

0

129

2

DELETE -> SELECT 질문 드립니다.

0

45

1

상속 관계 모델링의 적용 기준 질문

0

69

1

TTL 캐싱에 대한 질문

0

71

1

공통 코드 사용시 컬럼 타입 설정

0

76

1

history_creted_at과 valid_from

1

59

2

함수 기반 인덱스 (Function-Based Index)

0

63

1

추후 강의 질문있습니다

0

118

2

실무 통계 질문(고민) 드립니다..!

0

87

2

Json 컬럼의 객체 맵핑

0

60

1

[Deprecated] 오타 제보

0

80

1

오타 제보

0

69

2

category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다

0

92

2

물리적으로 외래 키 제약 조건을 설정하지 않을 때

0

94

1

`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경

1

79

1

common_code_detail의 code 변경 가능성

1

108

1

[해결책 - 코드값 분리] 중 orders(order_status) - common_code(code) 타입 불일치 제보

0

82

1

이미 문자열 타입인 컬럼을 캐스팅하는 이유

0

102

2

계층 구조 모델링 기타 방법들

0

102

1

섹션 9의 퀴즈가 영어로 출력되요.

0

101

2

섹션2 공통 코드) 애플리케이션 ENUM을 API에 그대로 노출한다면?

0

121

1

NoSQL 질문있습니다.

0

110

2