SQL개발자 (SQLD)

SQLD 노랭이 1차정규화 37,38번 문제

유혁스쿨 2023. 5. 31. 11:29
728x90
반응형

문제 37)

<모델>

모델코드
모델명
제품류코드
물품가
출하가
A유형분류코드1
B유형분류코드2
C유형분류코드3
D유형분류코드4
E유형분류코드5
바코드
가로
세로
높이
모델구분

위 테이블은 컬럼단위에서 중복된 테이블이다.

 

컬럼에 의한 반복적인 속성값을 갖는 형태는 속성의 원자성을 위배한 제 1차 정규화의 대상이 된다.

이와 같은 반복적인 속성 나열 형태에서는 각 속성에 대해 'or'연산자로 연결된 조건들이 사용되는데,

이 때 어느 하나라도 인덱스가 정의되어 있지 않으면 'or'로 연결된 모든 조건절들이

인덱스를 사용하지 않고 한 번에 전체 데이터 스캔으로 처리되게 되어 성능 저하가 나타날 수 있게 된다.

또한 모든 반복 속성에 인덱스를 생성하게 되면 검색 속도는 좋아지겠지만 반대급부적으로 너무 많은 인덱스로 인해 입력, 수정 삭제의 성능이 저하되므로, 1차 정규화를 통해서 자연스럽게 문제가 해결될 수 있도록 해야한다.

 

위 테이블에서 유형기능분류코드 각각에 대하여 개별로 INDEX를 모두 생성할 경우 입력, 수정, 삭제 때 성능이 저하된다.


제 1차 정규화를 수행하게 되면 1:M관계로 두개의 테이블로 분리된다.

<모델>

모델코드
모델명
제품류코드
물품가
출하가

바코드
가로
세로
높이
모델구분

<모델기능분류코드>

유형코드
기능분류코드
모델코드(FK)
 

 

따라서 제 1차 정규화를 수행한 후 인덱스를 적용하는 것이 좋다.


문제 38)

<일재고>

물류센터코드
재고일자
월초재고수량
장기재고1개월수량
장기재고2개월수량
장기재고3개월수량
장기재고1개월주문수량
장기재고2개월주문수량
장기재고3개월주문수량
장기재고1개월금액
장기재고2개월금액
장기재고3개월금액
장기재고1개월주문금액
장기재고2개월주문금액
장기재고3개월주문금액

위 엔터티 또한 컬럼 단위에서 중복된 경우에 해당한다.


<일재고>

물류센터코드
재고일자
월초재고수량

<일재고상세>

물류센터코드(FK)
재고일자(FK)
재고기간
장기재고수량
장기재고주문수량
장기재고금액
장기재고주문금액

중복 컬럼에 1차 정규형을 완료하게 되면 일재고와 일재고상세 엔터티로 분리되어 1:M관계가 형성된다.

728x90
반응형