함수적 종속성 (FD, Functional Dependency)

 

함수적 종속성(FD, Functional Dependency)

함수적 종속성이란?

함수적 종속성이란, 테이블 내에서 한 속성 X 값에 따라 다른 속성 Y의 값이 유일하게 결정이 될 때 “X가 Y를 함수적으로 결정한다.”라고 표현한다.

반대로 "Y가 X에 함수적으로 종속된다."라고 표현할 수 있고 이는 테이블 내의 어떤 두 행에서 X의 값이 같다면 Y의 값도 반드시 같아야 한다는 것을 의미한다.

 

https://velog.io/@rudy91/Functional-Dependency-%ED%95%A8%EC%88%98%EC%A2%85%EC%86%8D%EC%84%B1-DB

 

이러한 두 값 사이의 제약 관계를 functional dependency(FD)라고 부른다.

 

사용자 테이블을 예시

                            ID                           이름                          주소
                             1                          김철수                    서울시 강남구
                             2                          김짱구                    서울시 서초구
                             3                          김맹구                    서울시 송파구

 

현재 테이블은 ID값에 따라 이름과 주소가 결정이 되기 떄문에 집합 X { ID }가 집합 Y { 이름, 주소 }를 결정한다고 볼 수 있고 이것을 FD라고 한다.

 

주의할 점

X -> Y 는 성립하여도 그 역인 Y -> X는 성립하지 않는다.  (= X가 Y를 결정한다고 해서 Y가 X를 결정하지는 않는다.)

 

예를 들어 ID가 1이면 사용자 이름(김철수)와이름(김철수)과 주소(서울시 강남구)를 결정하지만 반대로 이름(김철수)과 주소(서울시 강남구)가 ID 1을 결정하지는 않는다.

 

여러 ID에서 같은 이름과 주소를 가진 다른 사용자가 있을 수 있기 때문에 반대 관계는 성립하지 않는다.

 

함수적 종속성 종류

부분 함수적 종속성 (Partial functional dependency)

X가 Y를 결정하는 함수적 종속성이 존재하는 경우, X와 동일하지 않은 X의 부분 집합(proper subset)이 Y를 결정할 수 있을 때, X와 Y의 관계를 부분 함수적 종속성이라고 한다.

 

예를 들어 { ID, 전화번호 }가 { 생년월일 } 을 결정할 때 { ID } 만으로도 { 생년월일 }을 결정할 수 있기 때문에 부분 함수적 종속성이라고 한다.

 

X와 동일하지 않은 X의 부분 집합(proper subset) 이란?

X의 집합이 { ID, 주소, 전화번호 } 으로 이루어질 때, X와 동일하지 않은 부분 집합은 { ID, 주소 }, { ID, 전화번호 }, { 주소 } … 가 모두 X의 부분 집합이다. 하지만 { ID, 주소, 전화번호 } 는 X의 부분 집합이 아니다.

 

완전 함수적 종속성 (Full functional dependency)

X가 Y를 결정하는 함수적 종속성이 존재하는 경우, X의 어떤 proper subset도 Y를 결정하지 못할 때, Y는 X에 완전 함수적으로 종속된다고 한다.

 

예를 들어 { 이름, 전화번호 }가 { 주소 }을 결정하는 함수적 종속성이 있을 때, { 이름 }, { 전화번호 }만으로는 { 주소 }를 결정하지 못하기 때문에 완전 함수적 종속성이라고 한다.

 

 

이행적 종속성 (transitive dependency)

이행적 종속성은 X가 Y에 함수적으로 종속되고, Y가 Z에 함수적으로 종속되는 경우, X가 Z에 간접적으로 종속되는 관계를 의미한다.

즉, X → Y와 Y → Z이면, X → Z가 이행적으로 성립이 된다.

 

이행적 종속성은 3차 정규화를(3NF)을 만족하기 위해 제거해야 하는 종속성 유형이다.

 

예를 들어 { ID }가 { 이름 }을 결정하고 { 이름 }이 { 카드번호 }을 결정할 때, { ID }가 { 카드번호 }을 결정하는 경우 ID는 카드번호에 이행적으로 종속된다고 말한다.