# [데이터베이스] 함수적 종속

## 함수적 종속이란

어떤 릴레이션 R이 있다고 하고 X와 Y를 각각 속성의 부분집합이라 가정한다.

이때 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 따라 Y의 값이 달라진다면, Y는 X에 함수적 종속이라고 한다.

이 경우, X를 결정자, Y를 종속자라 한다. (X -> Y)

함수적 종속관계에는 완전 함수적 종속, 부분 함수적 종속, 이행적 함수 종속이 있다.

### 완전 함수 종속

- 종속자가 기본키에만 종속된다.

- 기본 키가 여러 속성으로 구성되어 있을 경우, 기본 키를 구성하는 모든 속성이 포함된 기본 키의 부분 집합에 종속된다.

### Example

| $사원 번호$ | 이름 | 성별 | 나이 |
| --- | --- | --- | --- |
| A01 | 홍길동 | 남 | 20 |
| A02 | 김철수 | 남 | 23 |
| A03 | 이영희 | 여 | 24 |
| A04 | 이영희 | 여 | 29 |

위의 테이블에서 사원 번호를 알면 이름, 성별, 나이를 모두 식별할 수 있다. 하지만, 이름을 안다고 해서, 사원 번호, 성별, 나이를 모두 식별할 수 없다.

따라서, 다른 모든 속성은 사원 번호라는 기본키에 완전 함수 종속되어있다.

### 부분 함수 종속

- 기본키가 복합 키일 때, 기본키를 구성하는 속성 중 일부에게 종속된 경우를 부분 함수 종속이라 한다.

### Example

| $상품 ID$ | $고객 ID$ | 주문 상품 | 수량 | 가격 |
| --- | --- | --- | --- | --- |
| A01 | C01 | 휴대폰 | 1 | 100 |
| A02 | C02 | 노트북 | 2 | 300 |
| A01 | C04 | 휴대폰 | 2 | 200 |
| A03 | C02 | 게임기 | 3 | 500 |

위의 테이블에서 `(상품 ID, 고객 ID) -> 주문 상품`도 성립하지만, `상품 ID -> 주문 상품` 도 성립한다.

이와 같이 기본 키를 구성하는 속성 중 일부인 `상품 ID`에게 `주문 상품`이 종속된 경우를 부분 함수 종속이라 한다.

### 이행적 함수 종속

- 릴레이션 R에서 X, Y, Z 3개의 속성이 있다고 하자.

- X -> Y, Y -> Z의 종속 관계가 있을 경우 X -> Z가 성립할 때, 이행적 함수 종속이라 한다.

### Example

| $상품 ID$ | 상품 | 소분류 | 대분류 |
| --- | --- | --- | --- |
| A01 | 아이폰 15 | 아이폰 | 휴대폰 |
| A02 | 갤럭시 노트 | 갤럭시 | 휴대폰 |
| A01 | 아이패드 프로 | 아이패드 | 태블릿 |
| A03 | 씽크패드 노트북 T480 | 씽크패드 | 노트북 |

위의 테이블에서 `상품 ID -> 소분류`, `소분류 -> 대분류`와 동시에 `상품 ID -> 대분류`가 성립한다.
이때 이행적 함수 종속이라 한다.

## References

[https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%EC%A2%85%EC%86%8D](https://ko.wikipedia.org/wiki/%25ED%2595%25A8%25EC%2588%2598_%25EC%25A2%2585%25EC%2586%258D)
[https://dodo000.tistory.com/20](https://dodo000.tistory.com/20)
[https://developer111.tistory.com/8](https://developer111.tistory.com/8)

For the site tree, see the [root Markdown](https://slashpage.com/koa.md).
