Functional Dependency (함수 종속) : 한 테이블에 있는 두개의 attribute(s) 집합(set) 사이의 제약
임직원 ID(집합X)가 같다면, 집합Y의 attributes들의 값도 같다.
X가 Y를 함수적으로 결정한다. Y가 X에 함수적으로 의존한다.
테이블의 스키마를 보고 의미적으로 FD를 파악할 수 있어야하며, 테이블의 상태를 보고 FD를 파악해서는 안된다. (스키마를 보고 파악할 수 있어야 한다!)
서로 다른 직원이 서로 다른 생년월일을 가질 경우 -> 1:1로 매칭이 되네 ?
-> empl_name에 따라 birth_date가 결정된다 -> X (동명이인일때는 같은 name이지만 date가 달라진다.)
즉, 데이터를 보고 FD를 판단하는게 아닌 스키마를 보고 의미적으로 파악해야한다!
학생의 ID는 unique하게 설정되기 때문에 가능하다.
한 학생이, 한 클래스에서 얻는 성적
은행이름, 은행계좌 -> 잔액, 개설날짜
X가 Y를 결정한다 하여 Y가 X를 결정하진 않는다.
하지만, Y->X가 가능한때도 존재한다.
Y의 값은 항상 하나의 값만을 가진다.
company의 값이 항상 일정할 경우. {}->{company}, 값을 하나만 가진다.
X -> Y가 유효하고, Y가 X의 부분 집합일 때 Trivial functional dependency라 부른다.
X -> Y가 유효하지만, Y는 X의 부분집합이 아닌 경우
두 집합이 공통된 attributes가 하나도 없는 경우 completely non-trivial functional dependency라 한다.
X -> Y가 유효할때, X의 어떤 attribute가 Y를 결정지을 수 있는 경우
X의 부분집합이 Y를 결정 짓는 경우
X의 부분집합이지만, X와 동일하지 않은 집합
X의 부분집합이 아닌, X의 집합 전부가 Y를 결정짓는 유효한 상황인 경우
stu_id와 class_id가 모두 있어야 grade를 결정할 수 있다.
어떤 클래스에서 A, 어떤 클래스에서는 B 각각 바뀐다.