← 질문 목록
#226깊이 0
테이블 설계 시 기본키를 설정하는 기준은 무엇인가?
데이터의 유일성과 불변성을 보장하는 값을 선택한다. 중복되지 않아야 하며 값이 바뀌지 않는 속성이 가장 적합하다.
| 기준 | 적절한 키 | 부적절한 키 |
|---|---|---|
| 유일성 | 시스템 생성 ID | 이름, 나이 |
| 불변성 | UUID, 일련번호 | 이메일, 전화번호 |
| 변경 가능성 | 대리 키 | 사용자 수정 가능 값 |
후보키 중에서 짧고 변하지 않으며 중복이 없는 키를 기본키로 정한다. 비즈니스 로직에 의존적인 값은 변경 가능성이 있어 피하는 것이다.
대리 키를 사용하면 실제 데이터가 바뀌어도 외래 키 참조는 그대로 유지된다. 이메일이나 전화번호처럼 바뀔 수 있는 값을 참조 키로 삼지 않는 이유다.
기본키가 너무 크거나 복잡하면 인덱스 성능이 왜곡된다. B-Tree에서는 키가 작을수록 한 페이지에 더 많이 담긴다. 그만큼 훑을 페이지가 줄어 탐색이 빨라진다.