Candidate Key
후보키는 더 줄일 수 없는 최소 슈퍼키다
후보키는 유일성과 최소성을 모두 만족합니다. 속성을 하나라도 뺐을 때 식별력이 깨져야 진짜 후보키입니다.
슈퍼키지만 과함
{student_id, name}
두 속성 조합은 모든 학생을 구분하므로 슈퍼키입니다.
name을 제거하면?
{student_id}만으로도 여전히 식별 가능
->
최소 슈퍼키
{student_id}
더 이상 뺄 속성이 없고 유일성도 유지되므로 후보키입니다.
최소성 통과
불필요한 속성이 남아 있지 않습니다.
{student_id}
학번이 모든 튜플을 유일하게 식별하면 후보키입니다.
{email}
이메일이 NOT NULL + UNIQUE로 보장된다면 후보키가 될 수 있습니다.
유일성
X가 모든 튜플을 구분한다
X -> all attributes
최소성
X의 진부분집합은 구분하지 못한다
불필요한 컬럼이 없어야 합니다.
선택
후보키 중 하나를 기본키로 고른다
나머지는 대체키로 관리할 수 있습니다.