슈퍼키
튜플을 구분할 수 있는 모든 attribute의 조합
후보키
튜플을 구분할 수 있는 최소한의 attribute 조합
기본키
후보키 중 null을 허용하지 않고 튜플을 가장 잘 구분할 수 있는 대표키
외래키
테이블의 연관관계를 나타내기 위해 다른 테이블의 기본키를 참조하는 키
꼬리 질문
- 기본키는 수정이 가능한가요?
이론상 수정이 가능하지만 여러 연관관계가 있는 경우, 참조 부분에서 데이터의 일관성이 깨질 수 있으므로 수정하지 않는 것이 좋다고 생각합니다.
- 외래키 값은 NULL이 들어올 수 있나요?
해당 관계가 존재하지 않는 경우 null값이 들어올 수 있습니다.
- 어떤 칼럼의 정의에 UNIQUE 키워드가 붙는다고 가정해 봅시다. 이 칼럼을 활용한 쿼리의 성능은 그렇지 않은 것과 비교해서 어떻게 다를까요?
UNIQUE 특성상 중복값을 허용하지 않으므로 삽입, 수정시 마다 중복체크를 해야 해 일부 성능 저하를 가져올 수 있습니다.