💡 핵심 인사이트
함수적 종속성은 테이블을 찢는 수술(정규화)을 할 때, "어떤 열(Column)들이 서로 끈끈하게 엮여서 한 몸으로 움직이는가?"를 수학적으로 판별하는 X-ray 기준점입니다.
$X \rightarrow Y$ 기호로 쓰며, **"X(주민번호) 값을 알면 Y(이름) 값이 유일하게 하나로 결정된다"**면, Y는 X에 함수적으로 종속되었다고 말합니다.


Ⅰ. 함수적 종속성(FD)의 결정 원리

중학교 수학의 함수 $y = f(x)$와 똑같습니다. $x$에 1을 넣으면 $y$가 무조건 3이 튀어나오듯, 테이블 안에서도 컬럼 X의 값에 따라 컬럼 Y의 값이 운명처럼 무조건 1개로 결정되는 관계를 찾습니다.

$X \rightarrow Y$ (X가 Y를 결정한다)

  • 결정자 (Determinant, $X$): 짱입니다. 보통 테이블의 기본 키(PK)나 유일한 값들이 이 역할을 맡습니다. (예: 학번, 주민번호)
  • 종속자 (Dependent, $Y$): 쫄따구입니다. X의 눈치만 보고 자기 값이 결정됩니다. (예: 이름, 나이)

[판별 연습]

  • 학번 $\rightarrow$ 이름: 참(True). 학번 1001번을 부르면 무조건 '김철수' 한 명만 나옵니다. (이름은 학번에 종속됨).
  • 이름 $\rightarrow$ 나이: 거짓(False). '김철수'를 불렀는데, 20살 철수도 있고 30살 철수(동명이인)도 나올 수 있습니다. 값이 유일하게 결정되지 않으므로 종속성이 없습니다.
  • {학번, 과목코드} $\rightarrow$ 성적: 참(True). 홍길동(1001)의 DB과목 점수를 부르면 A+라는 딱 1개의 성적이 나옵니다. 복합 컬럼이 결정자가 될 수도 있습니다.

Ⅱ. 종속성의 3가지 종류 (정규화의 암세포들)

테이블이 완벽하게 깨끗하려면, **"테이블 내의 모든 일반 컬럼(Y)들은 오직 기본 키 전체(X)에만 100% 맹목적으로 충성(종속)해야 한다"**는 법칙이 있습니다. 이를 배신하는 아래의 나쁜 종속성들이 바로 앞서 배운 이상 현상(Anomaly)을 일으키는 주범입니다.

  1. 완전 함수 종속 (Full Functional Dependency) ➔ ★착한 놈
    • 쫄따구(성적)가 기본 키 전체({학번, 과목코드})에 완벽히 충성하는 아름다운 상태.
    • 학번만 알거나 과목코드 하나만 알아서는 성적을 절대 알 수 없고, 반드시 두 개가 뭉쳐야만 값이 결정될 때를 말합니다.
  2. 부분 함수 종속 (Partial Functional Dependency) ➔ ☠️ 나쁜 놈 (제2정규형의 적)
    • 기본 키가 복합키 {학번, 과목코드}인데, 테이블 끄머리에 뜬금없이 학생 이름 컬럼이 들어있습니다.
    • 학생 이름은 복합키 전체의 눈치를 보지 않고, 오직 {학번} 하나에만 종속되어(눈치를 보고) 결정됩니다. **기본 키의 일부분에만 충성하는 배신자(부분 종속)**입니다.
  3. 이행적 함수 종속 (Transitive Functional Dependency) ➔ ☠️ 나쁜 놈 (제3정규형의 적)
    • 꼬리에 꼬리를 무는 삼각관계입니다. $X \rightarrow Y$ 이고, $Y \rightarrow Z$ 인 상태.
    • 예: 사번(X) -> 부서코드(Y)이고, 부서코드(Y) -> 부서위치(Z)입니다. 결과적으로 사원이 강남에 있다는 것($X \rightarrow Z$)이 간접적으로(이행적으로) 결정됩니다.
    • 부서위치(Z)가 짱인 사번(X)에게 직통으로 충성하지 않고, 중간 보스인 부서코드(Y)에 충성하는 불순한 상태입니다.

📢 섹션 요약 비유: 함수적 종속성은 군대의 **'지휘 계통(보고 체계)'**입니다. 소대원(종속자 Y)은 반드시 소대장(결정자 X)의 명령 하나에만 움직여야 정상적인 부대(완전 함수 종속)입니다. 그런데 소대원이 옆 소대 부반장(일부 키) 명령을 따르거나(부분 종속), 분대장이 소대장을 건너뛰고 맘대로 지시하면(이행적 종속), 군대(테이블)가 엉망이 되며 이상 현상이라는 항명 사태가 벌어집니다.