Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

DBMS 전이 종속성(Transitive Dependency) 개념과 3NF 정규화 완벽 가이드

전이 종속성(Transitive Dependency)이란?

전이 종속성은 간접적인 관계로 인해 발생하는 함수적 종속성을 의미합니다. 하나의 속성이 다른 속성을 통해 우회적으로 결정되는 상황을 말합니다.

수식으로 표현하면 다음과 같습니다.

  • P → Q 이고 Q → R 이 참일 때
  • P → R 이 성립하는 종속 관계가 바로 전이 종속성입니다.

데이터베이스 설계에서 제3정규형(3NF)을 달성하려면 이러한 전이 종속성을 반드시 제거해야 합니다.

전이 종속성 예시

다음 <MovieListing> 테이블을 살펴보겠습니다.

Movie_IDListing_IDListing_TypeDVD_Price ($)
M08L09Crime180
M03L05Drama250
M05L09Crime180

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_IDListing_IDDVD_Price ($)
M08L09180
M03L05250
M05L09180

2. <Listing> 테이블

Listing_IDListing_Type
L09Crime
L05Drama

정규화 결과

테이블을 분리한 후에는 더 이상 비주요 속성 간의 종속 관계가 존재하지 않습니다. 모든 비주요 속성이 기본키에만 직접적으로 종속되므로, 위 관계는 이제 정규화의 제3정규형(3NF)을 완전히 만족합니다.

이처럼 전이 종속성을 제거하면 데이터 중복이 줄어들고, 삽입·삭제·갱신 시 발생할 수 있는 이상 현상(anomaly)도 함께 방지할 수 있습니다.