데이터베이스 키(Key): 슈퍼키, 후보키, 기본키, 외래키
DB물리DB 설계키
읽는데 7분 소요
처음 쓰인 날: 2025-09-22
마지막 수정일: 2026-08-28
조회수: —
요약
데이터베이스의 핵심 개념인 키(Key)의 모든 것을 알아봅니다. 키의 특성인 유일성과 최소성부터 슈퍼키, 후보키, 기본키, 대체키, 외래키의 개념과 관계를 예제와 함께 쉽게 설명하고, 정보처리기사 실기 대비 문제로 마무리합니다.
| 키 종류 | 특징 | 설명 |
|---|---|---|
| 기본키 (Primary Key) | 후보키 중 선택, Not Null | 후보키 중에서 선택된 테이블 대표 키 |
| 대체키 (Alternate Key) | 후보키 중 나머지 | 기본키로 선택되지 않은 후보키 |
| 후보키 (Candidate Key) | 유일성 O, 최소성 O | 튜플을 유일하게 식별할 수 있는 최소한의 속성 집합 |
| 슈퍼키 (Super Key) | 유일성 O, 최소성 X | 튜플을 유일하게 식별할 수 있는 속성 또는 속성들의 집합 |
| 외래키 (Foreign Key) | 다른 테이블의 기본키 참조 | 테이블 간의 관계를 정의하고 참조 무결성을 보장 |
표의 슈퍼키 '최소성 X'는 후보키와 구분하기 위한 시험용 표기입니다
슈퍼키에 최소성이 금지된다는 뜻이 아니라 최소성을 요구하지 않는다는 뜻입니다. 최소성까지 만족하는 슈퍼키는 후보키이기도 합니다. 기출에서 '유일성은 만족하지만 최소성은 만족하지 않는 키'를 물으면 답은 슈퍼키가 맞습니다.
데이터베이스 키란?
키(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) - 각 학생을 유일하게 식별{이름}: 후보키가 아님 (유일성 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 | 최지연 | 물리학 |
여기서 학번 속성은 위 학생 테이블의 기본키인 학번을 참조하는 외래키입니다. 이를 통해 어떤 학생이 어떤 과목을 수강하는지 관계를 정의할 수 있습니다.
정보처리기사 실기 대비 문제
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.