2NF 판단 기준
복합 기본키의 전체가 필요하지 않은 속성은 분리 대상입니다
같은 기본키
{학번, 과목명}
를 두고도, 어떤 속성은 전체 키가 필요하고 어떤 속성은 일부 키만으로 결정됩니다.
공유 전제
학번
+
과목명
수강 행을 식별하는 기본키
속성
무엇이 결정에 필요한가
판단
예시 1
성적
학번만으로도 안 되고, 과목명만으로도 안 됩니다. 둘이 함께 있어야 성적이 정해집니다.
{학번, 과목명} -> 성적
이 속성은 수강 관계 자체를 설명하므로, 현재 테이블에 남아 있어도 됩니다.
완전 함수 종속
복합키 전체가 필요하므로 정상입니다.
예시 2
이름
과목명이 없어도 학번만 알면 이름이 정해집니다. 즉, 기본키의 일부만 결정에 참여합니다.
학번 -> 이름
이름은 학생이라는 별도 주제의 속성이라서, 수강 테이블 안에 함께 두면 중복과 이상 현상이 생깁니다.
부분 함수 종속
학생 정보가 섞였다는 신호이며, 2NF 위반입니다.
분리 방향
부분 함수 종속이 보이면, 복합키 일부에만 매달린 속성을 별도 테이블로 떼어냅니다.
학생(학번, 이름)
+
수강(학번, 과목명, 성적)