이행적 종속성에 대해 #

테이블 내의 비주요 속성이 다른 비주요 속성에 대해 함수적으로 종속되지 않아야 합니다.

예시 #

아래와 같은 학생 테이블이 있다고 하겠습니다.

학생 테이블 (Students) #

학생 ID 학생 이름 학과 ID 학과 위치
1001 홍길동 D01 A123
1002 김철수 D02 B221
1003 이영희 D01 C231
  • 학생 ID는 PK로 주요 속성입니다.
  • 나머지는 모두 비주요 속성입니다.

함수적 종속성 관계를 확인해보겠습니다.

  • 학생 ID -> 학생 이름: 학생 ID는 각 학생에 대해 고유한 식별자입니다. 학생 이름을 결정합니다. (학생 ID로 학생 이름을 찾을 수 있음)
  • 학생 ID -> 학과 ID: 학생은 특정 학과에 소속되어 있으므로 학생 ID를 통해 학과 ID를 알 수 있습니다.
  • 학생 ID -> 학과 이름, 학과 위치: 학과 ID와 같은 이유로 학생 ID를 통해 학과의 이름과 위치를 알 수 있습니다.

학과 이름과 학과 위치는 학생ID에 이행적으로 종속됩니다. (Transitive dependency)

학생ID -> 학과ID -> 학과 이름, 학과 위치의 관계가 있습니다.

학생 ID를 알면 학과 ID를 알 수 있고 학과 ID를 알면 학과 위치를 알 수 있습니다.

결과적으로 학생 ID는 학과 ID에 종속된다고 볼 수 있습니다.

이를 정리하면

A -> B, B -> C 일 때

A -> C임을 알 수 있습니다.