- 📌 김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
- 📌 기간 : 2025.10.29 ~ 2026.02.23
1. 서론
개념을 처음부터 체계적으로 정리해본 적은 많지 않아 데이터베이스 설계의 기본 개념부터 다시 정리하고 싶어 선택한 강의였습니다.
특히 인상 깊었던 부분은
- 자연키와 대리키를 실무에서 어떻게 활용하는지
- 식별자를 어떤 기준으로 설계해야 하는지에 대한 기준을 명확하게 잡아준 점이었습니다.
2. 내용 정리
자연키 (Natural Key)
-
업무에서 자연스럽게 발생하는 값을 식별자로 사용하는 방식
-
예) 주민등록번호, ISBN 코드, 사번
-
특징
- 데이터 자체에 의미가 있어 식별 목적을 이해하기 쉽다.
- 비즈니스 규칙이나 업무 환경의 변화에 영향을 받을 수 있다.
- 값이 변경되면 해당 값을 참조하는 다른 테이블에도 영향을 줄 수 있다.
대리키 (Surrogate Key)
-
비즈니스적인 의미와 관계없이 식별을 목적으로 별도로 생성한 값을 사용하는 방식
-
예) 오라클 시퀀스, UUID, Auto Increment
-
특징
- 비즈니스 규칙의 변화와 독립적으로 사용할 수 있다.
- 일반적으로 값이 변경되지 않아 테이블 간 참조 관계를 안정적으로 유지할 수 있다.
- 비즈니스적인 의미가 없기 때문에 키 자체만으로 데이터의 의미를 파악하기 어렵다.
현대 설계 표준 패턴
-
기본키는 대리키, 자연키는 UNIQUE 제약조건으로 관리하는 방식을 일반적인 설계 패턴으로 사용한다.
-
이유
- 비즈니스 환경은 시간이 지나면서 변경될 수 있다.
- 자연키를 기본키로 사용하면 값의 변경이 다른 테이블의 참조 관계까지 영향을 줄 수 있다.
- 대리키를 사용하면 비즈니스적인 식별 정보와 데이터베이스의 물리적인 식별자를 분리할 수 있다.
- 이를 통해 테이블 간 결합도를 낮추고 구조 변경에 유연하게 대응할 수 있다.
-
장점
-
비즈니스 규칙 변경에 따른 영향 최소화
-
테이블 간 느슨한 결합 구조 유지
-
데이터베이스 구조 변경 및 확장에 유리
-
분산 환경이나 대규모 시스템에서도 식별자를 일관되게 관리하기 용이
-
단, 대리키를 사용한다고 해서 자연키의 비즈니스 규칙까지 무시해서는 안 된다.
-
자연키가 반드시 유일해야 한다면
UNIQUE제약조건 등을 통해 중복을 방지해야 한다. -
대리키는 데이터를 식별하기 위한 기술적인 키이고, 자연키는 업무적으로 데이터를 식별하기 위한 기준이라는 점을 구분해야 한다.
-
3. 정리
- 대리키는 비즈니스 규칙의 변화와 테이블 간 참조 관계의 영향을 줄이는 데 유리하다.
- 따라서 일반적으로 대리키를 기본키로 사용하고, 자연키에는 UNIQUE 제약조건을 적용하는 방식을 고려할 수 있다.
- 다만 모든 테이블에 반드시 대리키를 사용해야 하는 것은 아니다.
- 변경 가능성이 낮고 그 자체가 명확한 의미를 가지는 코드성 데이터 등은 자연키를 기본키로 사용하는 것이 더 적절한 경우도 있다.
결국 중요한 것은 대리키와 자연키 중 하나를 무조건 선택하는 것이 아니라, 해당 데이터의 비즈니스 특성과 변경 가능성을 고려하여 적절한 식별자를 선택하는 것이다.