한 행에 세 주제가 섞이면 이상 현상이 시작된다
학생, 과목, 수강 결과를 한 테이블에 함께 저장하면 같은 사실이 반복되고 삽입·수정·삭제 이상으로 이어진다.
학번
학생명
과목
교수
성적
S01
김민수
C10
이교수
A
S01
김민수
C20
박교수
B+
S02
이서연
C10
이교수
A-
학생 사실
학번 → 학생명
학생 정보는 수강 행 수만큼 반복된다.
과목 사실
과목코드 → 과목명·교수
과목 설명은 여러 학생 행에 중복된다.
수강 사실
학번 + 과목코드 → 성적
성적만 두 키의 조합이 직접 결정한다.
삽입 이상
수강생이 없는 새 과목을 과목 정보만으로 넣기 어렵다.
갱신 이상
교수명이 바뀌면 C10이 들어간 모든 행을 고쳐야 한다.
삭제 이상
마지막 수강 기록을 지우면 과목 정보도 함께 사라질 수 있다.
Student
학번 PK, 학생명, 학과
Course
과목코드 PK, 과목명, 교수
Enrollment
학번 FK + 과목코드 FK + 성적
정규화의 출발점은 “반복되는 값”을 찾는 것이 아니라, 어떤 키가 어떤
사실을 직접 결정하는지 분리하는 것이다.