CS/Database

[DB] Super key, Candidate key, Primary key란

@~@ 2024. 3. 31. 18:26

1. Super key

Super key는 데이터에 관계에서 tuple을 유일하게 식별할 수 있는 속성의 집합이다. 

 

2. Candidate key

Candidate key는 Super key 중 minimal한 집합을 의미한다. 여기서 minimal이란 속성의 개수가 적다는 것을 의미하는 것이 아니다. minimal은 key의 unique를 유지하면서 가장 적은 속성을 의미한다. 예를 들어 아래와 같은 예시가 있다고 하자.

  • MyStudent(student-id, name, national-id, address, phone)

여기에서 student-id와 national-id는 학생들을 구별할 수 있는 unique한 키다.

 

이 때 나올 수 있는 Super key는

- (student-id), (student-id, name), (studient-id, name, address)

- (national-id), (national-id, name), (national-id, address, phone)

- (student-id, national-id), (student-id, national-id, name)... 등이 있다.

 

이 중 Candidate key가 될 수 있는 것은

- (student-id)

- (national-id)

이다. (Candidate key는 여러 개가 될 수 있다.)

 

(student-id, national-id)가 Candidate key가 될 수 없는 이유는 minimal하지 않기 때문이다. 다시 말해, student-id와 national-id 중 하나를 없애도 계속 값이 unique하기 때문에 (student-id, national-id)는 Candidate key가 될 수 없다.

 

3. Primary key

만약 Candidate key가 하나 이상 존재한다면 DB 설계자는 그 중 하나를 Primary key로 지정할 수 있다.