Key
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(attribute)
키의 관계

1. 후보 키 (Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
- 즉, 후보키(candidate key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.
- 모든 릴레이션은 반드시 하나 이상의 후보키를 갖는다.
Example

고객이름
속성은 후보키가 될 수 있을까?
- 세상에는 이름이 같은 동명이인이 있기 때문에 불가능하다.
- 위 릴레이션에서는
고객아이디
속성을 통해 튜플을 구별할 수 있다.
고객아이디+고객이름
은 후보키가 될 수 없다.
고객아이디
로 충분히 구별이 가능한데 고객이름
이 들어갈 경우 최소성을 깨트림
2. 기본 키(Primary Key)
- 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키(primary key)다.
- 주 식별자, Not Null & Unique
Example

- 위 사진에서는 (고객아이디) , (고객이름+주소) 두가지의 후보키가 존재한다.
- 일반적으로 같이 사는 가족의 주소는 같지만 이름까지 같은 경우는 없기 때문에 (고객이름+주소) 도 후보키로 가능하다.
- 하지만, 어떤 후보키를 기본키로 지정해야 하는지는 데이터베이스 관리자나 설계자의 몫이다.
- 보통은 한 개 속성으로 컬럼을 구분할 수 있는 키를 선호함.
3. 슈퍼 키(Super Key)
- 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다. 슈퍼키는 유일성만 만족하면 슈퍼 키가 될 수 있다.
Example

- 7조라는 팀에 팀원은 4명이 있다. 이 4명을 구분할 수 있는 속성은
학번
, 주민번호
이름
+ 나이
를 묶어서 하나의 속성으로 만드는 것도 가능. 튜플이 7조 안에서 중복만 되지 않으면 가능하기 때문이다. 즉, 4명을 구분할 수 있으면 슈퍼키가 될 수 있다.
- 어떤 속성끼리 묶던 중복값이 안나오고 서로 구별만 할 수 있으면 된다.
- 단 최소성은 만족하지 않는다.
4. 대체 키 (Alternate Key)
-기본 키(PK)로 선택되지 못한 후보키들이다.
- 이름에서 알 수 있듯이 대체키는 기본키를 대신할 수 있지만 기본키가 되지 못하고 탈락한 이유가 있을 수 있다
Example

-고객아이디
, 고객이름
+주소
두 가지의 후보 키가 존재하지만, 고객아이디
를 기본 키로 지정했으므로 고객이름
+주소
는 대체 키가 된다.
5. 외래 키 (Foreign Key)

- 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본 키가 되는 키
- 다른 릴레이션의 PK를 그대로 참조하는 속성의 집합이 외래키
- 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다. (참조 무결성)
Example

- 주문 릴레이션의
주문고객
속성은 고객 릴레이션의 고객 아이디
를 참조
- 외래 키는 바로 참조하는 릴레이션의
주문고객
이 되는 것이다.
- 따라서 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다. 도메인이 같아야 연관성 있는 튜플을 찾기 위한 비교 연산이 가능하기 때문