💡 핵심 인사이트
후보 키(Candidate Key)는 비만 상태였던 슈퍼 키(Super Key)들 중에서, 튜플 식별에 꼭 필요한 속성만 남기고 다이어트를 감행하여 '유일성'과 '최소성' 두 가지 허들을 모두 통과한 초정예 키들의 집합입니다.
나중에 테이블의 1인자인 '기본 키(PK)'로 선출될 자격을 갖춘 왕위 계승 후보자들입니다.
Ⅰ. 후보 키의 정의와 자격 요건
- 정의: 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는, 군더더기 없는 최소한의 속성 집합입니다.
- 자격 검증 (2관왕 필수):
- 유일성 (Uniqueness): 이 키값만 알면 테이블 내의 수많은 튜플 중 딱 1개만 찾아낼 수 있어야 합니다.
- 최소성 (Minimality): 키를 구성하는 여러 속성 중 단 하나라도 빼버리면 유일성이 즉시 박살 나버리는 아슬아슬한 임계 상태여야 합니다. (즉, 식별에 불필요한 속성이 단 1개도 섞여 있으면 안 됩니다.)
Ⅱ. 후보 키 도출 과정 (최소성 검증)
앞서 만든 학생 릴레이션의 슈퍼 키 명단에서 다이어트(최소성 검사)를 해봅시다.
- 학생(학번, 주민번호, 이름, 전공)
- { 학번, 이름 }: 이 두 개로 한 명을 찾을 수 있습니다(유일성). 그런데 여기서
이름을 빼버리고{ 학번 }만 남겨볼까요? 학번만으로도 여전히 한 명을 완벽히 찾을 수 있습니다! 즉이름은 최소성을 파괴하는 잉여 속성이었으므로 이 조합은 후보 키 탈락입니다. - { 학번 }: 유일하게 1명을 찾습니다. 여기서 학번을 빼버리면 아무것도 남지 않으니 당연히 유일성이 깨집니다. ➔ (후보 키 합격 O)
- { 주민번호 }: 한 명을 찾고, 더 뺄 것도 없습니다. ➔ (후보 키 합격 O)
Ⅲ. 복합키 (Composite Key)의 최소성 주의사항
후보 키가 무조건 1개의 컬럼(속성)으로만 만들어지는 것은 아닙니다. 2개 이상이 뭉쳐야만 비로소 후보 키가 되는 경우도 많습니다.
[ 수강 신청 릴레이션 (학번, 과목코드, 성적) ]
- 홍길동(1001)이 여러 과목을 듣고, 데이터베이스(DB1)를 여러 학생이 듣는 상황입니다.
{ 학번 }단독: 홍길동이 3과목을 들으면 튜플 3개가 나오므로 유일성 실패.{ 과목코드 }단독: DB1을 30명이 들으면 튜플 30개가 나오므로 유일성 실패.- { 학번, 과목코드 } 조합: "홍길동이 DB1을 들었다"는 데이터는 1번밖에 안 들어갑니다(유일성 만족). 여기서 학번을 빼거나 과목코드를 빼면 아까처럼 유일성이 깨져버립니다.
- 따라서 이 릴레이션에서는 **두 개가 찰떡처럼 뭉쳐진 { 학번, 과목코드 } 덩어리 자체가 하나의 완벽한 후보 키(복합키)**로 인정받습니다.
📢 섹션 요약 비유: 후보 키는 아이돌 오디션의 **'최종 데뷔 조'**입니다. 예선장에는 춤만 잘 추고 노래는 못하는 허수들(슈퍼 키)이 수천 명 모였지만, 깐깐한 심사(최소성 검증)를 거쳐 노래, 외모, 춤을 모두 완벽하게 갖춘 군더더기 없는 에이스 멤버 3명(후보 키)만이 최종 데뷔 조에 합격합니다. 이제 이 중에서 리더(기본 키) 한 명을 뽑게 됩니다.