학생 정보와 학과 정보를 분리

학과장은 학생마다 따로 정해지는 값이 아니라 학과가 결정하는 공유 사실이므로, 학생 행에서 떼어내 별도 테이블로 옮기면 저장 상태가 안정됩니다.

분해 전: 학생 행마다 학과 사실이 반복 하나의 테이블
학번 이름 학과 학과장
1001 김철수 컴공 정교수
1002 이영희 전자 한교수
1003 박민수 컴공 정교수
같은 학과 사실이 여러 학생 행에 중복되므로, 학과장 변경이나 학생 삭제가 학과 정보까지 흔듭니다.
분해 후: 공유 사실은 학과 테이블 1행에만 저장 두 테이블 + 연결 키
학생.학과 값으로 학과 테이블을 참조해 연결

학생 테이블 (PK: 학번)

학번 이름 학과
1001 김철수 컴공
1002 이영희 전자
1003 박민수 컴공

학과 테이블 (PK: 학과)

학과 학과장
컴공 정교수
전자 한교수
학과장 변경은 학과 테이블 1곳만 수정하면 되고, 학생의 존재 여부와 학과 정보의 보존이 분리됩니다.
이상
분해 전 문제
분해 후 변화
갱신
컴공 학과장이 바뀌면 1001, 1003 행의 학과장 값을 모두 맞춰야 합니다.
학과 테이블 1행만 수정하면 전체 학생에 같은 결과가 반영됩니다.
삽입
학생이 없으면 새 학과와 학과장을 저장할 자리가 없습니다.
학생 없이도 '기계공학과 - 박교수' 같은 학과 정보를 먼저 등록할 수 있습니다.
삭제
학번 1002 이영희를 삭제하면 '전자 - 한교수' 정보도 함께 사라집니다.
학생 삭제와 학과 정보 삭제가 분리되어 학과 사실이 유지됩니다.