Home Database 15. DB 테이블 설계를 위한 functional dependency(FD:함수 종속)
Post
Cancel

Database 15. DB 테이블 설계를 위한 functional dependency(FD:함수 종속)

Functional Dependency

  • 한 테이블에 있는 두 개의 attribute(s) 집합(set) 사이의 제약(constraint)
  • X 값에 따라 Y값이 유일하게(uniquely) 결정될 때 ‘X가 Y를 함수적으로 결정한다(functionally determine)’ 혹은 ‘Y가 X에 함수적으로 의존한다’ 라고 말할 수 있다.
  • 기호 : X -> Y
    • X: left-hand side
    • Y: right-hand side
    • 단 X -> Y not means Y -> X
  • {} -> Y : Y 값은 언제나 하나의 값만을 가진다는 의미이다.

Functional Dependency(FD) 파악하기

  • 테이블의 스키마를 보고 의미적으로 파악해야 된다.
  • 즉, 테이블의 state를 보고 FD를 파악해서는 안된다.
  • 테이블의 스키마를 보고 의미적으로 FD가 존재하는지 파악해야 한다.
  • 구축하려는 DB의 attributes가 관계적으로 어떤 의미를 지닐지에 따라 FD들이 달라진다.

Functional Dependency 예

1
2
3
{stu_id} -> {stu_name, birth_date, address}
{class_id} -> {class_name, year, semester, credit}
{stu_id, class_id} -> {grade}

FD 종류

Trivial Functional Dependency

  • when X->Y holds, if Y is subset of X, then X->Y is trivial FD
    • e.g. {a, b, c} -> {c}

Non-trivial functional dependency

  • when X->Y holds, if Y is NOT subset of X, then X->Y is non-trivial FD
    • e.g. {a, b, c} -> {b, c, d}
    • e.g. {a, b, c} -> {d, e} (non-trivial FD & completely non-trivial FD)

Partial function Dependency

  • when X->Y holds, if any proper subset of X’ cna determine T, then X->Y is partial FD
    • X proper subset : X의 부분 집합이지만 X와 동일하지 않는 집합
    • e.g. {empl_id, empl_name} -> {birth_date}는 {empl_id} ->{birth_date}가 될 수 있기 때문에 partial FD이다.

Full functional dependency

  • when X->Y holds, if every proper subset of X’ can’t determine Y, then X->Y is full FD
    • e.g. {stu_id, class_id} ->{grade}에서 proper subset 만으로는 grade를 확정지을 수 없다.

transitive Functional Dependency

  • if X->Y & Y->Z holds, then X->Z이다.
  • 이때 Y, Z가 key의 부분 집합이 아니어야 한다.

FD와 관련된 추가 개념

  • Armstrong’s axioms
  • Closure
  • minimal cover
This post is licensed under CC BY 4.0 by the author.

Database 14. transaction isolation level

Database 16. DB 정규화의 개념과 1NF2NF