-> 행의 열값중 중복값이 없는 하나의 속성 혹의 여러개의 속성들이 모인 집합이다.
-> 슈퍼키는 식별할 수 있는 여러 조합이 있는 반면 후보키는 식별할 수 있는 최소한의 집합을 뜻한다.
예를 들어 id와 이름과 주민번호가 존재할때 슈퍼키는 id와 이름, 이름과 주민번호, id와 주민번호, id와 이름과 주민번호 이렇게 총 4가지의 슈퍼키가 존재하지만 후보키는 최소한의 조합으로 유일하게 행을 식별할 수 있는 집합을 뜻한다. 후보키는 하나일 수 있고 여러개의 조합일 수 있다. 슈퍼키와 가장 큰 차이점은 최소한이라는 단어가 포함된다.
-> 기본키가 보안을 요하거나, 여러개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는 일련번호 같은 가상의 속성을 만들어 기본키로 삼는다. 이러한 키가 대리키 혹은 인조키라고 한다. 우리가 흔히 사용하는 userId의 값이 이 대리키이다.
-> 후보키 중에서 선택받지 못한 후보키가 대체키가 된다. id와 주민번호중 Id가 기본키라면 주민번호는 후보키가 된다.
-> 외래키의 특징
1. 외래키의 특징을 정리하면 다음과 같다.
2. 관계 데이터 모델의 릴레이션 간의 관계를 표현한다.
3. 다른 릴레이션의 기본키를 참조하는 속성이다.
4. 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다.
5. 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경된다.
6. NULL 값과 중복 값 등이 허용된다.
7. 자기 자신의 기본키를 참조하는 외래키도 가능하다.
8. 외래키가 기본키의 일부가 될 수 있다.