본문 바로가기
DBMS/SQL

[데이터베이스] DB용어 - [완전, 이행, 부분] 함수(적) 종속

by webcodur 2024. 4. 14.
728x90

목차

     
     


     
    다음은 정규화에서 많이 활용되는 용어인 '함수적 종속' 에 관한 내용이다.

    학습을 마친 후에는, 정규화를 학습할 수 있게 된다.

     

    정규화 : https://webcodur.tistory.com/67 


     

    1. 함수적 종속 (Functional Dependency)

    다음 테이블을 살펴보자

    학생ID 이름
    1 홍길동
    2 이순신

     
    위 예에서 "학생ID"는 "이름"을 결정한다. '학생ID'가 1일 때, '이름'은 항상 '홍길동'이고, '학생ID'가 2일 때, '이름'은 항상 '이순신'이 된다.
     
    수학의 함수에서는, 한 입력값(x)에 대해 정확히 하나의 출력값(y)이 결정된다. 마찬가지로, 데이터베이스에서 한 속성(또는 속성 집합)의 값이 다른 속성(또는 속성 집합)의 값을 유일하게 결정할 때, 이를 "함수적 종속"이라고 한다.
     
    참고로 각각의 값을 데이터베이스상의 용어로 표현하면 다음과 같고,

    • 결정하는 속성 (x): 결정자(determinant)
    • 결정되는 속성 (y): 종속 속성(dependent attribute)

    따라서 '학생ID'는 결정자, '이름'은 종속 속성이 된다.
     
    이런 함수적 종속성은 데이터베이스 설계에서 데이터 무결성과 효율성을 보장하는 데 중요한 역할을 한다. 함수적 종속성을 정확히 파악하고 이를 바탕으로 테이블을 설계하면, 데이터 중복을 최소화하고 갱신 이상을 방지할 수 있다. 또한, 이를 통해 쿼리의 성능을 향상시키고, 데이터 관리의 복잡성을 줄일 수 있다.
     
    함수적 종속성을 이해하고 이를 적절히 적용하는 것은 데이터베이스의 정규화 과정에서 특히 중요하다. 정규화는 데이터베이스의 구조를 조정하여 불필요한 중복을 제거하고, 데이터 무결성을 유지하기 위한 과정이며, 각 정규형의 기준이 되는 핵심적인 개념이 바로 함수적 종속성이다.
     
     
     
     

    2. 완전 함수 종속 (Full Functional Dependency)

    다음으로 살펴볼 것은 완전 함수 종속이다.
     
    속성 집합 X = {학생ID, 과목ID}, Y = {성적}을 가정해보자.

    학생ID  과목ID  성적
    1 101 90
    1 102 85

     
    위 테이블에서, '성적' Y는 {학생ID, 과목ID}의 조합 X에 의해 결정된다. 학생들은 모두 과목별로 성적이 발생할 것이기 때문이다. 즉 {학생ID}만이나 {과목ID}만으로는 '성적'을 결정할 수 없고 '성적' Y는 X 그룹에 완전히 대응된다. 이러한 종속성은 데이터베이스에서 완전 함수적 종속이라고 표현하며, 복합 키를 포함하는 테이블에서 자주 볼 수 있다.
     
     
     
     

    3. 부분 함수 종속 (Partial Functional Dependency)

    다음으로 살펴볼 것은 부분 함수 종속이다.
     
    속성 집합 X = {학생ID, 과목ID}, Y = {과목명}인 다음 예시 테이블을 살펴보자.

    학생ID 과목ID 과목명
    1 101 수학
    1 102 영어
    2 101 수학
    2 102 영어

     
    위 테이블에서, '과목명' Y는 {과목ID}, 즉 X의 일부분만으로 결정된다. {학생ID, 과목ID} 전체를 사용할 필요 없이, '과목ID'만으로도 '과목명'을 알 수 있다. 따라서, '과목명' Y는 X의 부분 집합인 {과목ID}에 부분 함수적으로 종속된다.
     
    부분 함수 종속은 이렇게 복합 키 X의 전체가 아닌 일부만으로 속성 Y를 결정할 수 있는 경우를 말한다. 이러한 종속성은 X가 복합 키인 경우, 특정 속성들이 다른 속성들에 비해 더 강한 결정력을 가질 때 발생한다.
     
     
     
     

    4. 이행 함수 종속 (Transitive Functional Dependency)

    속성 집합 X = {학생ID}, Y = {학과ID}, Z = {학과명}을 살펴보자

    학생ID 학과ID  학과명
    1 101 컴퓨터공학
    2 102 기계공학

     
    여기서, '학생ID'(X)는 '학과ID'(Y)를 결정하고, '학과ID'(Y)는 '학과명'(Z)를 결정한다. 
     
    이행 함수 종속은 이렇게 셋 이상의 속성 X, Y, Z가 있을 때, 속성 X가 속성 Y를 결정하고, Y가 다시 Z를 결정하는 경우를 말한다. 이러한 종속성은 종종 데이터베이스 설계에서 불필요한 중복을 초래하며, 갱신 이상의 원인이 될 수 있다.
     
     
     
     

    5. 기억하기

    다음 도표를 통해 내용을 쉽게 기억할 수 있다.

    함수적 종속 속성 X가 속성 Y를 유일하게 결정 X -> Y
    완전 함수 종속 복합 키 X 전체가 속성 Y를 결정, X의 부분집합으로는 결정 불가 X[A, B] -> Y
    부분 함수 종속 복합 키 X 일부가 속성 Y를 결정 X[A, B], B -> Y
    이행 함수 종속 속성 X가 Y를 결정하고 Y가 다시 Z를 결정 X -> Y -> Z