후보 키(candidate key)는 관계형 데이터베이스관계형 모델에서 슈퍼 키 중 더 이상 줄일 수 없는(irreducible) 형태를 가진 것을 말한다.

더 이상 줄일 수 없다는 것은 수퍼 키를 구성하는 속성(열) 중 어느 하나라도 제외될 경우 유일성을 확보할 수 없게 되는 것을 말한다. 최소(minimal)라고도 한다. 즉, 행의 식별을 위해 필요한 특성 또는 그 집합이 후보 키이다. 후보 키는 행의 ‘식별자’라고 생각할 수도 있다. 후보 키라는 이름은 그것이 기본 키로 선정될 수 있는 후보이기 때문에 유래했다.

하나의 관계(테이블)에서 관계를 정의할 때, 적어도 하나의 후보 키가 존재한다. 물론 하나의 관계에 후보 키가 두 개 이상 존재할 수 있다. 예를 들어 마을(마을 ID, 도시명, 도명)이라는 관계의 경우 마을 ID와 {도시명, 도명}이 후보 키이다. 또한 도시명에는 중복이 있을 수 있기 때문에 도시 이름은 단독으로는 후보 키가 되지 않는다. (예, 고성군)

후보 키가 NULL을 허용할 것인가에 대해서는 여러 설이 있다. 기본 키로는 인정되지 않지만 후보 키는 인정되어야 한다는 주장도 있지만, 반대로 기본 키를 인정하지 않으면 후보 키도 존재할 이유가 없다는 주장도 있다. 기본 키로는 인정되지 않지만 후보 키는 인정한다는 생각은, 후보 키 중 무작위로 선정된 하나가 기본 키라는 정의와 모순된다.

또한 SQL 구문 CREATE UNIQUE INDEX 문에 지정된 고유 제약 조건은 엄밀하게는 후보 키와 다른 개념이기 때문에 고유성 제약 조건에 NULL을 허용할 수 있는지 여부와는 무관하다.

같이 보기 편집