[정처기] 함수 종속 완벽하게 정리하기

2026. 3. 14. 00:26공부/이론

원래 이론 공부하는 건 잘 포스팅하지 않지만

내가 계속 틀려서... 내가 맨날 틀려서... 다시는 틀리고 싶지 않아서... 적어보는 함수 종속 정리

 

함수 종속

개념 : 속성의 의미와 속성 간 상호 관계로부터 발생하는 제약 조건. X -> Y 관계일 때, X는 결정자고 Y는 종속자이다.

 

이론상 개념은 이러하지만 실제로는 X를 알면 Y도 딱 하나로 정해지나?? 를 따지는 것.

예를 들어 학번 학생 한 명한테 부여되는 고유한 번호이기 때문에 학번을 알면 이름은 무조건 하나가 나올 수 밖에 없다. 

이 경우를 함수 종속 성립으로 봄!!

 

 

완전 함수 종속

개념 : 기본키가 속성이 여러 개일 경우, 기본 키를 전체를 알아야지 종속자를 알 수 있다.

이번에도 학교를 예로 들었을때 '수강성적' 테이블에 학번, 과목 코드를 복합 기본키로 설정해놓은 경우

내가 홍길동의 학번과 홍길동이 수강하는 과목의 코드를 알아야지만 비로소 홍길동의 A과목의 성적을 알 수 있는데 

이 경우를 완전 함수 종속으로 본다.

 

부분 함수 종속

개념 : 기본키가 복합키인 경우 일부 속성만으로도 종속자를 알 수 있다 (이 경우 제2정규화를 통해 없애야 함)

'수강성적' 테이블에서 해당 과목을 수강하는 학생 이름을 확인하는 것으로 가정해보자

'수강성적' 테이블의 기본키는 학번, 과목코드지만 학생 이름은 학번만 있어도 충분히 도출이 가능하다(이 경우를 학번에만 종속되어있다고 한다)

이 경우 부분 함수 종속으로 보며, 데이터 이상 현상을 유발하는 위험요소로 보기도 한다.

 

이행 함수 종속

개념 : X -> Y, Y -> Z일 때, X -> Z가 성립되는 경우

이번에는 학과 테이블을 예로 들어보자. 이 테이블의 기본키는 학번이라고 가정하고, 속성을 학과 코드, 학과명으로 가정했을때 

학번을 알면 해당 학생의 학과 코드를 알 수 있고, 학과 코드를 알면 학과명을 알아낼 수 있다.(학번 -> 학과코드, 학과코드 -> 학과명)

결론적으로 학번을 안다는 것은 해당 학생의 학과명도 자동으로 알 수 있게 된다는 것.

이 경우 이행 함수 종속으로 보며 제 3정규화로 처리해주는 것이 좋다

 

이번에는 제발!! 틀리지!! 말자!! 제발!!