함수 종속(Functional Dependency), 데이터베이스 설계에서 관계(Relation)의 속성들 간의 의존 관계를 설명하는 개념입니다. 이는 데이터베이스 정규화 과정에서 매우 중요한 역할을 하며, 데이터 중복을 줄이고 데이터 무결성을 유지하는 데 기여합니다.
정의
함수 종속성은 한 속성의 값이 다른 속성의 값을 고유하게 결정할 수 있는 관계를 의미합니다. 만약 속성 A의 값이 속성 B의 값을 고유하게 결정할 수 있다면, 이를 다음과 같이 표현합니다:
A → B
위 표현은 “A가 B를 함수적으로 결정한다” 또는 “B는 A에 함수적으로 종속된다”라고 읽습니다.
결정자와 종속자
-
결정자(Determinant): 다른 속성의 값을 결정하는 속성입니다. 위의 표현에서 A는 결정자입니다.
-
종속자(Dependent): 결정자에 의해 결정되는 속성입니다. 위의 표현에서 B는 종속자입니다.
예를 들어, 학생 테이블에서 “학번 → 이름”이 성립한다면, 학번은 결정자이고 이름은 종속자가 됩니다.
함수 종속성의 종류
완전 함수 종속성 (Full Functional Dependency)
-
정의: 속성 집합 X가 Y를 결정하는 경우, Y가 X의 진부분 집합에도 종속되지 않으면 이를 완전 함수 종속성이라고 합니다.
-
예시
-
X = {학번, 과목코드}, Y = {점수}
-
학번과 과목코드 모두가 있어야 점수를 결정할 수 있는 경우.
-
부분 함수 종속성 (Partial Functional Dependency)
-
정의: X → Y 관계에서, Y가 X의 진부분 집합에도 종속되는 경우.
-
문제점: 부분 함수 종속성은 데이터 중복을 초래하므로 정규화를 통해 제거해야 합니다.
이행적 함수 종속성 (Transitive Functional Dependency)
-
정의: X → Y, Y → Z가 성립할 때, X → Z도 성립하는 경우.
-
문제점: 이행적 종속성은 데이터 무결성을 손상시킬 수 있어 정규화를 통해 해결해야 합니다.
함수 종속성의 검증
함수 종속성을 검증하려면 다음과 같은 과정을 거칩니다:
-
주어진 릴레이션에서 속성 간의 관계를 분석합니다.
-
특정 속성의 값이 다른 속성을 유일하게 결정할 수 있는지 확인합니다.
-
종속성이 불필요하거나 데이터 중복을 초래하는 경우, 정규화를 고려합니다.
함수 종속성과 정규화
함수 종속성은 정규화 과정에서 사용됩니다. 정규화는 데이터베이스를 여러 단계로 분해하여 데이터 무결성을 유지하고, 중복을 최소화하는 방법입니다.
-
제1정규형 (1NF): 릴레이션이 원자값을 가지도록 분해.
-
제2정규형 (2NF): 부분 함수 종속성을 제거.
-
제3정규형 (3NF): 이행적 종속성을 제거.
-
BCNF: 모든 결정자가 후보 키(candidate key)임을 보장.
예제
예제 1: 학생 성적 테이블
학번 | 과목코드 | 교수이름 | 점수 |
---|---|---|---|
101 | CS101 | 김교수 | 90 |
102 | CS102 | 박교수 | 85 |
103 | CS101 | 김교수 | 88 |
함수 종속성 분석
-
학번, 과목코드 → 점수
-
과목코드 → 교수이름
예제 2: 정규화
초기 테이블에서 다음과 같은 함수 종속성을 가진 경우:
-
학번, 과목코드 → 점수
-
과목코드 → 교수이름
이를 정규화하면 두 개의 테이블로 분리할 수 있습니다:
-
학생 성적 테이블: (학번, 과목코드, 점수)
-
과목 정보 테이블: (과목코드, 교수이름)
결론
함수 종속성은 데이터베이스 설계의 핵심 개념으로, 데이터 중복을 줄이고 무결성을 유지하기 위한 기초를 제공합니다. 이를 올바르게 이해하고 활용하면 효율적이고 신뢰성 높은 데이터베이스를 설계할 수 있습니다.
[…] 함수 종속성 (Functional Dependency) […]