오래 못 할 짓 하지 않기

[ 데이터베이스 ] 21. Functional Dependency (FD : 함수 종속) 본문

3학년 1학기/데이터베이스(DB)

[ 데이터베이스 ] 21. Functional Dependency (FD : 함수 종속)

쫑알bot 2024. 2. 8. 01:26
728x90

Functional Dependency

: 한 테이블에 있는 두 개의 Attributes 집합 사이의 제약

 

 

Employee table에 6개의 Attribute가 있다고 해보자.

이걸 2개의 집합으로 나눠보자

 

 

특징 : 두 Tuple의 X값이 같다면, Y값도 같다. (당연함)

 

이렇게 X값에 따라 Y의 값이 유일 (Unique) 하게 결정될 때

= [  X가 Y를 함수적으로 결정한다. ] (functionally determin)

= [  Y가 X를 함수적으로 의존한다. ] (functionally dependent)

이러한 제약 관계를 Functional dependency 라고 한다.


 

 

 

이름 → 생일 이렇게 둘 다 서로에게 고유한 값을 갖는다고 FD라고 생각하면 안된다.

동명이인이 올 수 있기 때문이다. 

 

 

따라서 Tuple을 보고 판단하기보단 Schema를 보고 의미적으로 판단해야한다.

 



 

이렇게 한 부서에만 속하는 회사에서 위와 같이 Attribute를 만들면 Dept_id도 같이 Y에 포함시킬 수 있다.

하지만, 직원이 하나 이상의 부서에 속한다면 X에 대해 여러 Y가 대응하므로 Dept_id를 포함시키는 건 옳지 않다.

 


 

 

 

 

역이 성립 할 수도 안 할 수도

 

앞에 있는 예시 ) 동명이인이 있을 수 있기 때문에 X ,

뒤에 있는 예시 ) 주민등록번호는 고유하므로 O 

 

 


(Non) Trivial FD

 

 

● Trivial

i) X → Y이고

ii) Y가 X의 부분집합이라면

 

결과) X→ Y는 Trivial Functional Dependency라고 한다.

 

 


● Non - trivial

i) X → Y이고

ii) Y가 X의 부분집합이 아니라면

 

결과) X→ Y는 Non Trivial Functional Dependency라고 한다.

 

특징 ) 부분집합이라도 있다? -> non-trivial FD

  공통인 게 하나도 없다? -> completely까지 붙일 수 있음 --> completely non-trivial FD

 

 

 


● Partial FD

i) X → Y이고

ii) 하나의 X의 Proper subset인 X'가 Y를 결정할 때

 

결론) X→ Y는 Partial FD라고 한다.

 

 

Proper subset 이란? 

= 최소 하나의 Attirbute라도 제거되어 있는 부분집합

 


● Full FD

i) X → Y이고

ii) 모든 X의 Proper subset인 X'가 Y를 결정하지 않을 때

 

결론) X→ Y는 Full FD라고 한다.

 

 

 

둘 중에 하나만 혼자 있어도 Grade를 결정하지 못함

학번으로 하자니 여러 수업을 들어서 하나 지정을 못함.

 

수업을 하자니 누구 한 명 점수를 지정 못

(출처)

유튜브 쉬운코드