본문 바로가기
IT 와 Social 이야기/Relational Data Modeling 프리미엄 가이드 - 김기창

04 정규화 (Normalization) 3

by manga0713 2019. 9. 30.

 

 

 

 

- 2정규형

  • 후보 식별자 속성과 일반 속성 간의 종속성에 의해 수행된다.
  • 릴레이션의 모든 속성이 후보 식별자 전체에 종속적이면 2정규형이다.
  • 모든 비식별자 속성은 후보 식별자 속성에 완전 함수 종속(Fully Functional Dependency)돼야 한다. 부분 함수 종속으로 말미암아 발생한 중복 데이터를 제거하는 것이 2정규화다.
    • 만약 일반 속성 중에 후보 식별자 전체에 종속적이지 않고 후보 식별자를 구성하는 속성 일부에 종속(Partial Functional Dependency)적인 속성이 있다면 중복이 발생했으므로 그 속성을 릴레이션에서 분리해야 2정규형이 된다.

 

 

 

 

 

  • 위 그림에서 C속성은 후보 식별자(주 식별자)의 일부분인 B속성에만 종속돼 부분 함수 종속(Partial Functional Dependency) 됐으므로 아래 그림과 같이 B속성을 주 식별자로 하는 릴레이션을 추가해 두 개의 릴레이션으로 분리해야 한다.

 

 

 

[ 2정규형 릴레이션 ]

 

 

 

 

 

 

  • 위 모델에서 일반속성인 상품명과 단가는 주 식별자인 전체(주문번호, 상품코드)에 종속되지 않고 상품코드에만 종속(부분 함수 종속)된다. 이는 2정규형에 어긋나므로 아래 모델과 같이 상품명과 단가는 주문상품 엔터티에서 제외하고 상품코드를 주 식별자로 하는 상품 엔터티를 상위 엔터티로 생성해야(정규화) 한다.

 

 

 

 

[ 2정규형 모델과 릴레이션 ]

 

 

 

  • 최근 아래 모델과 같이 주문상품 엔터티에서 상품명으로 조회하는 일이 빈번한 경우 성능을 위해 상품명을 주문상품에 추가로 배치하여(중복 속성을 사용하여) 구성하는 경우가 존재 함
    • 중복을 제거하는 것이 데이터 모델링의 기본적인 원칙이라는 것을 유념해야 한다.