2NF 핵심 비교

복합키 전체가 필요한 값은 남기고, 일부 키만으로 정해지는 값은 분리해야 한다

2NF 위반의 핵심은 학생 정보가 수강 행에 함께 들어 있어, 학번만 알면 결정되는 값이 복합키 테이블에 중복 저장된다는 점입니다.

수강 테이블
PK = {학번, 과목명}
학번
과목명
성적
이름
학과
1001
DB
A
김철수
컴공
1001
알고리즘
B+
김철수
컴공
1002
DB
A+
이영희
전자

학번 1001은 과목이 달라도 이름과 학과가 그대로 반복됩니다. 이 반복이 아래의 부분 함수 종속 신호입니다.

전체 키가 필요

성적은 완전 함수 종속

{학번, 과목명} -> 성적

같은 학생이라도 과목이 바뀌면 성적이 달라질 수 있으므로, 성적은 복합키 전체가 있어야 결정됩니다.

1001 + DB A
1001 + 알고리즘 B+
키 일부만으로 결정

이름·학과는 부분 함수 종속

학번 -> 이름, 학과

과목명이 없어도 학생 정보는 정해집니다. 그래서 학생 정보가 수강 행마다 붙어 다니며 중복과 이상 현상을 만듭니다.

왜 문제가 되나

아직 수강 과목이 없는 학생은 과목명 없이 넣을 수 없어, 학생 정보만 따로 등록하지 못하는 삽입 이상이 생깁니다.