[DB] Closure of Functional dependencies

G·2023년 5월 4일
0

DB

목록 보기
9/11
post-thumbnail

F+F^+를 구하는 방법을 자세하게 알아보자.

Armstrong's Axioms

F+F^+를 구하기 위한 암스트롱의 공리를 알아보자. 이 공리를 계속해서 적용하면 F+F^+를 구할 수 있다.

  • if βα\beta \subseteq \alpha, then αβ\alpha \rightarrow \beta (reflexvity)
  • if αβ\alpha \rightarrow \beta, then γαγβ\gamma\alpha \rightarrow \gamma\beta (augmentation)
  • if αβ\alpha \rightarrow \beta, and βγ\beta \rightarrow \gamma, then αγ\alpha \rightarrow \gamma (transivity)

이 공리들을 적용한 함수 의존성 F에 적용한 결과들은 항상 이다. 함수 의존성 집합 F가 가지는 것들에서만 파생된다. 또한 F가 가질 수 있는 모든 경우의 수를 보일 수 있다.(trivial한 것도 포함한다.)

Algorithm


간단하다. F에 대해 reflexity와 augemntation을 모두 적용하고, 이에 대해 transivity를 적용한다. 이를 계속해서 반복하여 F가 변하지 않을때 알고리즘은 종료된다.
알고리즘의 최악의 경우에 약 22n2^{2n}만큼 소모된다.(시간 복잡도 O(22n)O(2^{2n}))

Additional rules

F+F^+를 구하기 위한 추가적인 rule은 다음과 같다.

  • if αβ\alpha \rightarrow \beta holds and αγ\alpha \rightarrow \gamma holds, then αβγ\alpha \rightarrow \beta\gamma holds (Union)
  • if αβγ\alpha \rightarrow \beta\gamma holds, then αβ\alpha \rightarrow \beta holds and αγ\alpha \rightarrow \gamma holds (Decomposition)
  • if αβ\alpha \rightarrow \beta holds and γβδ\gamma\beta \rightarrow \delta, then αγδ\alpha\gamma \rightarrow \delta (Pesudotransitivty)

Closure of Attribute Sets

F attribute set인 α\alphaclosureα+\alpha^+를 구할 수 있다.

여기서 closure a+a^+αβ\alpha \rightarrow \beta에서 모든 β\beta의 집합이다.


위와 같이 알고리즘이 정의되며, 모든 γ\gamma에 대해한 합집합으로 a+a^+가 정의된다.
시간 복잡도는 최악의 경우에 n2n^2가 된다.

얘네는 attribute가 superkey인지 확인할 때 사용한다.

profile
열심히 안 사는 사람

0개의 댓글