inflearn logo
강의

講義

知識共有

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

整理

상태 기반 데이터관리에서 특정 시점에 대한 정보는 어떻게 관리할 수 있나요?

2

yeoeol

投稿した質問数 6

0

안녕하세요 영한님 마스터패스 구매하고 모든 강의를 재밌게 수강하고 있는 백엔드 개발자 취업준비생입니다. 강의를 듣다가 궁금한 점이 생겨 질문남깁니다! 답변해주시면 너무 감사하겠습니다.

 

is_deleted 와 같은 컬럼을 사용하는 soft delete 방식은 실제 삭제 시점을 알 수 없기 때문에 주로 사용하진 않고, deleted_at을 컬럼으로 두고 삭제 여부/시점을 모두 판별할 수 있게 한다고 하셨는데,

그렇다면 뒤에 설명해주신 상태 기반 관리를 통해서 ProductStatus나 OrderStatus를 관리할 경우, deleted_at이나 다른 시점을 컬럼으로 두면 나쁜 설계라고 하셨습니다. 그렇다면 결국 ProductStatus와 같은 상태를 가진 것들은 삭제 시점이나 특정 시점을 알 수 없는건 마찬가지 아닌가요?

만약 삭제 시점이나 회원의 탈퇴 시점같은 것들을 관리해야 한다면 어떻게 해야할까요?

이러한 해결 방법으로써 이력 테이블 등의 방법이 있을 것 같은데 취준생의 개인 프로젝트로 사용하기에 규모가 너무 커지지 않을까 걱정됩니다.

실제 사례를 예시로 들어보자면

UserStatus 상태값입니다. 이를 테이블의 한 컬럼으로 두고 내부에는 ACTIVE(정상), SUSPENDED(임시정지), BANNED(영구정지), WITHDRAWN(탈퇴) 등의 여러 상태를 가집니다. 이때 만약 withdrawn_at 컬럼이 존재하지 않고 상태값만으로 관리하면 탈퇴 시점이 언제인지 등을 확인할 수 없게 됩니다.

이 경우에는 withdrawn_at 컬럼을 상태값과 함께 두는 것보다 이력 테이블을 사용하는게 더 나은 설계이자, 개인 소규모 프로젝트에서도 해당되는 사항인지 궁금합니다.

작은 조언이라도 해주시면 감사하겠습니다!

 

-- 에이전트

인프런 에이전트에 같은 내용으로 질문을 남겨봤는데 withdrawn_at 컬럼을 상태 컬럼과 함께 사용하는 것이 효율적이고 합리적인 설계라고 합니다. 실제로 이력 테이블은 개인 프로젝트 규모정도에서는 사용하기에 관리 복잡도가 증가할 가능성이 있다고 합니다. 이에 대해 어떻게 생각하시는지도 궁금합니다.

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

回答 0

공통 코드 , 계층 구조 질문

1

71

1

공통코드 관련한 질문 드립니다.

0

92

1

다음 강의는 언제쯤 나올까요?

1

133

2

실제 FK제약조건을 설정하지 않는이유

0

103

2

히스토리 관련 질문

0

84

2

통계 데이터 수정 질문

1

95

2

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

0

182

2

DELETE -> SELECT 질문 드립니다.

0

77

1

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

0

97

1

TTL 캐싱에 대한 질문

0

130

1

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

0

118

1

history_creted_at과 valid_from

1

91

2

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

0

109

1

추후 강의 질문있습니다

0

154

2

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

0

124

2

Json 컬럼의 객체 맵핑

0

89

1

[Deprecated] 오타 제보

0

120

1

오타 제보

0

93

2

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

0

127

2

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

0

124

1

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

2

110

1

common_code_detail의 code 변경 가능성

1

137

1

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

0

105

1

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

0

127

2