본문 바로가기
제조실행시스템(MES)

4.2 정규화(Normalization)의 필요성(2)

by 네이든 루니 2023. 5. 18.
반응형

제조실행시스템(MES)은 제조 현장의 생산 프로세스를 실시간으로 모니터링하고 제어하는 소프트웨어 기반 시스템입니다. 생산 계획, 작업 지시, 자재 관리, 품질 관리, 생산 실적 분석 등 다양한 기능을 제공하여 제조 효율성을 높이고 생산 비용을 절감하는 데 도움을 줍니다.

manufacturing-execution-system
제조실행시스템

제1정규화(1NF)

제1정규화란 반복 또는 복수 값을 갖는 속성을 제거하여 모든 속성은 반드시 하나의 값만을 갖도록 하는 것이다.

 

정규화 전

예비주문서→
@주문번호+주문일자+부서번호+관리자명+부서명칭+전화번호+배달일자+(상품번호+상품내역+단가+재고수량+주문수량+금액)

이 경우 상품번호 개수만큼 주문내역이 반복 값을 갖는다. 이처럼 어떤 속성이 다수의 반복적인 값을 갖는다면 1:M 관계의 새로운 엔티티를 추가해야 한다.
 

정규화 후

주문→
@주문번호+주문일자+부서번호+관리자명+부서명칭+전화번호+배달일자
주문상세→
@주문번호+@상품번호+상품내역+단가+재고수량+주문수량+금액

앞의 주문서라는 엔티티가 주문과 주문상세라는 엔티티로 분리되어 1:M 관계를 가진 모습을 확인할 수 있다.

제2정규화(2NF)

제2정규화란 기본 키에 종속되지 않는 속성을 제거하는 것이다. 즉, 모든 속성은 반드시 엔티티 식별자에 전부 종속되어야 한다는 뜻이다.
 

정규화 전

주문→
@주문번호+주문일자+부서번호+관리자명+부서명칭+전화번호+배달일자
주문상세→
@주문번호+@상품번호+상품내역+단가+재고수량+주문수량+금액

위의 엔티티 내의 속성들 중 주문수량은 주문번호와 상품번호의 복합 식별자에 종속적이지만 상품내역은 상품번호에만 종속적인 것을 볼 수 있다. 이와 같이 어떤 속성이 식별자의 일부 속성에만 종속적이라면 속성의 위치가 잘못된 것을 의미하며 새로운 엔티티를 추가해야 한다.
 

정규화 후

주문→
@주문번호+주문일자+부서번호+관리자명+부서명칭+전화번호+배달일자
주문상세→
@주문번호+@상품번호+주문수량+금액
상품→
@상품번호+상품내역+단가+재고수량

상품번호에 종속된 속성만을 모아 하나의 엔티티로 하고 주문번호와 상품번호 모두에 종속되는 속성만을 모아 또 하나의 엔티티로 분리된 모습을 볼 수 있다.

제3정규화(3NF)

제3정규화란 기본 키가 아닌 속성에 종속적인 속성을 제거하는 것이다. 즉, 식별자가 아닌 모든 속성들 간에는 서로 종속될 수 없다.
 

정규화 전

주문→
@주문번호+주문일자+부서번호+관리자명+부서명칭+전화번호+배달일자
주문상세→
@주문번호+@상품번호+주문수량+금액
상품→
@상품번호+상품내역+단가+재고수량

위의 그림에서 부서명칭이라는 속성은 식별자인 주문번호에 종속되지 않고 일반 속성인 부서번호에 종속적인 것을 볼 수 있다. 이처럼 속성 간에 종속성이 있는 경우에는 별도의 엔티티를 추가해야 한다.
 

정규화 후

주문→@주문번호+주문일자+부서번호+배달일자
부서→@부서번호+관리자명+부서명칭+전화번호
주문상세→@주문번호+@상품번호+주문수량+금액
상품→@상품번호+상품내역+단가+재고수량

속성 간의 종속성을 가진 속성을 별도의 엔티티로 분리함으로써 모든 엔티티의 속성들이 항상 식별자에 대해서만 종속적이게 해야 한다.

정리

비정규화를 간단하게 설명하면 데이터의 중복을 허용하는 것이다. 그러나 비정규화를 사용하는 유일한 목적을 조회 성능 향상에만 두어야 한다. 데이터웨어하우스 시스템에서 대량의 조회일 때 대부분 발생하나 많은 경우 편의성 때문에 사용하고 있다.
 
최근에는 비정규형을 선호하는 경향이 줄긴 했지만 아직도 비정규형이 편하다는 생각이 지배적이다. 별다른 고민 없이 사용할 때는 좋았는데 시간이 흐르고 담당자가 바뀔수록 어느 속성 값이 맞는지 확신할 수 없게 된다. 애플리케이션에서 아무리 체크하더라도 하드웨어나 네트워크, 사람의 실수, 임의 조작, 예외 처리 등으로 정합성이 깨질 수 있다.
 

비정규화 채택 전 고려해 볼 수 있는 대안

· 뷰(View)를 사용해 원천(Raw) 데이터 중복 관리 방지
· 파티션(Partition)으로 데이터를 나눠서 해결할 수 있는지 검토
· 클러스터링(Clustering)이나 IOT 같은 특수 형태의 테이블 사용 검토
· 인덱스를 조정하거나 힌트 등으로 해결할 수 있는지 검토
· DBMS의 최신 기술을 적용해 해결할 수 있는지 검토

비정규형은 정규화 과정을 통해 생성된 정규형에 성능 요구사항에 의해 중복을 허용하는 것이므로 반드시 정규화를 한 후에 비정규화를 거쳐야 할 것이다.

반응형

댓글