ER/Studio 데이터모델링이란 - 6.정규화

2012.01.04 02:14

문효섭 조회 수:19850

1. 정규화 정의

1972년 E.F CODE 박사에 의해 제안된 이론으로 실세계에서 발생하는 데이터를 수학적인 방법에 의해 구조화시켜 체계적으로 관리할 수 있도록 한 이론 


2. 정규화 필요성

가. 엔티티를 구성하는 속성간의 중복을 제거하여 데이터베이스를 최적화

나. 속성간의 함수종속성에 의해 발생하는 이상현상을 제거 

이상현상                                      내용
입력이상 데이터 입력 시 필요없는 속성까지 입력해야 하는 현상         
수정이상 데이터 수정시 원하지 않는 데이터까지 수정되는 현상
삭제이상 데이터 삭제 시 필요한 데이터까지 삭제되는 현상



3. 정규화 종류

    정규화 종류                            내용 함수종속성
1차 정규화 모든 속성은 원자값을 가짐 
복수의 속성 값을 갖는 속성을 분리
 
2차 정규화 주식별자에 종속적이지 않은 속성의 분리         
부분 종속 속성을 분리
부분함수종속성
3차 정규화 속성에 종속적인 속성의 분리 
이전 종속 속성의 분리
이행함수종속성
보이스-코드 정규화    다수의 주식별자 분리  
4차 정규화 속성간의 다중종속성 제거 다중종속성
5차 정규화 Join 종속성 제거 Join 종속성



1) 1차 정규화

반복되는 속성이나 그루브이 속성을 제거하고, 새로운 엔티티를 추가한 후에 기존의 엔티티와 일대다의 관계를 형성한다. 

하나의 제품에 대해 여러 개의 주문서가 접수된 내용이다. 
정규화1.png

위의 예에서 데이터의 내용이 반복되는 속성으로 인해 일부 속성이 중복된다면 입력, 수정, 삭제시 이상 현상이 발생하게 된다. 

  • 입력 이상 : 주문이 발생되어야만 제품 정보를 등록할 수 있다.
  • 수정 이상 : 마우스의 수량을 9702에서 15000으로 변경하고자 한다면 데이터를 3번 수정해야 한다.
  • 삭제 이상 : 제품번호가 1201인 스피커를 주문한 내역을 삭제하면 제품명, 재고수량 정보도 모두 삭제된다. 

제품에 관련된 정보로부터 반복되어 생성되는 주문 관련 정보를 분리함으로써 1차 정규화를 수행한다. 

   정규화2.png


2) 2차 정규화 

복합식별자로 구성된 경우 해당 엔티티 안의 속성들은 복합식별자 전체에 의존적이어야 한다.

만일 복합식별자 일부에 의존적인 속성이 존재한다면 이를 제거해야 한다.(부분종속속성 제거) 

제품번호 + 주문번호에 종속적인 속성 : 주문수량

주문번호에 종속적인 속성 : 수출여부, 고객번호, 사업자번호, 우선순위  

  • 입력 이상 : 고객정보 입력 시 주문정보도 입력해야 함
  • 수정 이상 : 만약 주문번호 AB345의 우선순위를 1에서 10으로 수정할 경우, 1001+AB345와 1007+AB345를 같이 수정해야 함
  • 삭제 이상 : 주문번호 삭제시 고객번호도 함께 삭제됨 

주문번호에 완전히 종속적인 속성을 분리하여 별도의 엔티티를 구성했다.

정규화3.png

3) 3차 정규화 

한 엔티티 안의 모든 주식별자가 아닌 속성들은 주식별자에 의존해야 한다. 속성에 종속적인(이전종속) 속성이 있다면 분리해야 한다. 

  • 입력 이상 : 새로운 고객 등록 시 주문이 없으면 입력이 안됨
  • 수정 이상 : 한 고객이 여러 번 주문한 경우 고객 정보가 반복적으로 발생. 고객 정보 수정시 여러 개의 데이터를 수정해야 한다.
  • 삭제 이상 : 고객번호 4520이 주문을 취소하면 주문 정보만 삭제되는 것이 아니라 고객 정보도 모두 삭제된다. 

