2026. 3. 14. 00:26ㆍ공부/이론
원래 이론 공부하는 건 잘 포스팅하지 않지만
내가 계속 틀려서... 내가 맨날 틀려서... 다시는 틀리고 싶지 않아서... 적어보는 함수 종속 정리
함수 종속
개념 : 속성의 의미와 속성 간 상호 관계로부터 발생하는 제약 조건. X -> Y 관계일 때, X는 결정자고 Y는 종속자이다.
이론상 개념은 이러하지만 실제로는 X를 알면 Y도 딱 하나로 정해지나?? 를 따지는 것.
예를 들어 학번 학생 한 명한테 부여되는 고유한 번호이기 때문에 학번을 알면 이름은 무조건 하나가 나올 수 밖에 없다.
이 경우를 함수 종속 성립으로 봄!!
완전 함수 종속
개념 : 기본키가 속성이 여러 개일 경우, 기본 키를 전체를 알아야지 종속자를 알 수 있다.
이번에도 학교를 예로 들었을때 '수강성적' 테이블에 학번, 과목 코드를 복합 기본키로 설정해놓은 경우
내가 홍길동의 학번과 홍길동이 수강하는 과목의 코드를 알아야지만 비로소 홍길동의 A과목의 성적을 알 수 있는데
이 경우를 완전 함수 종속으로 본다.
부분 함수 종속
개념 : 기본키가 복합키인 경우 일부 속성만으로도 종속자를 알 수 있다 (이 경우 제2정규화를 통해 없애야 함)
'수강성적' 테이블에서 해당 과목을 수강하는 학생 이름을 확인하는 것으로 가정해보자
'수강성적' 테이블의 기본키는 학번, 과목코드지만 학생 이름은 학번만 있어도 충분히 도출이 가능하다(이 경우를 학번에만 종속되어있다고 한다)
이 경우 부분 함수 종속으로 보며, 데이터 이상 현상을 유발하는 위험요소로 보기도 한다.
이행 함수 종속
개념 : X -> Y, Y -> Z일 때, X -> Z가 성립되는 경우
이번에는 학과 테이블을 예로 들어보자. 이 테이블의 기본키는 학번이라고 가정하고, 속성을 학과 코드, 학과명으로 가정했을때
학번을 알면 해당 학생의 학과 코드를 알 수 있고, 학과 코드를 알면 학과명을 알아낼 수 있다.(학번 -> 학과코드, 학과코드 -> 학과명)
결론적으로 학번을 안다는 것은 해당 학생의 학과명도 자동으로 알 수 있게 된다는 것.
이 경우 이행 함수 종속으로 보며 제 3정규화로 처리해주는 것이 좋다
이번에는 제발!! 틀리지!! 말자!! 제발!!