Processing math: 100%
본문 바로가기
컴퓨터

[데이터베이스] 함수적 종속성의 적용

by skyjwoo 2020. 6. 14.
728x90
반응형

함수적 종속성의 추론 규칙

주어진 함수적 종속성으로 추가적으로 성립하는 다른 함수적 종속성들을 추론할 수 있다. 

 

암스트롱의 추론 규칙들

가장 기본이 되는 규칙이다. 이 규칙들을 바탕으로 다른 모든 추론 규칙들을 추론해 낼 수 있다. 

 

A1. 재귀성의 규칙 

YX,XY.

 

A2. 부가성의 규칙

XY,XZYZ.

 

A3. 이행성의 규칙

XY,YZ,Z.

 

위의 규칙들을 다음 릴레이션을 통해 설명해 보고자 한다. 

A B C
1 1
1 2
1 2
2 1
1 2

A1. 재귀성의 규칙은 어찌 보면 당연하다. AB(AB) A에서 t1[AB]=t2[AB]라는 말 자체에 

t1[A]=t2[A]라는 의미가 내포되어 있다. 실제로 어떤 tk[AB]를 골라도 t1[A]=t2[A], t1[B]=t2[B]가 성립함을 확인해 볼 수 있다.

 

A2. 부가성의 규칙은 말 그대로 부가적인 정보가 추가된 것이다. 

ZZ인 것은 자명하기 때문에, XY일 때,양 쪽에 Z를 추가한다고 해서 종속성이 달라지거나 하지 않는다. 

 

A3. 이행성의 규칙은 삼단 논법과 비교해 보면 쉽게 이해할 수 있다. 

 

추가적인 추론규칙들. (위의 A1~3추론 규칙들을 이용해 추론 가능하다.)

분해규칙: XYZ 이면, XY이고, XZ이다. 

이는 A1 재귀성의 규칙과 A3 이행성의 규칙을 이용하면 쉽게 증명 가능하다. 우선 재귀성의 규칙에 의해

YZZ, YZY이고, 이행성의 규칙에 의해 XY, XZ가 성립된다. 

 

합집합 규칙: XY이고, XZ이면, XYZ이다.

이는 A2부가성의 규칙과 A3 이행성의 규칙으로 증명이 가능하다. 우선 XY의 양 변에 X를 더해주고, XZ의 양 변에 Y를 더해주면, XXY, XYZY가 되고, 이를 이행성의 규칙으로 연결하면, XZY가 된다. 

 

의사 이행성 규칙: XY이고, WYZ이면, WXZ이다.

이 역시 A2 부가성의 규칙과 A3 이행성의 규칙으로 설명이 가능하다. XY에서 양 변에 W를 더해주면, WXWY가 되고 이 명제와 WYZ를 이행성의 규칙으로 연결시켜주면 된다. 

 

 

함수적 종속성 집합 F의 폐포(closure) F+

-F로부터 추론 가능한 모든 함수적 종속성들의 집합

 

-sql문으로 함수적 종속성을 검사할 수 있다. (물론 많은 연산이 필요할 것이다.)

애트리뷰트 A와 B의 함수적 종속성을 검사하려면, A와 B를 프로젝션 시켜준 후, distinct로 중복을 제거해 주고, A로 groupby한다. 이 때 grouping된 값들이 모두 하나이면, B는 A에 대해 함수적 종속성을 가진다고 할 수 있다.

 

-보통 함수적 종속성은 문제에서 주어진다. 

 

 

F 하에서 속성(attribute) 집합 X의 폐포(closure of X under F): X+

함수적 종속성 집합 F를 사용해 X에 의해 함수적으로 결정되는 모든 애트리뷰트들의 집합

 

폐포는 구하는 알고리즘이 따로 존재한다. 

함수적 종속성 집합 F가 주어졌다고 할 때, 

 

X+ := X

do

   oldX+ := X+

   for F 안에 있는 각 함수적 종속성 YZ 에 대하여

       if YX+ then X+:=X+Z

while (oldX+ != X+)

 

알고리즘 내에 이행성의 규칙이 녹아들어가 있음을 알 수 있다. 

 

예를 들어 F가 {A->B, AB->C}이고, A의 폐포를 구한다 하면,

1) 우선 X+에는 {A}가 들어있다. 

2) 첫번째 loop에서 A->B가 있고, 현재 폐포에 A가 있으니 B가 추가된다. X+ = {A, B}

3) 두번째 loop에서 AB->C가 있고, 현재 폐포에 A, B가 있으니 C가 추가된다. X+ = {A, B, C}

4) 세번째 루프에선 아무 것도 추가되지 않는다. 따라서 oldX+==X+가 되어 루프를 빠져나온다.  

 

 

 

 

 

 

 

728x90
반응형

댓글