💡 핵심 인사이트
데이터베이스 설계자는 치열한 경쟁을 뚫고 올라온 '후보 키'들 중에서, 테이블을 대표할 가장 빠르고 튼튼한 녀석 단 한 명을 골라 왕관을 씌우는데 이를 **기본 키(Primary Key)**라고 합니다.
왕관을 쓰지 못하고 밀려난 나머지 후보 키들은 만약을 대비한 예비 왕세자인 **대체 키(Alternate Key)**가 됩니다.
Ⅰ. 기본 키 (Primary Key, PK)의 탄생
학생 테이블의 '후보 키' 명단에 {학번}과 {주민번호} 두 개가 올라왔다고 가정합시다. 둘 다 유일성과 최소성을 만족하는 완벽한 식별자입니다.
DB 설계자(DBA)는 이 둘 중 하나를 테이블의 절대적 대표, **기본 키(PK)**로 임명해야 합니다.
PK 선정의 기준 (학번 vs 주민번호)
설계자는 주로 다음을 고려하여 선택합니다.
- 변동성이 적은가?: 학번은 졸업할 때까지 절대 바뀌지 않지만, 주민번호는 유출 시 국가에서 변경해 줄 수도 있고 암호화의 부담이 있습니다.
- 길이가 짧은가?: PK는 다른 테이블에서 자주 참조(FK)되고 인덱스 트리의 뼈대가 됩니다. 주민번호(13자리)보다 학번(8자리 숫자)이 훨씬 작고 검색 속도가 빠릅니다.
➔ 결론:
{학번}을 기본 키(PK)로 채택합니다.
기본 키의 절대 제약 조건 (개체 무결성)
왕관을 쓴 기본 키는 엄청난 권력과 함께 무거운 책임을 집니다.
- NOT NULL: 학번이 비어있는(NULL) 유령 학생은 테이블에 등록(INSERT)될 수 없습니다.
- UNIQUE: 다른 사람과 똑같은 학번을 가진 튜플은 등록될 수 없습니다 (중복 절대 불가).
Ⅱ. 대체 키 (Alternate Key, 보조 키)
기본 키(PK) 오디션에서 탈락한 나머지 후보 키들의 운명입니다.
- 앞선 예시에서
{학번}이 PK로 뽑혔으므로, 훌륭한 자격을 갖췄음에도 밀려난 **{주민번호}가 바로 대체 키(Alternate Key)**가 됩니다. - 대체 키는 비록 테이블의 공식 대표(PK)는 아니지만, 여전히 사람을 유일하게 식별할 수 있는 훌륭한 속성입니다.
- 실무(SQL)에서는 PK를 놓쳤어도 이 컬럼 값들이 중복으로 들어오는 것을 막기 위해, 이 대체 키 컬럼에
UNIQUE제약조건을 걸어두어 유일성을 강력하게 보장합니다.
Ⅲ. 데이터베이스 키의 계층 구조 요약
이제까지 배운 키들의 포함 관계(집합)를 그리면 다음과 같습니다.
[ 데이터베이스 키의 포함 관계 계층도 ]
┌────────────────────────────────────────────────────────┐
│ 슈퍼 키 (Super Key) │
│ (유일성 O, 최소성 무시 / 예: 학번+이름, 주민번호) │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 후보 키 (Candidate Key) │ │
│ │ (유일성 O, 최소성 O / 예: 학번, 주민번호) │ │
│ │ │ │
│ │ ┌────────────────────┐ ┌────────────────────┐ │ │
│ │ │ 기본 키 (Primary Key)│ │ 대체 키 (Alternate Key)│ │ │
│ │ │ (선택받은 1인) │ │ (탈락한 예비 2인자) │ │ │
│ │ │ 예: 학번 │ │ 예: 주민번호 │ │ │
│ │ └────────────────────┘ └────────────────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: 대통령 선거(테이블 설계)를 상상해 보세요. 시민권자(슈퍼키) 중에서 훌륭한 자격을 갖춘 **대선 출마자 3명(후보키)**이 나왔습니다. 투표를 통해 1명이 **대통령(기본키, PK)**으로 당선되어 국가를 대표하게 되고, 낙선한 2명은 훌륭한 정치인이지만 직책을 얻지 못한 **야당 대표(대체키)**로 남아 언제든 식별자 역할을 거들게 됩니다.