데이터베이스 제2정규형

From CS Wiki

Second Normal Form, 2NF

제2정규형은 데이터베이스 정규화의 두 번째 단계로, 제1정규형(1NF)을 만족하면서 테이블 내에서 부분 함수 종속성(�Partial Functional Dependency)을 제거하는 것을 목표로 한다. 제2정규형은 기본 키의 일부에만 종속하는 속성을 제거하여 데이터 중복을 줄이고 데이터 무결성을 향상시킨다.

제2정규형의 조건[edit | edit source]

제2정규형을 만족하기 위해서는 다음 조건을 충족해야 한다.

  • 테이블이 제1정규형을 만족해야 한다.
  • 기본 키의 일부가 아닌 전체에 종속하는 속성만 포함해야 한다. 즉, 기본 키가 두 개 이상의 열로 구성된 경우, 기본 키의 일부가 아닌 전체 키에 종속하는 속성만이 있어야 한다.

제2정규형의 예[edit | edit source]

  • 2NF에 맞지 않는 예시

학생, 과목, 담당 교사 정보를 포함한 테이블이 있다고 가정한다. 이 테이블에서 기본 키는 학생ID와 과목의 조합으로 구성된다. 하지만 담당 교사 정보는 특정 과목에만 의존하고, 학생ID와는 관련이 없다.

학생ID 과목 담당 교사
1 수학 김선생
1 영어 이선생
2 수학 김선생
2 영어 이선생

이 구조에서는 담당 교사가 과목에만 종속되어 있으며, 학생ID에는 종속되지 않으므로 부분 함수 종속성이 발생한다. 이는 제2정규형을 위반하는 상태이다.

  • 2NF에 맞게 변환된 예시

부분 함수 종속성을 제거하기 위해 담당 교사 정보를 별도의 테이블로 분리한다.

  • 학생-과목 테이블
학생ID 과목
1 수학
1 영어
2 수학
2 영어
  • 과목-담당 교사 테이블
과목 담당 교사
수학 김선생
영어 이선생
  • 이렇게 분리함으로써 각 테이블이 제2정규형을 만족하게 되며, 부분 함수 종속성이 제거되어 데이터의 중복이 줄어든다.

제2정규형의 장점[edit | edit source]

제2정규형을 적용하면 다음과 같은 장점을 얻을 수 있다.

  • 데이터 중복을 줄여 저장 공간을 절약할 수 있다.
  • 데이터 수정 시 불필요한 중복 업데이트를 피할 수 있어 데이터 일관성을 높인다.
  • 데이터 무결성을 강화하여 데이터베이스 구조를 더 명확하고 체계적으로 만든다.

한계와 고려 사항[edit | edit source]

제2정규형은 부분 함수 종속성을 제거하여 데이터의 중복을 줄이지만, 아직 이행적 종속성으로 인한 중복을 제거하지는 않는다. 이를 해결하기 위해 제3정규형(3NF)으로의 추가 정규화가 필요할 수 있다.

같이 보기[edit | edit source]