408. 대체 키 (Alternate Key)
⚠️ 이 문서는 데이터베이스 설계 시 한 줄(Tuple)을 식별할 수 있는 똑똑한 후보들이 여러 명 있었으나, **'기본 키(Primary Key)'라는 1인자 자리를 두고 벌인 경쟁에서 밀려나 2인자(보조)로 남게 된 '대체 키'**를 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 대체 키는 테이블의 '후보 키(Candidate Key)' 중에서 '기본 키(Primary Key)'로 선택되지 못한 나머지 키들을 말한다.
- 가치: 기본 키 오디션에서 탈락하긴 했지만, 여전히 각 행을 완벽하게 구별할 수 있는 유일성(Uniqueness)과 최소성(Minimality)을 갖춘 훌륭한 키다.
- 실무 적용: 기본 키 대신 검색 조건으로 자주 쓰일 수 있으므로, 실무에서는 대체 키에
UNIQUE제약 조건을 걸고 보조 인덱스(Secondary Index)를 생성하여 검색 속도를 높인다.
Ⅰ. 개요: 1인자와 2인자 (Context & Necessity)
우리가 '국민 테이블'을 설계한다고 치자. 각 국민을 완벽하게 구별(식별)할 수 있는 속성을 찾아보니 두 개가 나왔다.
[주민등록번호](유일성, 최소성 만족 $\rightarrow$ 후보 키!)[여권번호](유일성, 최소성 만족 $\rightarrow$ 후보 키!)
이제 이 테이블의 진정한 1인자(기본 키, PK)를 뽑아야 한다.
- 주민번호는 모든 국민이 다 가지고 있고 잘 변하지 않는다.
- 반면 여권은 없는 사람도 있다.
- 결정:
주민번호를 기본 키(Primary Key)로 임명한다!
그렇다면 경쟁에서 밀린 여권번호는 어떻게 되는가? 버리기엔 너무 아까운 능력치(식별 가능)를 가지고 있다. 이렇게 **기본 키로 뽑히지 못한 비운의 후보 키들을 묶어서 '대체 키(Alternate Key)'**라고 부른다.
📢 섹션 요약 비유: 대체 키는 **'대통령 선거에서 떨어진 2등 후보'**와 같습니다. 비록 대통령(기본 키)이 되지는 못했지만, 언제든지 나라를 이끌어갈 수 있는 완벽한 자격(유일성과 최소성)을 갖춘 훌륭한 인물(속성)입니다.
Ⅱ. 대체 키의 핵심 특징 ★
시험에 자주 나오는 개념적인 특징들이다.
1. 후보 키의 부분집합이다
- 대체 키 = 후보 키 집합 - 기본 키
- 즉, 대체 키가 되려면 애초에 '유일성'과 '최소성'이라는 깐깐한 조건을 통과한 정예 요원(후보 키)이어야만 한다. 뚱뚱한 '슈퍼 키' 따위는 대체 키가 될 자격조차 없다. (407번 문서 참고)
2. 항상 존재하는 것은 아니다
- 만약 테이블에 후보 키가 딱 1개밖에 없었다면?
- 그 1개가 무조건 기본 키가 되므로, 이 테이블에는 대체 키가 존재하지 않는다. (대체 키는 0개일 수도 있고, 여러 개일 수도 있다.)
Ⅲ. 실무 활용: UNIQUE 제약조건과 보조 인덱스
이론적인 '대체 키' 개념을 실제 데이터베이스(MySQL, Oracle)에서는 어떻게 다룰까?
- 문제: 사용자들이 기본 키인 '주민번호'로만 검색하는 게 아니다. 공항 시스템과 연동되면 '여권번호'로도 엄청나게 검색을 한다.
- 해결책: 대체 키인
여권번호컬럼에UNIQUE제약조건을 건다.CREATE TABLE Citizens ( 주민번호 VARCHAR(13) PRIMARY KEY, -- 기본 키 여권번호 VARCHAR(9) UNIQUE, -- 대체 키 (유니크 인덱스 자동 생성됨) 이름 VARCHAR(20) ); - 이렇게 하면 DB 엔진이 여권번호에도 똑똑한 책갈피(Secondary Index)를 만들어 주어, 1인자인 기본 키 못지않게 초고속으로 데이터를 찾아낼 수 있게 된다.
┌──────────────────────────────────────────────────────────────┐
│ 후보 키, 기본 키, 대체 키의 포함 관계와 역할 시각화 │
├──────────────────────────────────────────────────────────────┤
│ │
│ [ 🏃♂️ 후보 키 (Candidate Keys) ] │
│ [ 주민등록번호 ] [ 여권번호 ] [ 운전면허번호 ] │
│ │ │ │ │
│ ▼ (선택!) ▼ (탈락) ▼ (탈락) │
│ ┌────────────┐ ┌────────────────────────────────┐ │
│ │ 👑 기본 키 │ │ 🥈 대체 키 (Alternate Keys) │ │
│ │ (Primary) │ │ │ │
│ │ 주민등록번호 │ │ 여권번호, 운전면허번호 │ │
│ └────────────┘ └────────────────────────────────┘ │
│ │
│ ★ 특징: 만약 '주민번호' 시스템이 망가져도, 즉시 '대체 키' 중 하나를 골라 │
│ 새로운 '기본 키'로 승격시킬 수 있다. (그래서 '대체' 키임) │
└──────────────────────────────────────────────────────────────┘
Ⅳ. 결론
"1인자는 하나지만, 훌륭한 식별자는 여러 개일 수 있다."
데이터베이스 설계 단계에서 '기본 키'를 정하는 것은 가장 중요한 의사결정이다. 하지만 그 과정에서 탈락한 대체 키들을 그냥 무시해서는 안 된다. 이 대체 키들은 시스템이 확장될 때 외부 시스템과의 연동 고리가 되거나, 가장 빈번하게 사용되는 검색 조건이 된다. 훌륭한 데이터베이스 설계자는 기본 키를 확정함과 동시에, 식별력을 갖춘 모든 대체 키들에 UNIQUE 제약조건을 걸어 데이터의 무결성을 빈틈없이 방어한다.
📌 관련 개념 맵
- 관련 무결성: 개체 무결성 (405번 문서)
- 키의 종류: 슈퍼 키 (407번 문서), 후보 키, 기본 키, 외래 키
- 물리적 구현: UNIQUE Index, Secondary Index (보조 인덱스)
- 핵심 조건: 유일성 (Uniqueness) O, 최소성 (Minimality) O
👶 어린이를 위한 3줄 비유 설명
- 반장을 뽑는 선거에 똑똑한 후보 3명(후보 키)이 나왔어요.
- 투표를 해서 가장 표를 많이 받은 1명이 '반장(기본 키)'이 되었죠.
- 반장 선거에서 아쉽게 떨어진 나머지 똑똑한 2명의 친구들이 바로 '대체 키'랍니다. 반장이 아파서 결석하면 언제든지 반장 역할을 대신(대체)할 수 있죠!