데이터베이스 키(Key): 슈퍼키, 후보키, 기본키, 외래키
요약
키의 유일성·최소성과 슈퍼키, 후보키, 기본키, 대체키, 외래키의 관계를 설명합니다. 후보키의 최소성은 다른 키의 크기가 아닌 자기 부분집합으로 판단합니다.
| 키 종류 | 특징 | 설명 |
|---|---|---|
| 기본키 (Primary Key) | 후보키 중 선택, Not Null | 후보키 중에서 선택된 테이블 대표 키 |
| 대체키 (Alternate Key) | 후보키 중 나머지 | 기본키로 선택되지 않은 후보키 |
| 후보키 (Candidate Key) | 유일성 O, 최소성 O | 유일하게 식별하며 어느 속성도 뺄 수 없는 집합 |
| 슈퍼키 (Super Key) | 유일성 O, 최소성 요건 없음 | 튜플을 유일하게 식별할 수 있는 속성 또는 속성들의 집합 |
| 외래키 (Foreign Key) | 다른 테이블의 기본키 참조 | 테이블 간의 관계를 정의하고 참조 무결성을 보장 |
데이터베이스 키란?
키(Key) 는 데이터베이스에서 조건을 만족하는 튜플(Tuple, 행)을 찾거나, 순서대로 정렬할 때 다른 튜플과 구별할 수 있는 유일한 기준이 되는 속성(Attribute) 또는 속성의 집합입니다. 키는 데이터의 무결성을 보장하고, 효율적인 데이터 관리를 가능하게 합니다.

키의 주요 특성
모든 키가 이 두 가지 특성을 항상 만족하는 것은 아니지만, 특히 후보키를 정의하는 데 있어 핵심적인 성질입니다.
- 유일성(Uniqueness): 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 합니다. 예를 들어, '학생' 테이블에서 '학번'은 각 학생을 유일하게 구분하므로 유일성을 만족합니다.
- 최소성(Minimality): 유일성을 만족하는 그 속성 조합에서 어느 속성도 뺄 수 없어야 합니다. 속성을 하나라도 제거하면 유일성이 깨지는지 확인하며, 다른 후보키의 속성 개수와 비교하지 않습니다.
키의 종류와 관계
데이터베이스에는 여러 종류의 키가 있으며, 서로 포함 관계를 가집니다.
기대(후)슈
[기본키 + 대체키 = 후보키] ⊂ 슈퍼키

1. 기본키 (Primary Key, PK)
- 정의: 후보키 중에서 선택된 단 하나의 키입니다. 테이블을 대표하는 키라고 할 수 있습니다.
- 특성:
- NULL 값을 가질 수 없습니다.
- 중복된 값을 가질 수 없습니다.
- 테이블 당 오직 하나의 기본키만 존재합니다.
- 선정 기준: 보통 길이가 짧고, 값이 자주 변경되지 않으며, NULL 값을 갖지 않는 후보키를 기본키로 선정합니다.
- 예시:
{학번},{이메일}같은 후보키 중에서, 값이 자주 변경되지 않는학번을 기본키로 선택합니다.
[학생 테이블]
| 학번 | 이메일 | 이름 | 전공 |
|---|---|---|---|
| 20241001 | kim@example.com | 김철수 | 컴퓨터공학 |
| 20241002 | lee@example.com | 이영희 | 수학 |
| 20241003 | cheolsoo@example.com | 김철수 | 수학 |
| 20241004 | choi@example.com | 최지연 | 물리학 |
2. 대체키 (Alternate Key)
-
정의: 기본키로 선택되지 못한 나머지 후보키들입니다.
-
특성: 후보키의 성질(유일성, 최소성)을 그대로 가집니다.
-
예시:
{학번}이 기본키로 선택되었다면,{이메일}은 대체키가 됩니다.
3. 후보키 (Candidate Key)
-
정의: 테이블의 각 행을 유일하게 식별하고, 그 조합에서 어느 속성도 빼면 유일성이 깨지는 키입니다.
-
특성: 유일성과 최소성을 모두 만족해야 합니다.
이 예시에서는 학번과 이메일이 각각 중복되지 않고, (이름, 전공) 조합도 학생마다 다르게 유지된다고 가정합니다. 실제 후보키는 현재 표의 네 행에서만 우연히 유일한 조합이 아니라, 앞으로 추가될 행에도 유일성을 보장하는 제약으로 정해야 합니다.
-
예시: 아래 학생 테이블에서,
{학번}: 후보키 (유일성 O, 최소성 O) - 각 학생을 유일하게 식별{이메일}: 후보키 (유일성 O, 최소성 O) - 각 학생을 유일하게 식별{이름, 전공}: 후보키 (유일성 O, 최소성 O) - 가정한 제약에 따라 조합이 중복되지 않고,이름만 남기면 '김철수'가,전공만 남기면 '수학'이 중복되므로 어느 한쪽도 뺄 수 없음{이름}: 후보키가 아님 (유일성 X) - '김철수'가 중복되어 유일성을 만족하지 않음{학번, 이름}: 후보키가 아님 (최소성 X) -이름을 빼도학번만으로 유일성을 만족하므로 불필요한 속성이 포함됨
최소성은 그 조합에서 속성을 뺐을 때 유일성이 깨지는지로 판단합니다.
{학번}처럼 속성이 더 적은 후보키가 따로 있다고 해서{이름, 전공}이 후보키에서 탈락하지는 않습니다. 한 테이블에 후보키가 여러 개 있을 수 있고, 후보키마다 속성 개수가 서로 달라도 됩니다.[학생 테이블]
학번 이메일 이름 전공 20241001 kim@example.com김철수 컴퓨터공학 20241002 lee@example.com이영희 수학 20241003 cheolsoo@example.com김철수 수학 20241004 choi@example.com최지연 물리학
4. 슈퍼키 (Super Key)

