데이터베이스 제3정규형

From CS Wiki

Third Normal Form, 3NF

제3정규형은 데이터베이스 정규화의 세 번째 단계로, 제2정규형(2NF)을 만족하면서 테이블 내에서 이행적 종속성(transitive dependency)을 제거하는 것을 목표로 한다. 제3정규형은 기본 키에만 종속하도록 설계하여 데이터 중복을 줄이고 데이터 무결성을 더욱 강화한다.

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

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

  • 테이블이 제2정규형(2NF)을 만족해야 한다.
  • 비기본 속성(기본 키에 속하지 않는 속성)이 다른 비기본 속성에 종속되지 않아야 한다. 즉, 모든 비기본 속성은 기본 키에만 의존해야 한다.

이행적 종속성[edit | edit source]

이행적 종속성(transitive dependency)은 속성 A가 속성 B에 종속하고, 속성 B가 속성 C에 종속할 때, 속성 A가 속성 C에도 간접적으로 종속되는 관계를 의미한다. 이 경우, 속성 C는 기본 키가 아닌 속성 B에 종속하므로, 제3정규형을 위반하게 된다.

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

3NF에 맞지 않는 예시

  • 학생 테이블에 학생ID, 학과, 학과 위치 정보를 저장한다고 가정하자. 학생ID가 기본 키이고, 학과 위치는 학과에 따라 달라진다.
학생ID 학과 학과 위치
1 컴퓨터공학 공학관
2 경영학 경영관
3 컴퓨터공학 공학관
  • 이 구조에서는 학과 위치가 학과에 종속되어 있으며, 학과는 학생ID에 종속되어 있다. 따라서, 학과 위치는 학생ID에 이행적으로 종속되어 있으며, 제3정규형을 위반한다.

3NF에 맞게 변환된 예시

이행적 종속성을 제거하기 위해 학과와 학과 위치 정보를 별도의 테이블로 분리한다.

  • 학생 테이블
학생ID 학과
1 컴퓨터공학
2 경영학
3 컴퓨터공학
  • 학과 테이블
학과 학과 위치
컴퓨터공학 공학관
경영학 경영관
  • 이렇게 분리함으로써 모든 비기본 속성은 기본 키에만 종속되도록 되어 제3정규형을 만족하게 된다. 또한, 데이터의 중복을 줄이고 무결성을 강화할 수 있다.

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

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

  • 이행적 종속성을 제거하여 데이터 중복을 줄이고 데이터 무결성을 향상시킨다.
  • 데이터 수정 시 일관성을 유지하며, 중복된 데이터를 수정할 필요가 없다.
  • 테이블 구조가 단순화되어 데이터 검색 및 유지 관리가 쉬워진다.

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

제3정규형은 대부분의 데이터 중복을 제거하지만, 경우에 따라 추가적인 최적화를 위해 보이스-코드 정규형(BCNF)이나 제4정규형(4NF) 같은 더 높은 정규형이 필요할 수 있다. 특히 특정 복잡한 종속 관계를 다루어야 할 때 추가 정규화가 도움이 될 수 있다.

같이 보기[edit | edit source]