함수적 종속(Functional Dependency)

김무연·2024년 6월 17일

함수적 종속

'데이터베이스의 릴레이션 R(테이블)에서 X와 Y를 R의 부분집합이라고 할 때, X의 값 각각에 대해 Y의 값이 오직 하나로 결정 될때 Y는 X에 종속 된다고 한다.'

사전적 정의는 위와 같다. 간단히 풀어보면 테이블의 값(x)가 다른 필드의 값인(y)를 결정하는 관계를 함수 종속이라고 할 수 있다. 그렇다면 여기서 왜 함수적 이라는 말이 붙었느냐

우리가 배운 y=f(x)라는 함수의 관계와 유사하기 때문이다. y=f(x)에서도 f(x)함수에서 x의 값에 따라 y의 값이 결정이 되기 때문이다. 이 때 x를 결정자라고 하며 y를 종속자라고 한다.

정규화가 잘 된 테이블일수록 결정자 x는 pk(기본키)로 한 개이며 종속자가 여러개인 구조를 가진다. 이를 기호로 표현하면 x -> y가 된다.

위와 같은 테이블이 있다고 가정하고 예시를 들어 설명하자면, 위 테이블에서 pk(기본키)는 학번이다. 여기서 학번을 알게되면 이름, 나이, 성별...등의 나머지 모든 컬럼들을 알 수 있다. 왜냐하면 학번은 고유한 값이며, 고유한 값을 바탕으로 하는 나머지 컬럼들의 연관된 정보가 나오기 때문이다.

위와 같은 함수적 종속에는 완전 함수적 종속, 부분 함수적 종속, 이행 함수적 종속이 있다.

1) 완전 함수적 종속

완전 함수적 종속이란, 종속자 즉 모든 컬럼들이 기본키에만 종속된 상태를 뜻한다. 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우이다.

위의 테이블 예시에서 회원번호가 pk이다. 이 테이블에서 '이름', '나이', '거주지역' 속성(컬럼)은 기본키인 '회원번호'를 알아야 식별가능하다. 따라서 '이름', '나이', '거주지역' 은 '회원번호'에 완전 함수 종속된 관계가 된다.

만약 기본키가 하나가 아닌 두 개 이상이라면, 기본키 모두를 알아야 식별 가능한 컬럼은 완전 함수적 종속 관계가 되는 것이다.

2) 부분 함수적 종속

부분 함수적 종속은, 테이블에서 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러개일 경우 기본키를 구성하는 속성 중 일부만 종속되는 경우이다.

위와 같은 테이블에서 고객id와 제품코드가 기본키로 지정되어 있지만, '주문상품'같은 경우는 고객id를 모르고 제품코드만 알아도 식별이 가능하다. 이와 같은 경우일 때 주문상품 속성은 기본키에 부분 함수 종속된 관계를 뜻한다.

3) 이행적 함수 종속

테이블에서 x,y,z 속성이 있을 대, x->y, y->z 란 종속 관계가 있을 경우, x->z가 성립될 때 이행적 함수 종속이라고 한다. 즉 x를 알면 y를 알고 이를 기반으로 z를 알 수 있는 경우가 된다.

위의 테이블 예시에서 상품번호를 알게되면 소분류를 알 수 있게 되고, 소분류를 바탕으로 대분류 까지 알 수 있게 된다. 이 때 대분류는 소분류에 의해 관계되는 항목이지만, 상품번호를 통해 상품번호 -> 소분류 -> 대분류 로 귀속되어 있다. 이러한 관계를 이행적 함수 종속이라고 한다.

참고문헌 https://dodo000.tistory.com/20

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글