4.1. 정규화(Normalization)란?

정의

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


효과

  • 아노말리 현상을 최소화함
  • 중복이 최소화된 효율적인 구조의 모델이 생성됨
  • 실제 업무를 가장 잘 반영할 수 있음
  • 직관적이고 이해하기 쉬움


중복 데이터가 사용된 모델의 예

Richard Barker 표기법IE 표기법
  • 상품 엔터티와 조인을 피하려고 상품명을 중복 속성으로 채택한 모델이다.
  • 상품코드가 '101011'인 상품의 이름이 바뀌면, 상품 엔터티에 존재하는 상품명 속성값만 수정해선 안 됨
  • '101011' 상품이 장바구니, 관심상품, 주문상품 엔터티에 존재하면 상품명 속성 값을 같이 수정하여야 함 -> 다량의 업데이트 발생으로 성능저하
  • 만약 업데이트를 하지 않으면 데이터 정합성이 깨짐

ER 다이어그램 표기법

  • $ : 식별자 비상속
  • # : 실질 식별자(PK)
  • (#) : 보조 식별자
  • \* : 반드시 값이 존재해야 하는 속성
  • 0 : 반드시 값이 존재하지 않아도 되는 속성


Richard Barker 표기법
  • 관계에서
    • | 표시 있는 것은 식별자로 상속
    • | 표시 없는 것은 일반속성으로 상속

  • 시작하는 쪽이 점선으로 시작하면 반대쪽 데이터가 존재하지 않을 수 있음


IE 표기법
  • 관계에서
    • 실선은 식별자로 상속
    • 점선은 일반속성으로 상속
  • O가 붙어 있는 쪽은 데이터가 존재하지 않을 수 있음