Database

[DATABASE] Functional Dependency(FD)

ju_young 2023. 12. 13. 14:34
728x90
article_id title content category user_id

article_id를 집합 X, title, content, category를 집합 Y라고 하자. 이때 X값에 따라 Y값이 유일하게 결정된다고 볼 수 있다. 또한 이러한 것을 X가 Y를 함수적으로 결정한다. 또는 Y가 X에 함수적으로 의존한다.라고 말할 수 있으며 Functional Dependency(FD)라고 부른다.

 

X -> Y로 표현할 수 있으며 X는 left-hand side, Y는 right-hand side라고 한다.

 

  • 추가 예시
    • {stu_id} -> {stu_name, birth_date, address}
    • {class_id} -> {class_name, year, semester, credit}
    • {stu_id, class_id} -> {grade}
    • {bank_name, bank_account} -> {balance, open_date}
    • {user_id, location_id, visit_date} -> {comment, picture_url}

{} -> Y

{} -> Y는 Y가 항상 하나의 값을 가진다는 것을 의미한다. 즉, 하나의 attribute에 하나의 값만 가지는 경우를 의미한다.

Trivial Functional Dependency

X -> Y일 때 Y가 X의 부분집합이라면 X -> Y는 Trivial FD라고 한다.

  • {a, b, c} -> {c}
  • {a, b, c} -> {a, c}
  • {a, b, c} -> {a, b, c}

Non-Trivial Functional Dependency

X -> Y일 때 Y가 X의 부분집합이 아니라면 X -> Y는 Non-Trivial FD라고 한다.

  • {a, b, c} -> {b, c, d}
  • {a, b, c} -> {d, e}

NOTE
{a, b, c} -> {d, e} 처럼 한 개도 겹치치않을 경우 Completely Non-Trivial FD라고도 한다.

Partial Functional Dependency

X -> Y일 때 X의 어떤 proper subset이 Y를 결정할 수 있을 때 X -> Y는 Partial FD라고 한다.

  • proper subset
    • 집합 X의 proper subset은 X의 부분 집합이지만 X와 동일하지 않은 집합
    • X = {a, b, c}일 때 {a, c}, {a}, {}는 X의 proper subset이지만 {a, b, c}는 proper subset이 아니다.

예를 들어 {student_id, student_name} -> {birth_date}일 때 {student_id}만으로도 {birth_date}를 결정할 수 있으므로 Partial FD라고 할 수 있다.

Full Functional Dependency

X -> Y일 때 X의 어떤 proper subset이 Y를 결정할 수 없을 때 X -> Y는 Full FD라고 한다.

 

예를 들어 {student_id, class_id} -> {grade}일 때 {student_id} 또는 {class_id} 또는 {}만으로 {grade}를 결정할 수 없다. 특정 학생에 대한 특정 과목을 알아야 성적을 알 수 있기 때문이다.

728x90

'Database' 카테고리의 다른 글

[DATABASE] INDEX(인덱스)  (0) 2023.12.16
[DATABASE] 정규화(Normalization)  (0) 2023.12.15
[DATABASE] MVCC (MultiVersion Concurrency Control)  (0) 2023.12.10
[DATABASE] LOCK (2PL Protocol)  (0) 2023.12.07
[DATABASE] Isolation Level  (1) 2023.12.05