오래 못 할 짓 하지 않기
[ 데이터베이스 ] 21. Functional Dependency (FD : 함수 종속) 본문
Functional Dependency
: 한 테이블에 있는 두 개의 Attributes 집합 사이의 제약

Employee table에 6개의 Attribute가 있다고 해보자.
이걸 2개의 집합으로 나눠보자

특징 : 두 Tuple의 X값이 같다면, Y값도 같다. (당연함)
이렇게 X값에 따라 Y의 값이 유일 (Unique) 하게 결정될 때
= [ X가 Y를 함수적으로 결정한다. ] (functionally determin)
= [ Y가 X를 함수적으로 의존한다. ] (functionally dependent)

이러한 제약 관계를 Functional dependency 라고 한다.

이름 → 생일 이렇게 둘 다 서로에게 고유한 값을 갖는다고 FD라고 생각하면 안된다.
동명이인이 올 수 있기 때문이다.

따라서 Tuple을 보고 판단하기보단 Schema를 보고 의미적으로 판단해야한다.

이렇게 한 부서에만 속하는 회사에서 위와 같이 Attribute를 만들면 Dept_id도 같이 Y에 포함시킬 수 있다.
하지만, 직원이 하나 이상의 부서에 속한다면 X에 대해 여러 Y가 대응하므로 Dept_id를 포함시키는 건 옳지 않다.


역이 성립 할 수도 안 할 수도
앞에 있는 예시 ) 동명이인이 있을 수 있기 때문에 X ,
뒤에 있는 예시 ) 주민등록번호는 고유하므로 O
(Non) Trivial FD

● Trivial
i) X → Y이고
ii) Y가 X의 부분집합이라면
결과) X→ Y는 Trivial Functional Dependency라고 한다.
● Non - trivial
i) X → Y이고
ii) Y가 X의 부분집합이 아니라면
결과) X→ Y는 Non Trivial Functional Dependency라고 한다.
특징 ) 부분집합이라도 있다? -> non-trivial FD
공통인 게 하나도 없다? -> completely까지 붙일 수 있음 --> completely non-trivial FD

● Partial FD
i) X → Y이고
ii) 하나의 X의 Proper subset인 X'가 Y를 결정할 때
결론) X→ Y는 Partial FD라고 한다.
Proper subset 이란?
= 최소 하나의 Attirbute라도 제거되어 있는 부분집합


● Full FD
i) X → Y이고
ii) 모든 X의 Proper subset인 X'가 Y를 결정하지 않을 때
결론) X→ Y는 Full FD라고 한다.

둘 중에 하나만 혼자 있어도 Grade를 결정하지 못함
학번으로 하자니 여러 수업을 들어서 하나 지정을 못함.
수업을 하자니 누구 한 명 점수를 지정 못
(출처)
유튜브 쉬운코드
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ 데이터베이스 ] 23. DB 정규화 (2) (0) | 2024.02.14 |
---|---|
[ 데이터베이스 ] 22. DB 정규화 ( Normalization ) (0) | 2024.02.09 |
[ 데이터베이스 ] 20. DB 테이블을 잘못 설계한다면? (0) | 2024.02.07 |
[ 데이터베이스 ] 19. MVCC 개념 (2) MYSQL (0) | 2024.02.06 |
[ 데이터베이스 ] 18. MVCC 개념 (0) | 2024.02.06 |