💡 핵심 인사이트
제2정규형(2NF)은 제1정규형을 만족한 테이블이 앓고 있는 고질병인 **'부분 함수적 종속(Partial Dependency)'**을 칼로 도려내어 테이블을 2개로 찢는 외과 수술입니다.
수술이 끝나면 찢어진 각 테이블의 일반 컬럼들은 오로지 기본 키 '전체'에만 100% 맹목적으로 충성하는 깔끔한 완전 함수적 종속 상태가 됩니다.


Ⅰ. 1NF를 통과한 수강 테이블의 참상 (2NF 위반 상태)

이전 장에서 각 칸을 원자값으로 만들며 1NF를 통과한 테이블을 봅시다. (단, 이번엔 성적과 학과가 추가된 수강 테이블입니다.)

  • 테이블 스키마: ( [학번, 과목코드](PK), 성적, 이름, 학과 )
  • 현재 상황 (X-Ray 진단):
    1. 이 테이블의 짱(기본 키)은 {학번}{과목코드}가 뭉친 2인조 복합키입니다.
    2. 성적 컬럼은 학번과 과목코드 두 개를 다 알아야 점수가 나오므로, 복합키 전체에 온전히 충성합니다. (완전 함수 종속 ➔ 정상)
    3. 암세포의 발견: 이름학과 컬럼은 과목코드가 무엇이든 상관하지 않습니다. 오직 복합키의 왼쪽 다리인 {학번} 단 하나만 알면 값이 튀어나오는 반역을 저지르고 있습니다.
    4. 수식: {학번} -> 이름, 학과 (부분 함수 종속 발생 ➔ 2NF 위반!)

이 얄미운 부분 종속 컬럼(이름, 학과)들 때문에, 학생이 10과목을 수강하면 이 학생의 신상 정보가 테이블에 10줄이나 쓸데없이 중복 저장되는 '이상 현상'이 터집니다.


Ⅱ. 2NF 수술 집도 (테이블 찢기)

해결책은 간단명료합니다. 배신자들을 짐 싸서 원룸(새 테이블)으로 쫓아냅니다. 본래 테이블 하나를, 종속성의 결을 따라 **두 개의 무손실 테이블로 찢어 분해(Decomposition)**합니다.

수술 후 결과 (2NF 달성)

1. 수강 테이블 (남은 놈들)

  • 컬럼: [학번, 과목코드](PK), 성적
  • 상태: 성적은 복합키 전체에 완전 종속됨. (깨끗함)

2. 학생 테이블 (쫓겨난 놈들 ➔ 새집 차림)

  • 컬럼: [학번](PK), 이름, 학과
  • 분해 원리: 쫓겨난 배신자(이름, 학과)들을 모으고, 그들이 맹목적으로 따르던 옛날 보스인 **학번을 새 테이블의 단독 대표(기본 키)**로 세워줍니다.
  • 상태: 이름학과는 이제 단독 PK인 학번에 100% 충성하므로, 이 테이블도 완전 함수 종속을 달성했습니다. (학생 신상 정보의 중복 저장이 영원히 사라짐).

Ⅲ. 2NF 판별 꿀팁 (시험용)

정보처리기사나 감리사 시험에서 "이 테이블은 2NF를 만족하는가?"를 1초 만에 판별하는 치트키가 있습니다.

  • 꿀팁: 만약 어떤 1NF 테이블의 기본 키(PK)가 복합키(2개 이상)가 아니라 오직 단 1개의 컬럼(단일 키, 예: 사번)으로만 이루어져 있다면?
  • 정답: 그 테이블은 부분 종속이 일어날 건덕지(부분 키) 자체가 아예 없으므로, 검사할 필요도 없이 자동으로 프리패스하여 제2정규형(2NF)을 100% 만족하는 상태입니다. (바로 3NF 검사로 넘어가면 됩니다.)

📢 섹션 요약 비유: 제2정규형은 회사 안의 **'파벌(사조직) 척결 작전'**입니다. 회사(테이블)의 공동 대표가 A와 B 두 명(복합 PK)인데, '영업부 직원들(일반 속성)'은 대표 A의 말만 듣고 B는 개무시합니다(부분 종속). 꼴 보기 싫은 공동 대표 B는, 아예 A대표와 영업부 직원들을 회사 밖으로 내쫓아 **독립된 자회사(새 테이블)**를 차려주어, 각 회사의 지휘 계통이 깔끔하게 1:1로 떨어지게 만드는 조직 개편입니다.