식별자 종류 정리: 기본키, 후보키, 슈퍼키 차이 쉽게 이해하기
데이터 모델링을 공부하다 보면 식별자, 기본키, 후보키, 슈퍼키 같은 용어가 한꺼번에 나와서 헷갈리기 쉽습니다. 결론부터 말하면 식별자는 데이터를 구분하는 기준이고, 그 안에서 후보키는 기본키가 될 수 있는 후보, 기본키는 실제로 선택된 대표 키, 슈퍼키는 행을 유일하게 식별할 수 있는 모든 키 조합이라고 이해하면 됩니다. 이 글에서는 SQL 초보자와 SQLD 준비생이 헷갈리지 않도록 식별자 종류를 예제와 함께 쉽게 정리해보겠습니다.
- 기본키, 후보키, 슈퍼키 차이가 헷갈리는 분
- SQLD 데이터 모델링 파트를 공부하는 분
- 식별자 개념을 비전공자 기준으로 이해하고 싶은 분
- PK를 정하는 기준이 궁금한 분
식별자란 무엇인가
식별자는 각 행을 서로 구분하기 위한 기준입니다.
예를 들어 회원 테이블이 있다고 해보겠습니다. 이름이 같은 사람은 여러 명 있을 수 있지만, 회원번호가 다르면 각 사람을 구분할 수 있습니다. 이처럼 “이 데이터가 누구인지”를 구분할 수 있게 해주는 기준이 식별자입니다.
쉽게 말하면 식별자는 데이터의 신분증 같은 역할을 합니다.
왜 식별자가 중요한가
식별자가 없으면 같은 데이터가 섞이기 쉽고, 수정이나 삭제 시 어떤 행을 대상으로 해야 하는지도 불분명해집니다.
- 중복 데이터 구분이 어려워진다
- 특정 행을 정확히 찾기 어렵다
- 테이블 간 관계를 연결하기 어렵다
- 기본키와 외래키 설계가 불안정해진다
그래서 데이터 모델링에서는 먼저 “어떤 값으로 이 데이터를 구분할 것인가”를 정하는 것이 매우 중요합니다.
식별자 종류를 먼저 한 줄로 정리하면
슈퍼키 ⊃ 후보키 ⊃ 기본키라고 이해하면 쉽습니다.
즉, 기본키는 후보키 중 하나이고, 후보키는 슈퍼키의 일부라고 생각하면 전체 구조가 훨씬 잘 보입니다.
슈퍼키란 무엇인가
슈퍼키는 한 행을 유일하게 식별할 수 있는 모든 키 조합을 말합니다.
예를 들어 회원 테이블에 아래 컬럼이 있다고 해보겠습니다.
회원번호
이메일
이름
만약 회원번호와 이메일이 각각 중복되지 않는다면 아래는 모두 슈퍼키가 될 수 있습니다.
- 회원번호
- 이메일
- 회원번호 + 이메일
왜냐하면 이 값들은 모두 각 행을 유일하게 구분할 수 있기 때문입니다.
슈퍼키 핵심 포인트
- 행을 유일하게 식별할 수 있으면 된다
- 불필요한 컬럼이 포함되어도 슈퍼키가 될 수 있다
- 범위가 가장 넓은 개념이다
후보키란 무엇인가
후보키는 기본키가 될 수 있는 후보입니다.
즉, 단순히 유일하게 구분할 수 있을 뿐 아니라, 불필요한 속성 없이 최소한의 구성으로 행을 식별할 수 있어야 합니다.
위 예시에서 회원번호와 이메일이 각각 단독으로 회원을 구분할 수 있다면, 둘 다 후보키가 될 수 있습니다.
후보키는 유일성 + 최소성을 만족하는 키라고 기억하면 쉽습니다.
후보키 핵심 포인트
- 행을 유일하게 구분할 수 있어야 한다
- 불필요한 컬럼이 없어야 한다
- 기본키로 선택될 가능성이 있다
기본키란 무엇인가
기본키는 후보키 중에서 실제로 선택된 대표 키입니다.
예를 들어 회원번호와 이메일이 모두 후보키라고 해도, 테이블에서는 보통 그중 하나를 기본키로 정합니다. 대부분은 관리가 쉽고 변하지 않는 값을 기본키로 선택합니다.
members
- member_id (기본키)
- email (후보키)
- name
여기서 member_id가 기본키이고, email은 후보키이지만 기본키로 선택되지 않은 상태라고 이해하면 됩니다.
기본키 핵심 포인트
- 후보키 중 하나를 선택한 것
- 중복될 수 없다
- NULL이 될 수 없다
- 테이블 대표 식별 기준이다
대체키란 무엇인가
대체키는 후보키 중에서 기본키로 선택되지 않은 나머지 키입니다.
예를 들어 회원번호와 이메일이 모두 후보키인데, 회원번호를 기본키로 선택했다면 이메일은 대체키가 됩니다.
SQLD에서는 기본키, 후보키, 대체키 관계를 함께 묻는 경우가 많기 때문에 같이 정리해두는 것이 좋습니다.
슈퍼키, 후보키, 기본키를 표로 비교하면
| 구분 | 의미 | 핵심 조건 |
|---|---|---|
| 슈퍼키 | 행을 유일하게 식별할 수 있는 모든 키 조합 | 유일성 |
| 후보키 | 기본키가 될 수 있는 후보 | 유일성 + 최소성 |
| 기본키 | 후보키 중 실제 선택된 키 | 중복 불가, NULL 불가 |
| 대체키 | 후보키 중 기본키가 아닌 키 | 후보키 조건 충족 |
예제로 보면 더 쉽게 이해된다
아래처럼 학생 테이블이 있다고 가정해보겠습니다.
학번 | 주민등록번호 | 이름
1001 | 900101-1234567 | 김철수
1002 | 920303-2345678 | 이영희
여기서 학번도 학생을 구분할 수 있고, 주민등록번호도 학생을 구분할 수 있습니다.
- 학번: 후보키 가능
- 주민등록번호: 후보키 가능
- 학번 + 주민등록번호: 슈퍼키는 될 수 있지만 최소하지 않음
그리고 실제 시스템에서는 보통 학번을 기본키로 선택할 수 있습니다. 이 경우 주민등록번호는 대체키가 됩니다.
초보자가 식별자에서 자주 하는 실수
슈퍼키와 후보키를 같은 개념으로 보는 것
슈퍼키는 유일하기만 하면 되지만, 후보키는 거기에 최소성까지 만족해야 합니다.
기본키는 무조건 하나의 컬럼이어야 한다고 생각하는 것
기본키는 하나의 컬럼일 수도 있고, 여러 컬럼을 묶은 복합키일 수도 있습니다.
후보키는 여러 개일 수 없다고 생각하는 것
한 테이블에는 후보키가 여러 개 있을 수 있습니다. 그중 하나만 기본키로 선택되는 것입니다.
비전공자는 이렇게 외우면 쉽다
- 슈퍼키 = 유일하게만 구분되면 됨
- 후보키 = 유일하고, 더 뺄 것도 없음
- 기본키 = 후보키 중 실제 대표로 선택된 키
- 대체키 = 후보키였지만 기본키로 선택되지 않은 키
핵심 요약
- 식별자는 데이터를 구분하기 위한 기준입니다.
- 슈퍼키는 행을 유일하게 식별할 수 있는 모든 키 조합입니다.
- 후보키는 유일성과 최소성을 만족하는 키입니다.
- 기본키는 후보키 중 실제로 선택된 대표 키입니다.
- 대체키는 후보키 중 기본키로 선택되지 않은 키입니다.
FAQ
식별자는 왜 중요한가요?
각 행을 정확히 구분할 수 있어야 수정, 삭제, 관계 연결이 안정적으로 가능하기 때문입니다.
슈퍼키와 후보키 차이는 무엇인가요?
슈퍼키는 유일하기만 하면 되지만, 후보키는 유일성에 더해 최소성까지 만족해야 합니다.
후보키는 여러 개일 수 있나요?
네. 한 테이블에는 후보키가 여러 개 있을 수 있고, 그중 하나가 기본키로 선택됩니다.
기본키는 꼭 하나의 컬럼이어야 하나요?
아닙니다. 여러 컬럼을 조합한 복합키도 기본키가 될 수 있습니다.
대체키는 무엇인가요?
후보키 중 기본키로 선택되지 않은 나머지 키를 말합니다.
'자격증 준비 > SQLD' 카테고리의 다른 글
| 관계(Relationship)란 무엇인가: 1:1, 1:N, N:M 쉽게 이해하기 (0) | 2026.03.12 |
|---|---|
| 엔터티와 속성 차이 쉽게 이해하기: 데이터 모델링 초보자용 정리 (0) | 2026.03.12 |
| 정규화 쉽게 이해하기: 1차·2차·3차 정규화 정리 (0) | 2026.03.11 |
| JOIN 종류와 차이 초보자용 정리: INNER JOIN, LEFT JOIN 쉽게 이해하기 (0) | 2026.03.11 |
| PK와 FK 차이 쉽게 이해하기: SQL 초보자가 가장 먼저 알아야 할 개념 (0) | 2026.03.11 |