인프런 커뮤니티 질문&답변
데이터 역사성 훼손 문제
작성
·
10
0
자연키를 기본키로 설정했을 때 발생할 수 있는 문제점에서 데이터의 역사성 훼손을 예로 들었는데 이 문제는 대리키를 기본키로 등록했어도 발생할 수 있는 문제 아닌가요?
이 문제를 해결하기 위해서는 어쩔 수 없이 주문 테이블에도 email 등을 중복으로 저장해야 해결할 수 있는 거 아닌가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 박동규님.
데이터베이스 설계에서 자연키 또는 대리키를 기본키로 선택하는 것은 중요하고 흔히 논의되는 주제입니다. 질문해주신 데이터의 역사성 훼손 문제는 데이터베이스에서 데이터 무결성을 유지하기 위한 중요한 이슈 중 하나입니다.
자연키와 데이터의 역사성:
- 자연키 사용 시의 문제점: 자연키는 비즈니스 로직에 의미가 있는 키로, 변경될 가능성이 있습니다. 예를 들어, 고객의 이메일이나 전화번호가 변경되는 경우, 이를 기본키로 사용하면 데이터베이스 내의 관련 관계성을 모두 수정해야 하며, 이로 인해 과거의 기록(역사성)이 손상될 수 있습니다.
- 대리키 사용 시: 대리키는 시스템 내부에서만 사용되며, 일반적으로 자동 증가되는 숫자나 임의의 유니크 값이므로, 외부 비즈니스 로직의 변화와는 무관하게 사용될 수 있습니다. 하지만 관련된 비즈니스 데이터를 중복 저장한다면, 자연키에서 발생하는 문제와 유사하게 변경이 필요할 수 있습니다.
데이터의 역사성을 유지하기 위한 전략:
- 대리키 사용: 대리키를 기본키로 사용하면 자연키 변경 시 전체 관계를 업데이트해야 하는 문제를 방지할 수 있습니다.
- 중복 데이터 저장: 말하신 것처럼, 주문 테이블에 이메일 등을 중복으로 저장하여 특정 시점의 데이터를 보존하는 방법도 고려할 수 있습니다. 이는 데이터 이력 테이블을 생성하여 변화 전후의 모든 상태를 저장함으로써 가능하며, 데이터의 변경 내역을 관리하는 데 효과적입니다.
관련 주제를 더 깊이 이해하기 위해 유사한 질문과 답변을 참조하시는 것도 좋습니다:
- 엔티티의 키 선정에 관해서 - 이 게시물에서는 자연키와 대리키의 차이와 장단점을 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




