X 속성의 값에 따라 Y 속성의 값이 결정. = X 속성이 Y 속성을 함수적으로 결정한다라고 한다. X의 값이 같을 때 Y값도 같은지를 확인하면 된다.

여기서의 FD는 sno와 year 사이에 있다고 할 수 있다. 이러한 관계를 X -> Y = Y is functionally dependent on X.

종속 다이어그램은 다음과 같다.

{sno, cno} -> year 화살표는 필요가 없다. primary의 member(sno)가 누군가(year)의 결정자라면 당연히 조합에서 year의 결정자였기 때문에 표시하지 않아도 된다. (명시적으로 내포)

bor_loan :
박스 안에는 customer_id만.
customer_id -> loan_number
customer_id -> amount
loan_number -> amount
or
{customer_id, loan_number} -> amount 이고, 박스 안 loan_number 에서만 화살표.
Employee relation :
employee_id -> employee_name,
employee_id -> tell_number,
employee_id -> start_date
개별 직원마다 tel_number 가 다르다면 name, start_date 을 결정할 수도.
이전에는 total 과 partial 이었다.
primary key 가 여러 개일때 X,Y 관계는 full , partial 일 수 있다.
Full
: X가 두 개 이상 속성, X' 가 X 하위일 때 X'-> Y가 성립 안하는 경우 (개별 멤버는 성립 안함)
Partial
: 하위 속성 X' 에 대해 X' -> Y가 성립하는 경우 x-> Y 는 부분 함수 종속

anomaly 있다 -> 테이블의 사이즈를 줄여야 한다 -> 테이블을 쪼개자 (decompose) -> Normalization
1NF
2NF
3NF
BCNF
4NF
5NF
정규형마다 조건이 있으며, 이를 이해해야 한다.
조건: 모든 도메인이 원자값으로만 구성, composite att, multi-valued att 는 안됨.
non-atomic 값을 제거하는 것이 1NF 이다.


{sno, cno} > grade
{sno, cno} > advisor
{sno, cno} > dept
sno > advisor
sno > dept
advisor > dep

: 기본키에 부분함수 종속이 발생하여 문제가 생긴다. 이를 2NF 에서 해결.

{sno, cno} > advisor, {sno, cno} > dept 가 부분함수 종속이라 문제! 이걸 제거하자.
sno 는 advisor와 dept 의 결정자인 것이 맞다(상식적으로 생각해도.) grade 도 그러하므로 grade, cno, sno 를 하나로 묶고 sno, advisor, dept 를 하나로 묶은 2개의 테이블을 만들자.
조건: 1정규형 요건은 기본으로 충족, prime att 제외 모든 att가 기본키에 완전 종속된 상태.
즉 부분함수 종속이 모두 제거되도록 한다.



advise
1. Insertion 있음(500을 추가하고 싶은데 지도교수 P4를 학과 정보 없이 추가를 못한다. dependency 가 있어서) 2. deletion 있음(200지우면 P2의 학과가 전기라는 정보 삭제됨, 300도) 3. P1의 학과가 정보통신에서 정보로 바뀌면 P1을 모두 찾아 바꿔야 함
course
1. Insertion 없음(primary key 라 무조건 null 값 없이 추가) 2. deletion 없음(200을 지우면 튜플을 완전히 삭제하는데 문제가 없다.) 3. Update 없음(sno, cno 에서 중복된 튜플이 없어서)
: Transitive FD 때문에 anomaly 가 발생한다.
X > Y, Y > Z, X > Z 와 같은 관계가 있다면 이를 Transitive FD 라 한다.

이를 제거하는 것이 3정규형이다.
: 2정규형 충족, att 간 이행적 종속이 없는 상태.


Primary key 는 sno, ID 가 후보키이다.

어떤 att 를 공통으로 해서 나눌까?
studentadvise 의 advisor > advisoradapt 의 advisor (화살표)