데이터베이스에서 Primary Key는 테이블 안의 각 행(Row)을 고유하게 식별하기 위해 반드시 필요한 요소입니다.
Primary Key를 설정하는 방식에는 크게 두 가지가 있는데요, 바로 Natural Key와 Surrogate Key입니다.
이번 글에서는 이 두 가지 개념을 살펴보고, 실무에서 어떤 차이가 있는지 알아보겠습니다.
🔑 1. Natural Key
Natural Key란 말 그대로, 실제로 해당 개체(Entity)가 원래부터 가지고 있는 속성을 Primary Key로 사용하는 경우를 말합니다.
- 예시
- 사람은 주민등록번호로 특정 인물을 식별할 수 있습니다.
- 책은 ISBN 번호로 특정 책을 고유하게 구분할 수 있습니다.
즉, 어떤 개체가 본래 갖고 있는 속성 컬럼이 그대로 Primary Key 역할을 하는 것이죠.
예를 들어, member 테이블을 만든다고 가정했을 때, email 컬럼이 각 회원을 유일하게 식별할 수 있는 속성이라면, email을 Primary Key로 설정하면 이것이 Natural Key가 됩니다.
🔑 2. Surrogate Key
반대로, Surrogate Key는 실제 개체의 속성이 아닌, 오직 Primary Key로 사용하기 위해 인위적으로 만든 컬럼입니다.
- 예시
- id 컬럼 (1부터 시작해서 순차적으로 증가하는 숫자)
- UUID 같은 시스템에서 자동으로 생성되는 값
즉, 본래 회원을 설명하는 속성이 아니라 단순히 구분을 위해 추가한 **대체 키(Surrogate Key)**라는 뜻입니다.
예를 들어, member 테이블에서 id 컬럼을 Primary Key로 두고, 값이 1, 2, 3 … 이런 식으로 자동 증가한다면 이것이 바로 Surrogate Key입니다.
그럼 어떤 키를 써야 할까?
많은 분들이 궁금해하는 부분이 바로 이것입니다. Natural Key vs Surrogate Key, 어느 것이 더 좋을까?
사실 정답은 없습니다. 데이터의 성격과 시스템 설계 방식에 따라 달라질 수 있습니다. 하지만 일반적으로는 다음과 같은 경향이 있습니다.
- Natural Key의 단점
- 개체의 속성이 바뀔 가능성이 있다면 큰 문제가 됩니다.
- 예: 이메일 주소 변경, 드물지만 주민등록번호 변경 같은 상황이 발생하면 모든 row의 값을 다시 수정해야 함.
- Surrogate Key의 장점
- 단순하고 변경될 가능성이 거의 없음.
- 다른 속성이 바뀌더라도 Primary Key는 영향을 받지 않음.
- 그래서 대부분의 실무 프로젝트에서는 Surrogate Key(예: id 컬럼 자동 증가 방식)를 선호하는 경우가 많습니다.
정리
- Primary Key는 크게 Natural Key와 Surrogate Key 두 가지로 나뉜다
- Natural Key: 개체가 본래 갖고 있는 속성을 Primary Key로 사용하는 방식
- Surrogate Key: 개체의 속성이 아닌, 인위적으로 생성한 대체 키를 Primary Key로 사용하는 방식
- 실제 현업에서는 데이터 변경 가능성을 줄이고 관리 편의성을 높이기 위해 보통 Surrogate Key를 더 많이 사용한다
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| SQL LIKE 구문 이해하기 (1) | 2025.08.17 |
|---|---|
| SQL BETWEEN 구문 이해하기 (1) | 2025.08.17 |
| 데이터베이스에서의 플래그(Flag)란 무엇인가? (0) | 2025.06.21 |
| WSL2 환경에서 ClickHouse 설치 완전 가이드 (명령어 설명 포함) (0) | 2025.05.15 |
| WSL2 환경에 ClickHouse 설치기 (feat. apt GPG 오류 해결) (0) | 2025.05.15 |