Closure 개념을 이용한 Super Key (후보키) 판별법

HanJaeHoon·2024년 4월 22일

문제) 다음 릴레이션에서 AB는 후보키가 될 수 있는가? 아니라면 후보키를 찾아보시오.


R(A,B,C,D,E,F) F = { A->BC (1), E -> CF(2), B->E(3), CD -> EF(4)}

  • 어떠한 테이블에서 주어진 필드의 집합이 해당 테이블의 super key인지를 판별하기 위해 closure라는 개념을 이용할 수 있다. 어떠한 테이블의 모든 필드가 주어진 필드의 집합에 대해 함수 종속이라면, 주어진 필드의 집합은 해당 테이블의 super key라고 할 수 있다. 따라서, 함수 종속성과 암스트롱의 공리, closure 개념을 이용하여 super key를 판별할 수 있다.

위에 주어진 함수 종속성을 이용하여 주어진 테이블에서 {A,B}가 super key인지를 판별하는 알고리즘은 다음과 같다.

1) 필드의 집합 Closure = {A,B} 정의

2) 위의 주어진 함수 종속성에서 (1)에 해당하는 함수 종속 관계를 통해 A->C 임을 알 수 있다.
그러므로, 필드 집합인 Closure에 C를 추가

3) 함수 종속 관계 (2)에 대해서는 해당사항 X

4) 함수 종속 관계 (3)에 의해 B->E 라는 사실을 알 수 있으므로, 총합에 E를 추가

5) 함수 종속 관계 (4)에 대해서는 해당하는 사항 없음

6-1) 총합에 변화가 있다? 2)의 과정으로 돌아가서 알고리즘 실행

6-2) 총합에 변화가 없다? 알고리즘 종료

=> 총합의 결과는 {A,B,C,E,F} D가 빠졋으니 집합 {A,B}는 후보키가 아니다.

{A,B,D}의 경우는?

1) 필드의 집합 Closure = {A,B,D}

2) (1) 을통해 총합에 C를 추가 Closure = {A,B,C,D}

3) (2)는 해당 사항 없음

4) (3)에 의해서 총합에 E를 추가 Closure = {A,B,C,D,E}

5) (4)에 의해서 총합에 F를 추가 Closure = {A,B,C,D,E,F}

6-1) 총합에 변화가 있다? 2)의 과정으로 돌아가서 알고리즘 실행

6-2) 총합에 변화가 없다? 알고리즘 종료

=> 총합에 결과는 Closure = {A,B,C,D,E,F} 이므로, ABD는 후보키이다.

후보키를 모두 찾아야하는 경우에는 어떻게 하는가?


R( A, B, C, D, E, F ) F = {AB -> D,F , A -> C ,D -> A,E}

각 함수 종속성의 좌변을 초기값으로 해서 계산을 시작

1. AB → DF

{A, B}

→ {A, B, D, F} (AB → DF)

→ {A, B, C, D, E, F} (A →C, D → AE)

2. A → C

{A}

→ {A, C} (A → C)

3. D → AE

{D}

→ {A, D, E} (D → AE)

→ {A, C, D, E} (A → C)

-> 이 문제같은 경우는 주어진 조건 내에서 바로 초기값이 나왔는데,

초기값에서 바로 안나오는 경우는 여러 종속성을 조합해서 풀어야 함

Reference


https://untitledtblog.tistory.com/125

profile
게임 개발자

0개의 댓글