전이 종속성(Transitive Dependency)이란?
전이 종속성은 간접적인 관계로 인해 발생하는 함수적 종속성을 의미합니다. 하나의 속성이 다른 속성을 통해 우회적으로 결정되는 상황을 말합니다.
수식으로 표현하면 다음과 같습니다.
- P → Q 이고 Q → R 이 참일 때
- P → R 이 성립하는 종속 관계가 바로 전이 종속성입니다.
데이터베이스 설계에서 제3정규형(3NF)을 달성하려면 이러한 전이 종속성을 반드시 제거해야 합니다.
전이 종속성 예시
다음 <MovieListing> 테이블을 살펴보겠습니다.
| Movie_ID | Listing_ID | Listing_Type | DVD_Price ($) |
| M08 | L09 | Crime | 180 |
| M03 | L05 | Drama | 250 |
| M05 | L09 | Crime | 180 |
3NF 위반 원인 분석
위 테이블에는 다음과 같은 함수적 종속 관계가 존재합니다.
- Movie_ID → Listing_ID
- Listing_ID → Listing_Type
두 종속 관계가 연결되면서 아래와 같은 전이 함수적 종속성이 자동으로 발생합니다.
Movie_ID → Listing_Type
즉, Movie_ID는 Listing_ID를 거쳐 Listing_Type을 간접적으로 결정하게 됩니다. 기본키가 아닌 속성이 다른 일반 속성을 결정하는 구조이기 때문에, 이 관계는 제3정규형(3NF)을 위반하고 있습니다.
테이블 분리를 통한 해결 방법
3NF 위반을 해소하려면 테이블을 분할하여 전이 함수적 종속성을 제거해야 합니다. 위 테이블을 두 개의 독립적인 테이블로 나누어 보겠습니다.
1. <Movie> 테이블
| Movie_ID | Listing_ID | DVD_Price ($) |
| M08 | L09 | 180 |
| M03 | L05 | 250 |
| M05 | L09 | 180 |
2. <Listing> 테이블
| Listing_ID | Listing_Type |
| L09 | Crime |
| L05 | Drama |
정규화 결과
테이블을 분리한 후에는 더 이상 비주요 속성 간의 종속 관계가 존재하지 않습니다. 모든 비주요 속성이 기본키에만 직접적으로 종속되므로, 위 관계는 이제 정규화의 제3정규형(3NF)을 완전히 만족합니다.
이처럼 전이 종속성을 제거하면 데이터 중복이 줄어들고, 삽입·삭제·갱신 시 발생할 수 있는 이상 현상(anomaly)도 함께 방지할 수 있습니다.