Duplication

이상 현상의 뿌리: 같은 사실의 반복 저장

중복은 저장 공간 문제가 아니라, 변경 시점마다 모든 사본을 정확히 맞춰야 하는 무결성 문제다.

반복 사실
불일치 위험
수정 경로
반복 저장되는 한 사실

과목 코드 C10의 과목명, 교수, 학점이 수강 학생 수만큼 복사되어 저장된다.

C10 / 데이터베이스 / 이교수 / 3학점 한 과목 사실이 여러 행에 반복
학번학생과목교수학점
1001민서C10 DB이교수3
1002도윤C10 DB이교수3
1003서연C10 DB김교수?3
수정 이상

담당 교수를 바꿀 때 모든 C10 행을 수정하지 않으면 서로 다른 값이 공존한다.

삭제 이상

마지막 수강 행을 삭제하면 과목 자체의 교수와 학점 정보까지 함께 사라진다.

삽입 이상

아직 수강생이 없는 과목은 수강 행 없이 과목 사실만 등록하기 어렵다.

학생학번과 학생명을 따로 관리
과목과목코드가 과목명, 교수, 학점을 보관
수강학번과 과목코드가 성적을 연결
분해반복 사실을 자기 테이블로 이동