정규화 읽기

복합키 전체에 필요한 값만 남기고, 나머지는 원인에 따라 분리한다

정규화는 속성을 지우는 작업이 아니라, 어떤 값이 {학번, 과목명}에 직접 종속되는지 판별해 올바른 테이블로 옮기는 작업입니다.

STEP 1
기준 키 확인 복합키를 중심으로 각 속성이 어디에 기대는지 본다.
공유 기준
{학번, 과목명}

수강 기록의 기본 식별자. 이 전체 조합이 필요하면 정상 종속이다.

완전 종속
성적

학번만으로도, 과목명만으로도 결정되지 않고 전체 키가 필요하다.

부분 종속
이름, 학과

과목명과 무관하게 학번만 알면 결정되므로 학생 정보가 섞여 있다.

이행 종속
학과장

학번이 직접 결정하지 않고, 학번 → 학과 → 학과장 경로를 따른다.

STEP 2
위반 판별 어떤 종속을 남기고 어떤 종속을 없앨지 결정한다.
종속 유형 왜 문제인가 정규화 조치
완전 종속 성적은 복합키 전체가 있어야 정해진다. 유지 · 수강 사실에 직접 속함
부분 종속 이름, 학과는 학번만으로 정해져 2NF를 깨뜨린다. 분리 · 학생 테이블로 이동
이행 종속 학과장은 학과를 거쳐 결정되어 3NF를 깨뜨린다. 분리 · 학과 테이블로 이동
STEP 3
분해 결과 각 속성을 직접 종속되는 주체별로 다시 묶는다.

수강

(학번, 과목명, 성적)

복합키 전체에 종속된 값만 남겨 중복 없이 저장한다.

학생

(학번, 이름, 학과코드)

학생 자체 정보만 모아 부분 함수 종속을 제거한다.

학과

(학과코드, 학과명, 학과장)

학과장이 학과에 직접 종속되도록 묶어 이행 종속을 제거한다.

핵심: 정규화의 각 단계는 “이 속성이 지금 기준 키에 직접 종속되는가?”를 묻고, 직접 종속되지 않으면 그 속성이 속해야 할 테이블로 옮기는 과정입니다.