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

DBMS 기능적 종속성(Functional Dependency) 개념부터 종류까지 총정리


기능적 종속성(Functional Dependency)이란?

DBMS에서 기능적 종속성(Functional Dependency)은 말 그대로 테이블 내 속성(Attribute)들 사이에 서로 의존하는 관계를 뜻합니다. 관계형 데이터베이스 모델의 창시자인 E. F. Codd가 도입한 이 개념은 데이터 중복(Data Redundancy)을 방지하고, 잘못 설계된 스키마를 파악하는 데 핵심적인 역할을 합니다.

개념을 확실히 이해하기 위해 속성 A와 B를 가진 릴레이션 P가 있다고 가정해 보겠습니다. 기능적 종속성은 화살표(->) 기호로 표현하며, 다음과 같이 나타냅니다.

A -> B

위 표기는 다음을 의미합니다.

  • 속성 A의 값을 알면 속성 B의 값을 유일하게 결정할 수 있습니다.
  • 이때 A를 결정자(Determinant), B를 종속자(Dependent)라고 부릅니다.

예시로 이해하기

기능적 종속성을 더 쉽게 이해하기 위해 간단한 예를 들어 보겠습니다.

두 개의 속성을 가진 <Department>(부서) 테이블이 있다고 가정합니다.

DeptId = 부서 ID
DeptName = 부서 이름

DeptId는 기본 키(Primary Key)입니다. 여기서 DeptIdDeptName 속성을 고유하게 식별합니다. 부서 이름을 알고 싶다면 먼저 해당 부서의 ID를 알아야 하기 때문입니다.

DeptIdDeptName
001재무(Finance)
002마케팅(Marketing)
003인사(HR)

따라서 DeptIdDeptName 사이의 기능적 종속성은 다음과 같이 표현할 수 있습니다.

DeptId -> DeptName

즉, DeptId 값이 정해지면 그에 대응하는 DeptName 값이 하나로 결정되므로, "DeptName은 DeptId에 함수적으로 종속된다"라고 말할 수 있습니다.

기능적 종속성의 종류

기능적 종속성은 크게 세 가지 형태로 나눌 수 있습니다.

  • 자명한 기능적 종속성(Trivial Functional Dependency)
  • 비자명한 기능적 종속성(Non-Trivial Functional Dependency)
  • 완전 비자명한 기능적 종속성(Completely Non-Trivial Functional Dependency)

각각의 개념을 하나씩 살펴보겠습니다.

1. 자명한 기능적 종속성(Trivial FD)

A -> B 관계에서 B가 A의 부분집합(subset)인 경우를 자명한 기능적 종속성이라고 합니다.

A -> B (B ⊆ A)

예시

앞서 사용한 <Department> 테이블로 자명한 종속성을 이해해 보겠습니다. 아래 종속성은 DeptId가 {DeptId, DeptName}의 부분집합이므로 자명한(trivial) 기능적 종속성입니다.

{ DeptId, DeptName } -> DeptId

이처럼 화살표 오른쪽 속성이 이미 왼쪽 집합에 포함되어 있으면, 별도의 정보 없이도 당연히 성립하기 때문에 '자명하다'고 표현합니다.

2. 비자명한 기능적 종속성(Non-Trivial FD)

A -> B 관계에서 B가 A의 부분집합이 아닌 경우를 비자명한 기능적 종속성이라고 합니다.

A -> B (B ⊄ A)

예시

DeptId -> DeptName

위 종속성은 DeptNameDeptId의 부분집합이 아니므로 비자명한(non-trivial) 기능적 종속성입니다. 실제 데이터베이스 설계에서 정규화(Normalization)를 논할 때 주로 다루어지는 것이 바로 이 비자명한 종속성입니다.

3. 완전 비자명한 기능적 종속성(Completely Non-Trivial FD)

A -> B 관계에서 A와 B의 교집합이 공집합인 경우를 완전 비자명한 기능적 종속성이라고 합니다. 즉, A와 B 사이에 겹치는 속성이 전혀 없을 때 성립합니다.

A -> B (A ∩ B = ∅)

암스트롱 공리(Armstrong's Axioms)

암스트롱 공리는 1974년 William Armstrong이 기능적 종속성을 추론하기 위해 체계적으로 정립한 규칙입니다. 다음 조건들이 만족될 때 참이 되는 대표적인 규칙은 아래와 같습니다.

  • 이행성(Transitivity)
    A -> B이고 B -> C이면, A -> C가 성립합니다. 즉, 전이적인 관계가 유지됩니다.
  • 반사성(Reflexivity)
    B가 A의 부분집합이면, A -> B가 성립합니다.
  • 증대성(Augmentation)
    A -> B이면, AC -> BC가 성립합니다. 종속성의 양변에 동일한 속성을 추가해도 관계는 그대로 유지됩니다.

이러한 공리는 후보 키(Candidate Key)를 도출하거나 정규화 과정에서 종속성을 추론할 때 중요한 이론적 기반이 됩니다.