티스토리 뷰

주어진 함수 종속성 집합 F로부터 후보키를 찾아내는 방법을 알아보자.


R(A,B,C,D,E,F)가 있다.


F= {A->C , C->D, D->B , E->F}일때 이 테이블의 후보키는 무엇일까?


후보키라는 것은 최소성과 유일성을 만족하는 속성이다. 다시말해서 하나의 속성이 다른 모든 속성을 결정하면 그것이 후보키이다.

물론 암스트롱 공리를 이용해서 F로부터 모든 F+를 구해서 후보키를 알아낼수도 있겠지만 경우의수가 매우 많고, 실수할 확률도 높아지게 된다.


그렇기 때문에 Attribute Closure(속성 폐포)를 이용해서 테이블의 후보키를 구해야 한다.


위의 F에서 오른쪽에 있는 속성을 제외한 나머지 속성들이 후보키가 될 자격이 있는 키들이다. 왜냐하면 후보키는 결정되는게 아니라 결정하는 결정자이기 때문이다. 위의 예에선 오른쪽에 있는 속성들이 CDBF이므로 A와 E가 후보키가 될 자격이 있다.


AE를 결정자로 가정해보자.


(AE)+ = AE + C + D + B +F = ABCDEF

Closure of AE


AE는 AE를 결정할수 있다 (reflexivity에 의해) 또한 A가 C를 결정하고 C 는 D를 결정하고 D는 B 를 결정하고 E는 F를 결정하므로

Closure of AE는 ABCDEF가 된다.


다시말해서 AE라는 속성은 나머지 모든 속성들을 결정하는 결정자 역할을 한다. 그렇기 때문에 AE가 이 테이블에서의 후보키라고 할수있다.


A가 후보키가 아닌 이유는 E->F라는 종속성을 나타내지 못하기 때문이다.

마찬가지로 E가 후보키가 아닌 이유는 A->C C->D D->B의 종속성을 나타내지 못하기 때문이다.


진짜로 AE가 ABCDEF의 부분집합을 결정하는지 몇개만 확인해보자.


AE -> ABD를 결정하는가?

A->D , A->B이므로 A->DB이다.

또한 A->A이므로 A->ADB이다.


AE->F인가?

A->C 에서 AE->CE(Augmentation) 이고, CE->CF(Augmentation)이고, 따라서 AE->CF(Transitivity)이다. 여기서 AE->F,AE->C이다(Decomposition)


그렇기 때문에  AE->F 이다. 다른 예도 마찬가지로 암스트롱 공리를 이용하면 도출해낼수 있을것이다.


댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함