by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

정규화




1. 정규화란(Normalization)?

  • 정규화는 속성 간의 부정확한 종속성을 없애는 것을 의미함.
  • 함수 종속 개념을 기반으로 유사한 속성들은 모으고 종속성이 없는 독립적인 속성들은 분리하는 것.
  • 관계형 데이터 모델은, 속성의 종속성과 의존성을 분석해 더는 분해될 수 없는 엔터티로 만드는 정규화 과정 거쳐야 함.
  • 비정규화는 반드시 정규형을 거쳐야 진행 가능함.

2. 아노말리 현상

  • 정규형은 아노말리 현상을 최소화 함.
  • 아노말리는 데이터 이상 현상으로 업데이트, 삭제, 삽입 아노말리 등이 존재함.
  • 데이터 중복은 아노말리를 발생시키고, 중복이 없는 정규형은 아노말리를 최소화 함.

3. 모델 구조

  • 관계형 데이터베이스는 모델이 잘 구현되어 있을 경우, 데이터를 가장 효율적으로 저장하고 추출해 사용할 수 있음.
  • 반대로 구조가 잘 못 되었을 경우, 성능과 무셜성 그리고 유지보수 측면에서 심각한 문제가 발생함.

4. 정규화 vs 비정규화

  • 정규화
    • 실제 업무를 가장 잘 반영할 수 있음.
    • 간결하게 구성되어 더욱 직관적으로 이해할 수 있음.
    • 확장성이 용이함.
  • 비정규화
    • 특정 어플리케이션 성능을 위해 비정규화를 채택하기도 함.

5. 중복 속성(상품명)이 사용된 모델

  • 상품엔터티에 상품명 속성이 존재함에도 불구하고, 장바구니, 관심상품, 주문상품 엔터티에 상품명 속성이 존재하여 중복으로 관리함.
  • 이 모델은 상품 엔터티아 조인을 피하려고 상품명을 중복 속성으로 채택함.
  • 하지만, 이 모델에서 상품코드가 '101011'인 상품의 이름이 변경되면, 상품 엔터티 이외에 상품명이 들어간 모든 엔터티의 속성값을 수정해야 함.
  • 이로 인해 업데이트 비효율이 발생하고, 이보다 복잡할 경우 데이터 정합성이 깨질 수 있음.

문서에 대하여

  • 최초작성자 : 강정식
  • 최초작성일 : 2014년 03월 29일
  • 이 문서는 구루비 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
  • 이 문서의 내용은 Open Made에서 출간한 '관계형 데이터 모델링 프리미엄 가이드'를 참고하였습니다.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.