- 정의: 테이블의 각 행을 유일하게 식별할 수 있는 하나의 속성 또는 속성의 집합입니다.
- 특성: 유일성만 만족하면 되고, 최소성은 요구하지 않습니다. 최소성까지 만족하는 슈퍼키는 후보키이기도 하므로, 모든 후보키는 슈퍼키입니다.
- 예시: 위 학생 테이블에서,
{학번}: 슈퍼키 (유일성 O, 최소성 O) - 최소성까지 만족하므로 후보키이기도 함{이메일}: 슈퍼키 (유일성 O, 최소성 O) - 최소성까지 만족하므로 후보키이기도 함{이름}: 슈퍼키가 아님 (유일성 X) - '김철수'가 중복되어 유일성을 만족하지 않음{학번, 이름}: 슈퍼키 (유일성 O, 최소성 X) - 불필요한이름속성이 포함됨{학번, 이메일}: 슈퍼키 (유일성 O, 최소성 X) - 둘 다 각각 유일성을 만족하므로 하나만 있어도 됨{이메일, 전공}: 슈퍼키 (유일성 O, 최소성 X) -전공이 불필요함
5. 외래키 (Foreign Key, FK)
- 정의: 한 테이블의 속성 중, 다른 테이블의 기본키 (PK)를 참조하는 속성입니다.
- 목적: 테이블 간의 관계(Relationship) 를 맺고, 데이터의 참조 무결성을 보장하기 위해 사용됩니다.
- 특성:
- 참조하는 테이블의 기본키에 존재하는 값이나 NULL 값만 가질 수 있습니다.
- 외래키 값은 참조하는 테이블의 기본키와 동일한 도메인을 가져야 합니다.
- 예시: 다음과 같은 '수강' 테이블이 있다고 가정해 봅시다.
[수강 테이블]
| 수강ID | 학번 | 과목코드 | 학점 |
|---|---|---|---|
| 1 | 20241001 | CS101 | 3 |
| 2 | 20241002 | MATH201 | 3 |
| 3 | 20241001 | PHYS301 | 2 |
[학생 테이블]
| 학번 | 이메일 | 이름 | 전공 |
|---|---|---|---|
| 20241001 | kim@example.com | 김철수 | 컴퓨터공학 |
| 20241002 | lee@example.com | 이영희 | 수학 |
| 20241003 | cheolsoo@example.com | 김철수 | 수학 |
| 20241004 | choi@example.com | 최지연 | 물리학 |
여기서 학번 속성은 위 학생 테이블의 기본키인 학번을 참조하는 외래키입니다. 이를 통해 어떤 학생이 어떤 과목을 수강하는지 관계를 정의할 수 있습니다.
댓글