고객번호에 종속적인 속성을 분리하여 별도의 엔티티를 구성했다. 

정규화4.png

4) 보이스-코드 정규화 

데이블에 존재하는 식별자가 여러 개 존재할 경우 식별자가 중복되어 나타나는 현상을 제거 
정규화5.png

주식별자 후보 : 납품업체코드 + 제품코드

                       납품회사명 + 제품코드 

이 중 하나를 선택하면 3차 정규화까지 만족하게 된다. 

  • 입력 이상 : 새로운 사반(주) 에서 새로운 제품을 납품하면 납품업체코드 01과 남품회사명 사반(주)가 모두 입력. 중복 입력으로 인한 문제 발생
  • 수정 이상 : 납품회사명을 수정하려 하면 데이터가 중복되어 존재하므로 여러 로우에 해당하는 데이터를 수정해야 함
  • 삭제 이상 : 제품코드가 B001 이고 납품업체코드가 03인 납품정보를 삭제하면 시그마(주)라는 납품업체 정보가 사라짐 
    정규화6.png
     
번호 제목 글쓴이 날짜 조회 수
공지 [기술 보고서 다운로드] IDC Technology Spotlight: 모델 기반 데이터 설계를 통한 비즈니스 민첩성 확보 방안 관리자 2015.08.24 8533
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39730
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50499
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52906
142 [기술백서] ER/Studio를 활용한 데이터 표준화 시스템 구축방안 관리자 2014.11.12 1156
141 DB Power Studio #4-2. DBArtisan 둘러보기(데이터베이스 보안 관리) 손보라 2014.08.20 1175
140 DB Power Studio #4-5. DBArtisan 둘러보기(데이터 관리) 손보라 2014.08.21 1179
139 DB Power Studio #4-6. DBArtisan 둘러보기(데이터베이스 성능 관리) 손보라 2014.08.22 1185
138 DB Power Studio #4-3. DBArtisan 둘러보기(데이터베이스 공간 관리) 손보라 2014.08.21 1203
137 DB Power Studio #4-7. DBArtisan 둘러보기(메뉴 기능) 손보라 2014.08.22 1212
136 DB Power Studio #4-4. DBArtisan 둘러보기(SQL 관리) 손보라 2014.08.21 1276
135 ER/Studio 기본 가이드 #6. ER/Studio Data Architect로 메타데이터 import & export하기 손보라 2014.08.07 1277
134 ER/Studio 기본 가이드 #5. ER/Studio Data Architect의 데이터 딕셔너리 사용하기 손보라 2014.08.06 1296
133 DB Power Studio #4-1. DBArtisan 둘러보기(오브젝트 및 스키마 관리) 손보라 2014.08.20 1319
132 ER/Studio 기본 가이드 #4. ER/Studio Data Architect로 모델 간 비교 및 차이점 반영하기 손보라 2014.08.05 1323
131 DB Power Studio #1. DB Optimizer 둘러보기 손보라 2014.08.09 1334
130 DB Power Studio #3-2. Rapid SQL 둘러보기(비주얼 쿼리 빌더) 손보라 2014.08.19 1343
129 [기술백서] 데이터아키텍트가 비즈니스 업무 부서와 협업하기 위해 알아야 할 다섯가지 관리자 2014.09.26 1343
128 [기술백서] ERwin이 아닌 ER/Studio를 선택하는 10가지 이유 관리자 2014.11.12 1347
127 ER/Studio 기본 가이드 #2. ER/Studio Data Architect로 논리/물리 모델링 시작하기 손보라 2014.08.01 1350
126 ER/Studio 기본 가이드 #3. ER/Studio Data Architect로 기존 데이터베이스 문서화하기 손보라 2014.08.04 1354
125 ER/Studio 기본 가이드 #1. ER/Studio Data Architect로 데이터모델링 시작하기 손보라 2014.08.01 1361
124 DB Power Studio #3-1. Rapid SQL 둘러보기(SQL 작성) 손보라 2014.08.18 1388
123 [온라인 세미나 발표자료] 스마트한 DBMS관리: DB PowerStudio 따라잡기, LIVE! 관리자 2014.09.25 1405