Super Key란? #
Super Key는 테이블의 각 행(레코드)을 고유하게 식별 할 수 있는 하나 이상의 속성(열, attribute)의 조합입니다. 테이블에서 각 행을 유일하게 식별하는 데 필요한 모든 정보를 포함합니다.
특징 #
- unique(유일성): Super Key는 모든 행을 유일하게 식별 할 수 있기 때문에 unique합니다.
- redundancy(과잉성): Super Key는 필요 이상의 속성을 포함할 수 있기 때문에 최소성을 만족하지 않을 수 있습니다.
유일성의 예 #
학생 ID | 이름 | 연락처 | 주소 |
---|---|---|---|
001 | 김영희 | 010-1234-5678 | 서울시 강남구 |
위 테이블에서 학생 ID는 Super Key이자 Primary key입니다. 이는 유일성을 가지는 key입니다.
과잉성의 예 #
학생 ID | 이름 | 연락처 | 주소 |
---|---|---|---|
001 | 김영희 | 010-1234-5678 | 서울시 강남구 |
002 | 이철수 | 010-2345-6789 | 부산시 해운대구 |
003 | 박지민 | 010-3456-7890 | 대구시 중구 |
위 테이블에서 과잉성의 예를 위해 학생 ID, 이름, 연락처, 주소를 Super Key로 잡아보겠습니다.
(당연하게도 학생 ID만으로 각 튜플을 조회 가능합니다.)
SELECT * FROM Students
WHERE StudentID = '001' AND Name = '김영희' AND Contact = '010-1234-5678' AND Address = '서울시 강남구';
이렇게 분별을 위해 과잉하게 key를 잡는 것을 의미합니다.
다른 키와의 관계 #
-
Candidate Key: Super Key에서 불필요한 속성을 제거, 최소성을 만족하는 key를 Candidate key라고 합니다. 테이블을 유일하게 식별할 수 있는 가장 작은 속성의 집합입니다.
- 그냥 key라고도 합니다.
-
Primary Key: Candidate Key에서 선택된 주 Key입니다. 각 행을 고유하게 식별하는데 사용됩니다.
key들의 관계를 정리하면 아래와 같습니다.
결론 #
- Primary keys는 Candidate keys의 부분집합이다.
- Candidate keys는 Super Keys의 부분집합이다.