본질 식별자 vs 인조 식별자: SQLD 자격증 필수 개념 정리
데이터베이스 설계에서 식별자(Identifier)는 각 개체(Entity)의 유일성을 보장하는 속성(칼럼)으로, PK(Primary Key)로 사용됩니다.
SQLD 자격증에서는 본질 식별자(Natural Identifier)와 인조 식별자(Surrogate Identifier)의 개념과 차이점을 정확히 이해하는 것이 중요합니다.
이번 글에서는 본질 식별자와 인조 식별자의 정의, 특징, 장단점, 사용 예제, 선택 기준을 살펴보겠습니다.
1. 본질 식별자 (Natural Identifier)란?
✅ 본질 식별자(Natural Identifier)는 실제 업무에서 의미를 가지는 속성을 기본 키(PK)로 사용하는 방식입니다.
✅ 현실 세계에서 이미 존재하는 속성을 활용하며, 데이터를 조회할 때도 의미를 파악하기 쉽습니다.
🔹 본질 식별자 예제: 주민등록번호를 PK로 사용
🔹 샘플 테이블: People (주민 테이블)
주민등록번호 (PK) | 이름 | 주소 |
900101-1234567 | 김민수 | 서울 |
950202-2345678 | 이영희 | 부산 |
✅ 주민등록번호(900101-1234567)는 현실 세계에서 각 개인을 유일하게 식별하는 값이며, 본질 식별자로 사용됨.
🔹 본질 식별자의 장점
✅ 의미 있는 값 사용 → 비즈니스 규칙을 이해하기 쉬움
✅ 추가 속성 불필요 → 기존 데이터로 고윳값 생성 가능
✅ 데이터 조회 시 가독성 높음 → PK만 보고도 의미를 파악 가능
🔹 본질 식별자의 단점
❌ 변경 가능성이 있음 → 현실에서 변경될 수 있는 값이면 PK로 부적합
❌ 길이가 길어질 수 있음 → 복합 키(Composite Key)가 될 가능성이 큼
❌ 보안 문제 발생 가능 → 주민등록번호 같은 민감한 정보는 PK로 부적절
2. 인조 식별자 (Surrogate Identifier)란?
✅ 인조 식별자(Surrogate Identifier)는 업무적으로 의미가 없는 값을 별도로 생성하여 기본 키(PK)로 사용하는 방식입니다.
✅ 보통 자동 증가(AUTO_INCREMENT) 숫자 값이 많이 사용됩니다.
🔹 인조 식별자 예제: 주민등록번호 대신 ID 사용
🔹 샘플 테이블: People (주민 테이블)
ID (PK) | 주민등록번호 | 이름 | 주소 |
1 | 900101-1234567 | 김민수 | 서울 |
2 | 950202-2345678 | 이영희 | 부산 |
✅ ID(1, 2)는 업무적으로 의미가 없지만, 각 행을 유일하게 식별 가능
✅ 주민등록번호가 변경되더라도 PK는 유지됨
🔹 인조 식별자의 장점
✅ 변경 가능성이 낮음 → 한 번 부여된 PK 값이 바뀌지 않음
✅ 검색 및 조인이 빠름 → 정수형(숫자)이므로 인덱싱 효율적
✅ 보안성 증가 → 주민등록번호 같은 민감한 정보가 노출되지 않음
🔹 인조 식별자의 단점
❌ 추가적인 공간 필요 → 별도 PK 칼럼을 생성해야 함
❌ PK만으로 데이터 의미 파악 불가 → JOIN을 통해 실제 데이터 확인 필요
❌ 무분별한 사용 가능성 → 모든 테이블에서 무조건 인조 식별자를 사용하면 비효율적
3. 본질 식별자 vs 인조 식별자 비교
구분 | 본질 식별자 (Natural PK) | 인조 식별자 (Surrogate PK) |
정의 | 현실 세계에서 의미가 있는 값 사용 | 시스템이 생성한 고유한 값 사용 |
예시 | 주민등록번호, 학번, 차량번호 | AUTO_INCREMENT ID, UUID |
변경 가능성 | 변경될 가능성 있음 | 변경되지 않음 |
가독성 | PK만 봐도 의미 파악 가능 | PK만으로는 데이터 의미 불명확 |
공간 효율성 | 복합 키로 인해 길어질 수 있음 | 정수형이면 공간 절약 가능 |
보안성 | 개인정보 노출 위험 있음 | 개인정보 보호에 유리 |
검색 속도 | 비교적 느림 (문자열 비교) | 빠름 (숫자 비교) |
외래 키(FK) 영향 | 다른 테이블에서도 긴 PK 사용해야 함 | 짧고 단순한 숫자로 FK 설정 가능 |
✅ 변경 가능성이 없는 경우 본질 식별자를 사용할 수 있음.
✅ 보안이 중요한 경우 인조 식별자가 유리함.
4. 본질 식별자와 인조 식별자 선택 기준
✅ 본질 식별자가 적합한 경우
- 데이터가 변경될 가능성이 없는 경우 (예: 학번, ISBN, 제품 코드)
- 현실에서 이미 유일한 값으로 사용되는 경우 (예: 국가 코드, 항공편 번호)
- PK 자체가 비즈니스 로직에서 중요한 의미를 가지는 경우
✅ 인조 식별자가 적합한 경우
- 데이터가 변경될 가능성이 있는 경우 (예: 전화번호, 이메일 주소)
- 보안이 중요한 경우 (예: 주민등록번호, 고객번호)
- 성능을 고려해야 하는 경우 (숫자 기반 PK는 빠른 조회 속도 제공)
💡 실무에서는 대부분 인조 식별자를 기본 PK로 사용하고, 본질 식별자는 유니크 제약 조건(UNIQUE)으로 설정하는 것이 일반적입니다.
5. SQLD 시험 대비 핵심 정리
✅ 본질 식별자(Natural Identifier)란?
- 현실 세계에서 의미가 있는 속성을 PK로 사용
- 변경될 가능성이 있을 경우 사용하면 안 됨
- 데이터 조회 시 가독성이 좋지만, 복합 키가 될 가능성이 큼
✅ 인조 식별자(Surrogate Identifier)란?
- 데이터베이스 시스템에서 자동 생성된 PK 사용 (AUTO_INCREMENT 등)
- 변경되지 않으며, 검색 성능이 뛰어남
- 비즈니스 로직에서 의미가 없으므로, 추가 JOIN이 필요할 수도 있음
✅ 본질 식별자 vs 인조 식별자 선택 기준
- 변경 가능성이 없는 경우 → 본질 식별자
- 보안 및 성능이 중요한 경우 → 인조 식별자
- 일반적으로 인조 식별자를 사용하고, 본질 식별자는 UNIQUE 제약 조건 적용
✅ SQLD 시험에서는 본질 식별자와 인조 식별자의 차이점과 장단점을 정확히 이해하는 것이 중요합니다!
✅ 실무에서는 대부분 인조 식별자를 PK로 사용하지만, 상황에 따라 본질 식별자를 고려해야 합니다.
SQL 실습을 통해 다양한 PK 설정을 연습해 보세요!