[컴][DB] Super key, Candidate key, Primary Key

슈퍼키, 후보키, 기본키

 

image

 

 

Super key

슈퍼키Super key 는 "attribute 의 집합(set)" 이다. 어느 한 record 가 가지고 있는 super key 부분과 다른 record 가 가지고 있는 super key 를 구성하는 요소가 서로 달라야 한다. 만약 같은 값이 존재한다면 그 attribute 의 set 은 super key 라 할 수 없다.

슈퍼키는 minimal 하지 않은 녀석도 포함한다. 무슨 얘기냐 하면

학생: (주민번호, 키, 몸무게)

를 attribute 로 갖는 tuple(record) 가 있다면, 여기서 "주민번호" 만 있으면 학생을 구분할 수 있다. 하지만  ("주민번호", "몸무게") 를 하나의 key 로 만들어 쓴다고 하면, 이것은 굳이 필요 없는 "몸무게" 를 가져다 쓰는 것이기 때문에 minimal 하지 않다. 그러므로 이 녀석은 super key 이지만, candidate key 는 될 수 없다.

 

Candidate key

이 슈퍼키 중에서 가장 적은 비용(minimal)으로 각 record 를 구별할 수 있는 키를 후보키Candidate Key 라고 한다. record 의 id 가 될 수 있는 요소가 바로 Candidate key 이다. 한 개만 존재한다면 이 한 개가 바로 기본키(Primary Key)가 되는 것이다.

혹시 나처럼 혼동이 올지 몰라서 적어두는데,

FD: X --> Y

X 와 Y 가 funtional dependency(함수종속성) 관계라는 뜻은 X 라는 것에 대응되는 Y 가 하나 있다. X를 알면 Y를 알 수 있다. 가 된다.  이 X 만 유일하면 된다. X 가 가리키는 Y 는 중복이 되어도 괜찮다. 우리가 함수에 x 를 넣었을 때 일정한 값이 나오기만 하면 된다.

참고로, 이 functional dependency 를 알면, functional dependency 의 속성을 이용해서 superset 을 구하기가 용이해 진다.(ref.1 의 example 을 참고하자.)

 

Primary Key

기본키Primary Key 는 이 후보키중에 특별히 선정된 키이다.
다른 관점에서 본다면,

후보키 = 기본키(primary key) + 대체키(alternate key)

라고 할 수 있겠다.

 

References

  1. http://en.wikipedia.org/wiki/Functional_dependency
  2. http://en.wikipedia.org/wiki/Superkey

댓글 없음:

댓글 쓰기