1. 1차 정규화 사례 1
- 한번의 주문에 여러 개의 제품을 주문한다 는 업무 규칙이 있는데 < 그림 1> 의 왼쪽 편과 같이 데이터 모델링을 했다고 가정해 보자. 왼쪽의 엔티티 타입은 하나의 주문에 여러 개의 제품이 존재하므로 주문번호, 주문일자, 배송요청일자의 동일한 속성 값이 주문한 제품의 수만큼 반복해서 저장 될 것이다. 따라서 오른쪽과 같이 1차 정규화를 적용하여 중복속성 값을 제거함
<그림 1> 1차 정규화의 응용 1
- 이 사례의 특징은 주문의 PK인 주문번호가 중복 속성값을 가지기 때문에 PK를 가진 데이터 베이스 테이블 생성이 불가능하다는 특징이 있음
2. 1차 정규화 사례 2
- 로우(Row) 단위로 1차 정규화가 안 된 모델은 PK의 유일성이 확보되지 않으므로 인해 실전
프로젝트에서는 거의 찾아보기가 힘들다. 반면 로우 단위로 중복된 내용을 컬럼 단위로 펼쳐 중복하는 경우가 아주 많이 발견된다. 1차 정규화의 응용이 된 형태로 볼 수 있다. 계층형 데이터베이스에서 이와 같은 형식의 모델링을 많이 했는데 관계형 데이터베이스에서도 이러한 형식으로 모델링을 진행하는 경우가 많이 발견된다.
<그림 2> 1차 정규화의 응용 2
- <그림 2>의 모델을 보면 왼쪽 모델의 일재고 엔티티 타입에는 3개월 분에 대한 장기재고 수량, 주문수량, 금액, 주문금액이 차례대로 기술되어 있다. 이렇게 되면 장기재고 관리가 4개월 이상으로 늘어날 때 모델을 변경해야 하는 치명적이 결함이 있다. 따라서 오른쪽과 같이 1차 정규화를 통해 모델을 분리함으로써 업무 변형에 따른 데이터 모델의 확장성을 확보하도록 해야 한다.
3. 1차 정규화 사례 3 - 속성의 원자화, Repeating Value 제거