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}를 결정할 수 없다. 특정 학생에 대한 특정 과목을 알아야 성적을 알 수 있기 때문이다.