학생 행 안에 섞여 들어간 학과 사실

학과장은 학생의 고유 정보라기보다, 먼저 정해진 학과를 따라오는 값입니다. 그래서 같은 학과 학생 행마다 같은 학과장 값이 반복 저장됩니다.

학생 테이블에 들어간 값

학번1001
이름김철수
학과컴공
학과장정교수
학번1002
이름이영희
학과전자
학과장한교수
학번1003
이름박민수
학과컴공
학과장정교수
컴공 학생 두 행이 같은 학과장 값을 각각 들고 있습니다.

공유된 결정자

중간에 끼어 있는 속성

학과

학번이 먼저 학과를 결정하고, 그다음 학과가 학과장을 결정합니다.

공유되는 학과 값컴공
공유되는 학과 값전자

학과가 정하는 값

컴공 → 정교수 학과 정보가 학과장 값을 결정
전자 → 한교수 학생마다 새로 정하는 값이 아님
직접 종속 학번 → 학과

학생은 어느 학과에 속하는지가 직접 정해집니다.

직접 종속 학과 → 학과장

학과장 값은 학과가 바뀔 때만 함께 바뀝니다.

결론 학번 → 학과장 은 이행 종속

학과장을 학번에 직접 붙여 저장하면 같은 사실이 여러 행에 중복됩니다.

학과장 변경이 여러 행 수정으로 번진다

컴공 학과장이 바뀌면 컴공 학생 행 전체가 영향받습니다.

변경 사실 정교수 → 최교수

실제로 바뀐 것은 컴공 학과의 학과장 한 건입니다.

파급 1001, 1003 행을 함께 수정

컴공 학생이 가진 학과장 칸을 모두 같은 값으로 맞춰야 합니다.

갱신 이상 하나라도 빠지면 불일치

같은 학과인데 서로 다른 학과장을 가리키는 모순이 생깁니다.