슈퍼 키란 무엇인가?
슈퍼 키(Super Key)는 관계형 데이터베이스(RDBMS)에서 튜플(tuple), 즉 엔티티 집합(entity set) 안의 하나의 개체를 고유하게 식별할 수 있는 단일 속성 또는 속성들의 집합을 의미합니다.
슈퍼 키는 후보 키(Candidate Key)의 상위 집합(superset)입니다. 후보 키는 슈퍼 키들 가운데에서 선택되기 때문인데, 이는 곧 '모든 후보 키는 슈퍼 키이지만, 모든 슈퍼 키가 후보 키가 되는 것은 아니다'라는 의미이기도 합니다.
슈퍼 키와 후보 키의 차이점
후보 키는 불필요한 속성을 하나도 포함하지 않는 최소한(minimal)의 슈퍼 키입니다. 반면 슈퍼 키는 튜플을 고유하게 식별만 할 수 있다면 어떤 속성 조합이라도 허용됩니다.
예제로 살펴보기
다음 학생(Student) 테이블 예제를 통해 슈퍼 키를 이해해 보겠습니다.
<Student>
| Student_ID | Student_Enroll | Student_Name | Student_Email |
| S02 | 4545 | Dave | ddd@gmail.com |
| S34 | 4541 | Jack | jjj@gmail.com |
| S22 | 4555 | Mark | mmm@gmail.com |
위 테이블의 슈퍼 키 목록
| {Student_ID} {Student_Enroll} {Student_Email} {Student_ID, Student_Enroll} {Student_ID, Student_Name} {Student_ID, Student_Email} {Student_Name, Student_Enroll} {Student_ID, Student_Enroll, Student_Name} {Student_ID, Student_Enroll, Student_Email} {Student_ID, Student_Enroll, Student_Name, Student_Email} |
위 테이블의 후보 키 목록
| {Student_ID} {Student_Enroll} {Student_Email} |
왜 이것들이 후보 키일까?
Student_ID, Student_Enroll, Student_Email은 각각 단독으로 모든 학생을 고유하게 식별할 수 있으며, 더 이상 줄일 수 없는 최소한의 속성이기 때문에 후보 키가 됩니다.
반면 {Student_ID, Student_Name}처럼 이미 고유 식별이 가능한 속성에 다른 속성을 덧붙인 조합은 튜플을 식별할 수 있으므로 슈퍼 키에는 해당하지만, 최소성(minimality)을 만족하지 못하므로 후보 키가 될 수 없습니다.