1. 서론
개념을 처음부터 체계적으로 정리해본 적은 많지 않아 기본 개념부터 다시 정리하고 싶어 선택한 강의였습니다.
특히 인상 깊었던 부분은
- 자연키와 대리키를 실무에서 어떻게 병행해서 사용하는지
- 식별자를 어떤 기준으로 설계해야 하는지에 대한 기준을 명확히 잡아준 점이었습니다.
2. 내용 정리
자연키 (Natural Key)
- 업무에서 자연스럽게 발생하는 값을 기본키로 사용하는 방식
- 예) 주민등록번호, ISBN 코드, 사번
- 특징
- 데이터 자체로 식별 가능(조회 단순성)
- 비즈니스 규칙 변화에 영향을 받기 쉬움
- 값 변경이 발생하면 참조 관계 전체에 영향 가능
대리키 (Surrogate Key)
- 비즈니스 의미와 무관하게 오직 식별 목적만을 위해 생성한 값을 기본키로 사용하는 방식
- 예) 오라클 시퀀스, UUID, Auto Increment
- 특징
- 비즈니스 규칙 변화와 독립적
- 값 변경 가능성이 거의 없음
- 의미 없는 키로 인한 가독성 저하
- 뛰어난 쓰기 성능
- 추가 인덱스 필요
현대 설계 표준 패턴
- 대리키는 기본키, 자연키는 UNIQUE 제약조건
- 비즈니스 환경은 언젠가 변한다.
- 현대적 설계의 핵심은 느슨한 결합
- 이렇게 하면 파티셔닝, 샤딩시에도 더 편리해짐
현대 설계 표준 패턴
- 기본키는 대리키, 자연키는 UNIQUE 제약조건으로 관리하는 방식이 일반적
- 이유
- 비즈니스 환경은 언젠가 변할 수 있음
- 자연키를 PK로 사용하면 변경 시 구조 전체에 영향 발생
- 대리키 사용으로 테이블 간 결합도를 낮출 수 있음
- 현대적 설계의 핵심은 느슨한 결합
- 장점
- 느슨한 결합 구조 유지
- 키 변경에 따른 리스크 최소화
- 파티셔닝, 샤딩, 분산 환경에서 관리가 훨씬 용이
정리
- 대리키는 구조 변경과 확장에는 유리하지만 자연키 제약을 제대로 걸지 않으면 데이터 품질이 급격히 나빠질 수 있음 그래서 기본키는 대리키 + 자연키 UNIQUE 제약조건
- 다만 변경 가능성이 없고 코드성 데이터는 자연키 PK가 더 적절함