데이터베이스 함수 종속성(Functional Dependency)

DB
읽는데 6분 소요
처음 쓰여진 날: 2025-09-21
마지막 수정일: 2025-09-21

요약

데이터베이스 정규화의 핵심 개념인 함수 종속성에 대해 알아봅니다. 완전 함수 종속, 부분 함수 종속, 이행 함수 종속의 개념과 구체적인 예시를 통해 정규화 과정을 이해해봅니다.

함수 종속성(Functional Dependency)이란?

정규화를 이해하기 위해선 함수 종속성 개념을 먼저 알아야 합니다.

어떤 릴레이션에서 속성 A의 값이 속성 B의 값을 유일하게 결정할 때, "속성 B는 속성 A에 함수적으로 종속된다"고 말하며, A → B로 표기합니다. 여기서 A를 결정자(Determinant), B를 종속자(Dependent) 라고 합니다.

함수 종속성의 유형

완전 함수 종속 (Full Functional Dependency)

기본키 전체에 대해서만 종속되며, 기본키의 일부에는 종속되지 않는 경우입니다. 제2정규형(2NF)의 핵심 개념입니다.

완전 함수 종속
완전 함수 종속은 누가 어디에 사는지 알고 싶을때 해당합니다. 기본키가 아파트 단지, 동, 호수일때, 김철수가 사는 곳을 알려면 단지, 동, 호수가 전부 필요하죠.

부분 함수 종속 (Partial Functional Dependency)

기본키의 일부 속성에 종속되는 경우입니다. 이는 2NF에서 제거되어야 하는 종속성입니다.

부분 함수 종속 감자
부분 함수 종속은 아파트 관리인이 어느 단지를 관리하고 있는지 알고 싶을때 해당합니다. 기본키가 아파트 단지, 동, 호수일때, 아파트 관리인이 관리하는 단지를 알기 위해선 단지만 알면 그만입니다.

이행 함수 종속 (Transitive Functional Dependency)

A → B이고 B → C일 때, A → C가 성립하는 관계입니다. 제3정규형(3NF)의 핵심 개념입니다.


함수 종속성 예시

1. 기본적인 함수 종속성

학번이름입학년도
13-1001김철수2013
14-1002이영희2014
12-1003박민준2012
  • 학번 → 이름 : 학번이 결정되면 이름이 유일하게 결정됩니다.(학번 = 결정자, 이름 = 종속자)
  • 학번 → 입학년도 : 학번 앞 2자리가 입학년도(20xx년의 뒤 2자리)를 나타내므로 유일하게 결정됩니다.(학번 = 결정자, 입학년도 = 종속자)

2. 완전 함수 종속 vs 부분 함수 종속

[수강 테이블 - 기본키: (학번, 과목코드)]

학번과목코드과목명교수명성적
13-1001CS101자료구조김교수A+
13-1001CS202알고리즘이교수A0
14-1002CS101자료구조김교수B+
  • 완전 함수 종속: (학번, 과목코드) → 성적 - 기본키 전체에 종속
  • 부분 함수 종속: 과목코드 → 과목명, 과목코드 → 교수명 - 기본키 일부(과목코드)에만 종속

문제점: 부분 함수 종속으로 인해 이상 현상이 발생할 수 있습니다.

3. 이행 함수 종속

[학생 테이블]

학번이름학과코드학과명
13-1001김철수CS컴퓨터과학
14-1002이영희EE전자공학
12-1003박민준CS컴퓨터과학

함수 종속 관계:

  • 학번 → 학과코드 (기본키인 학번이 학과코드를 결정)
  • 학과코드 → 학과명 (학과코드가 학과명을 결정)
  • 이행 함수 종속: 학번 → 학과명 (학번 → 학과코드 → 학과명)

문제점: 이행 함수 종속으로 인해 데이터 중복과 이상 현상이 발생할 수 있습니다.


함수 종속성과 정규화

함수 종속성은 각 정규형에서 다음과 같이 활용됩니다:

  • 2NF: 부분 함수 종속을 제거하여 완전 함수 종속만 남김
  • 3NF: 이행 함수 종속을 제거
  • BCNF: 모든 결정자가 후보키가 되도록 함

연습 문제

문제
속성 A의 값이 속성 B의 값을 유일하게 결정할 때, 이를 기호로 어떻게 표현하는가?
답변
정답정답 보기
문제
기본키 전체에 대해서만 종속되며, 기본키의 일부에는 종속되지 않는 함수 종속성을 무엇이라고 하는가?
답변
정답정답 보기
문제
A → B이고 B → C일 때, A → C가 성립하는 함수 종속성을 무엇이라고 하는가?
답변
정답정답 보기
문제
함수 종속성에서 다른 속성의 값을 결정하는 속성을 무엇이라고 하는가?
답변
정답정답 보기
기출
문제
다음 테이블을 보고 빈칸을 영어로 채우시오. [수강 테이블 - 기본키: (학생, 학과)]
학생학과성적학년학과교수
김정보무역학과351이교수
김정보경영학과601박교수
이실기경영학과853박교수
강저리컴퓨터학과944최교수
강저리영문학과754김교수
성적은 (학생,학과)에 대해서 ( 1 ) Functional Dependency이다. 학과교수는 학과만 알아도 식별이 가능하므로, 이 경우에는 학과교수 속성은 기본키에 ( 2 ) Functional Dependency이다. 테이블에 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 성립되고, X→Z가 성립되면 ( 3 ) Functional Dependency라고 한다.
보기
답변
1:
2:
3:
정답정답 보기