함수 종속(Functional Dependency)

함수 종속(Functional Dependency)

함수 종속(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. 주어진 릴레이션에서 속성 간의 관계를 분석합니다.

  2. 특정 속성의 값이 다른 속성을 유일하게 결정할 수 있는지 확인합니다.

  3. 종속성이 불필요하거나 데이터 중복을 초래하는 경우, 정규화를 고려합니다.

함수 종속성과 정규화

함수 종속성은 정규화 과정에서 사용됩니다. 정규화는 데이터베이스를 여러 단계로 분해하여 데이터 무결성을 유지하고, 중복을 최소화하는 방법입니다.

  • 제1정규형 (1NF): 릴레이션이 원자값을 가지도록 분해.

  • 제2정규형 (2NF): 부분 함수 종속성을 제거.

  • 제3정규형 (3NF): 이행적 종속성을 제거.

  • BCNF: 모든 결정자가 후보 키(candidate key)임을 보장.

예제

예제 1: 학생 성적 테이블

학번 과목코드 교수이름 점수
101 CS101 김교수 90
102 CS102 박교수 85
103 CS101 김교수 88

함수 종속성 분석

  • 학번, 과목코드 → 점수

  • 과목코드 → 교수이름

예제 2: 정규화

초기 테이블에서 다음과 같은 함수 종속성을 가진 경우:

  • 학번, 과목코드 → 점수

  • 과목코드 → 교수이름

이를 정규화하면 두 개의 테이블로 분리할 수 있습니다:

  1. 학생 성적 테이블: (학번, 과목코드, 점수)

  2. 과목 정보 테이블: (과목코드, 교수이름)

결론

함수 종속성은 데이터베이스 설계의 핵심 개념으로, 데이터 중복을 줄이고 무결성을 유지하기 위한 기초를 제공합니다. 이를 올바르게 이해하고 활용하면 효율적이고 신뢰성 높은 데이터베이스를 설계할 수 있습니다.

데이터 종속성(Data Dependency)

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] 함수 종속성 (Functional Dependency) […]

Loading...