키(key)
후보키
후보키는 다음 두 가지의 성질을 지니고 있습니다.
- 유일성: 중복되는 Tuple이 없어야 합니다.
- 최소성: 후보키를 이루는 키는 유일성을 만족하면서 최소의 개수로 이루어져야 합니다.
PK(Primary Key, 기본키)
- 후보키 중 레코드의 식별자로 이용하기에 가장 적합하다고 판단되어 선택된 키
- (개체 무결성) Null 값을 가질 수 없으며, 중복되지 않아야 합니다.
- 무결성 이란 데이터의 정확성과 일관성이 확보되어 데이터에 결함이 없는 상태를 의미합니다.
- 클러스터형 인덱스를 자동으로 생성합니다.
FK(Foreign Key, 외래키)
- 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키
- (참조 무결성) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야 합니다.
- 외래키가 포함된 테이블을 자식 테이블, 외래키 값을 제공하는 테이블을 부모 테이블이라고 합니다.
- FK는 제약조건, 두 테이블 간의 관계이며, 인덱스와는 관련이 없습니다.
- 따라서 각 DB마다 FK의 인덱스 자동생성이 지원되기도 하고 아니기도 합니다.
- MySQL의 경우 FK에 대해 자동으로 보조형 인덱스를 생성합니다.
PK와 FK의 차이
- 'NULL을 허용하는가'가 가장 큰 차이라고 생각합니다.
- 인덱스 관련
- PK: 클러스터형, 자동생성
- FK: 보조형, 수동생성(자동생성을 지원하는 DB도 존재)
UK(Unique Key, 고정키)
- NULL를 허용하며, 중복을 허용하지 않습니다.
- 보조 인덱스를 자동으로 생성합니다.
참고문헌