슈퍼키, 후보키, 기본키
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)
라고 할 수 있겠다.
댓글 없음:
댓글 쓰기