데이터베이스 설계에서 데이터를 고유하게 식별하는 “키(Key)”의 개념은 매우 중요합니다. 이 글에서는 슈퍼키(Super Key) 정의와 특징, 그리고 후보키(Candidate Key)와의 차이점을 중심으로 슈퍼키를 쉽게 이해할 수 있도록 설명하겠습니다.
슈퍼키(Super Key)란?
슈퍼키는 데이터베이스 테이블에서 각 행(Row)을 고유하게 식별할 수 있는 하나 이상의 컬럼(Column) 집합을 말합니다.
슈퍼키는 다음 조건을 충족해야 합니다:
-
유일성(Unique): 슈퍼키에 해당하는 컬럼의 조합은 테이블 내 모든 행에서 고유해야 합니다.
-
NULL 값을 허용할 수도 있지만, 특정 컬럼 집합의 조합으로 고유성을 보장할 수 있어야 합니다.
쉽게 말해, 슈퍼키는 데이터베이스 테이블의 모든 데이터를 유일하게 식별할 수 있는 컬럼 집합입니다. 이 컬럼 집합에는 불필요한 컬럼이 포함될 수도 있습니다.
슈퍼키의 특징
-
불필요한 컬럼 포함 가능
-
슈퍼키는 유일성을 만족하는 컬럼 집합이므로, 고유성을 유지하면서도 다른 불필요한 컬럼을 추가할 수 있습니다.
-
예를 들어,
학번
이 고유하다면학번 + 이름
도 슈퍼키가 됩니다.
-
-
다양한 조합 가능
-
하나의 테이블에서 여러 개의 슈퍼키가 존재할 수 있습니다.
-
-
후보키를 포함
-
모든 후보키는 슈퍼키에 속하지만, 모든 슈퍼키가 후보키는 아닙니다.
-
후보키(Candidate Key)란?
후보키는 슈퍼키 중에서도 다음 조건을 추가로 만족하는 키입니다.
-
최소성(Minimality): 고유성을 유지하는 데 필요한 최소한의 컬럼만 포함해야 합니다. 즉, 더 이상 불필요한 컬럼을 제거할 수 없습니다.
예를 들어
-
학생 테이블에서
학번
은 고유성을 만족하며, 최소한의 컬럼으로 구성되어 있으므로 후보키가 됩니다. -
하지만
학번 + 이름
은 고유성을 만족하더라도,이름
컬럼이 불필요하므로 후보키가 될 수 없습니다.
슈퍼키와 후보키의 차이점
구분 | 슈퍼키(Super Key) | 후보키(Candidate Key) |
---|---|---|
정의 | 테이블의 각 행을 고유하게 식별할 수 있는 컬럼 집합 | 슈퍼키 중에서 최소성을 만족하는 컬럼 집합 |
컬럼 수 | 불필요한 컬럼이 포함될 수 있음 | 고유성을 유지하는 데 필요한 최소한의 컬럼만 포함 |
포함 관계 | 모든 후보키는 슈퍼키에 속함 | 슈퍼키의 부분집합 |
예시 | 학번 , 학번 + 이름 , 학번 + 생년월일 |
학번 |
예제를 통해 이해하기
학생 테이블
학번 | 이름 | 생년월일 |
1001 | 김철수 | 2000-01-01 |
1002 | 이영희 | 1999-12-12 |
-
슈퍼키
-
학번
-
학번 + 이름
-
학번 + 생년월일
-
학번 + 이름 + 생년월일
-
-
후보키
-
학번
(최소성을 만족하는 유일한 컬럼 집합)
-
-
여기서,
학번 + 이름
과 같은 컬럼 조합은 슈퍼키지만, 고유성을 유지하기 위해 굳이 “이름”을 포함할 필요가 없으므로 후보키가 될 수 없습니다.
슈퍼키와 후보키의 활용
-
슈퍼키
-
데이터베이스 설계 초기 단계에서 고유성을 만족하는 모든 키의 조합을 도출하는 데 사용됩니다.
-
이후 후보키를 선정하기 위한 출발점 역할을 합니다.
-
-
후보키
-
후보키는 기본키(Primary Key)로 선택될 수 있는 키 중 하나입니다.
-
기본키는 반드시 후보키 중에서 선택되며, 데이터 무결성을 유지하는 데 중요한 역할을 합니다.
-
결론
슈퍼키는 테이블에서 데이터를 고유하게 식별할 수 있는 컬럼 집합으로, 불필요한 컬럼을 포함할 수 있습니다. 반면, 후보키는 슈퍼키 중에서 최소성을 만족하는 컬럼 집합입니다. 데이터베이스 설계 시, 슈퍼키와 후보키의 개념을 명확히 이해하고 활용하면 더욱 효율적인 데이터베이스를 구축할 수 있습니다.
RDBMS(Relational Database Management System)
[…] 슈퍼키(Super Key): 테이블 내의 각 행을 고유하게 식별할 수 있는 속성의 집합으로, 후보키를 포함합니다. […]