카테고리 없음

Functional Dependency

peter_00 2024. 11. 18. 18:13
반응형
Determinant Dependant
1 a
2 b

1 → a

2 → b

위와 같다면 Valid Functional Dependency 이다

Determinant Dependant
1 a
2 a

Dependant 만 같다면 Determinant 가 달라도 문제가 없다

 

하지만

Determinant Dependant
1 a
1 b

Determinant 가 같은데 Dependant 가 다르다면 그건 Functional dependency 가 될 수 없다

 

Multi valued Attribute 가 있다면 1NF (First Normal Form) 의 조건에 부합하지 않는다

ID 이름 핸드폰 번호
1 홍길동 12345678,34562234
2 김길동 7891011
3 이길동 44223231,54778811

위와 같이 1명에게 2개의 핸드폰 번호가 있다면 multi valued attribute 가 되기 때문에 1NF 의 조건에 부합하지 않는다

ID 이름 번호1 번호2
1 홍길동 12345678 34562234
2 김길동 7891011 NULL
3 이길동 44223231 54778811

위와 같이 새로운 attribute 을 추가 해준다면 중복되는 키가 없기 때문에 1NF 의 조건을 만족한다

 

2NF (Second Normal form)은 1NF의 조건이 만족 되어야 하고 Partial Dependency 를 포함하면 안된다

ID CourseID CourseFee
1 IOT 750
2 IOT 750
3 IOT 750
1 AI 850
2 AI 850
3 AI 850

ID 와 CourseID 2개의 키를 이용해야만 CourseFee 를 구할수 있다

그렇기에 ID와 CourseID는 Candidate key가 된다

만약 Candidate key를 이용해서 Non-Prime Attributes 를 알수있다면 그건 Partial Dependency가 된다

위의 케이스를 이용하면 CourseID → CourseFee 이기 때문에 Partial Dependency 의 조건에 만족한다 

Partial Dependency

그렇기에 위 표를 2NF 의 조건에 만족 시키기 위해서는 표를 2개로 나눠야한다

ID CourseID
1 IOT
2 IOT
3 IOT
1 AI
2 AI
3 AI
CourseID CourseFee
IOT 750
AI 850

표를 2개로 나눴기 때문에 IOT 를 선택한 ID는 750을 내야하고 AI 를 선택한 ID는 850을 내야한다는 걸 알 수 있다

2NF 의 조건을 만족 했다면 이제 3NF 의 조건도 만족해야한다

3NF 는 2NF 의 조건을 만족해야하고 Transitive Dependency 를 포함하면 안된다

ID 이름 번호
1 홍길동 12345678
2 김길동 11112222
3 이길동 45323413

위 표는 Composite Attribute, Multi Valued Attribute 를 포함하지 않고 Partial dependency 도 없다

그렇기에 1NF 그리고 2NF 의 조건 까지 만족한다

 

A→B (PRIME ATTRIBUTE = A, NON PRIME ATTRIBUTE = B) 

B→C (NON PRIME ATTRIBUTE = B, NON PRIME ATTRIBUTE = C) 

자동적으로 A→C가 된다

하지만 B→C 에서 NON PRIME ATTRIBUTE가 NON PRIME ATTRIBUTE를 가르키기 때문에 Transitive Dependency 가 된다

그렇기에 3NF 를 만족하지 않는다

 

BCNF 의 조건을 만족하기 위해서는

1. 3NF 를 만족해야하고

2. Functional Dependency 가 전부 X(Candidate or Superkey)  → Y  형식이여야 한다

 

반응형