index

테이블 간에 중복된 데이타를 허용하지 않는다는 것. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)을 유지할 수 있으며, DB의 저장 용량도 줄일 수 있음. 정규화에는 제 1 정규화, 제 2 정규화, 제 3 정규화, BCNF ~ 제 6 정규화까지 존재. 하지만 보통 실제로는 1 ~ 3 정규화까지의 과정만 거치게 됨.

정규화 단계별 과정

  • 제 1 정규화

    • 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 분해하는 것.

  • 제 2 정규화

    • 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것

      • 완전 함수 종속 : 기본키의 부분집합이 결정자가 되어서는 안된다는 것.

  • 제 3 정규화

    • 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것

      • 이행적 종속 : A → B, B → C 가 성립할 때 A → C 가 성립되는 것.

  • BCNF

    • 제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것

정규화의 장단점

  • 장점

    • 이상현상을 제거할 수 있음

    • db와 연동된 프로그램에 최소한의 영향만을 미쳐 프로그램의 생명 연장

    • 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 됨.

  • 단점

    • 릴레이션 분해로 인해 join연산이 많아짐.

      • 조인이 많이 발생해 성능저하가 일어나면 반정규화(비정규화) 적용 가능.

    • 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있음.

참고/출처

정규화(Normalization)란?arrow-up-right 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNFarrow-up-right 정규화(Normalization) 쉽게 이해하기arrow-up-right

Last updated