새로운 글
새로운 덧글
2 반정규화(역정규화)

정규화된 엔티티, 속성, 관계를 시스템의 성능 향상, 개발과 운영을 단순화하기 위해 데이터 모델을 통합하는 프로세스를 말한다.

즉 데이터의 정합성과 데이터의 무결성을 우선으로 할지 데이터베이스 구성의 단순화와 성능을 우선으로 할지를 결정한다. 


2.1 반정규화(역정규화) 절차

1) 반정규화(역정규화) 대상 조사

→ 범위 처리 빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스 수가 많고, 항상 일정한 범위만을 조회하는 경우

→  대량의 범위 처리 조사 : 대량이 데이터 범위를 자주 처리하는 경우

→ 통계성 프로세스 조사 : 별도의 통계 테이블 고려

→  테이블 조인 개수 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우 

2) 다른 방법 유도 검토

→ 뷰 테이블 : 지나치게 많은 조인이 걸려 데이터 조회하는 작업이 어려운 경우

→클러스터링 또는 인덱스 적용 : 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다.(파티셔닝 기법)

→애플리케이션 : 로직을 변경함으로써 성능을 향상시킬 수 있다. 


3) 반정규화(역정규화) 적용

→ 테이블 반정규화(역정규화)

→ 속성의 반정규화(역정규화)

→ 관계의 반정규화(역정규화) 


2.2 테이블 반정규화(역정규화) 방법

1. 테이블 병합 2. 테이블 분할 3. 테이블추가
- 1:1:관계의 테이블 병합 
- 1:M 관계의 테이블 병합 
- 슈퍼타입 서브타입 테이블 병합
- 수직 분할 
- 수평 분할
- 중복 테이블 추가 
- 통계 테이블 추가 
- 이력 테이블 추가 
- 부분 테이블 추가



2.3 속성의 반정규화(역정규화)

1) 컬럼 중복 : 일반적으로 조인 프로세스를 줄이기 위해 컬럼 중복

 * 공급자라는 마스터 테이블과 변경되는 전화번호, 메일주소 내용이 이력형태로 관리되는 데이터 모델이다. 

이 모델에서 가장 최근에 변경된 값을 가져오려면 복잡한 조인이 발생된다.

SELECT a.공급자명, b.전화번호, c.메일주소 
  FROM 공급자명 a, 
       (SELECT x.공급자번호, x.전화번호 
          FROM 전화번호 x, 
               (SELECT   공급자번호, MAX (순번) 순번 
                    FROM 전화번호 
                   WHERE 공급자번호 BETWEEN '1001' AND '1005' 
                GROUP BY 공급자번호) y 
         WHERE x.공급자번호 = y.공급자번호 AND x.순번 = y.순번) b, 
       (SELECT x.공급자번호, x.메일주소 
          FROM 메일주소 x, 
               (SELECT   공급자 번호, MAX (순번) 순번 
                    FROM 메일주소 
                   WHERE 공급자번호 BETWEEN '1001' AND '1005' 
                GROUP BY 공급자번호) y 
         WHERE x.공급자번호 = y.공급자번호 AND x.순번 = y.순번) c 
 WHERE a.공급자번호 = b.공급자번호 
   AND a.공급자번호 = c.공급자번호 
   AND a.공급자번호 BETWEEN '1001' AND '1005'


정규화된 모델이 반정규화되지 않으면 복잡한 SQL문이 쉽게 발생된다. 

  

위와 같이 가장 최근에 변경된 값을 마스터에 위치(컬럼 중복) 반정규화하면 성능향상을 볼 수 있다.

SELECT 공급자명, 전화번호, 메일주소, 위치 
  FROM 공급자 
 WHERE 공급자번호 BETWEEN '1001' AND '1005'


2) 파생컬럼의 생성 : 판매 테이블의 판매금액이나 성적 테이블의 총점, 평균 등이 이에 해당

* 성적

학번 총점 평균 순위
20090101 890 4.0 9
20090101 950 4.3 3


* 공사진행

공사번호 공사일자 공사비 공사비누적
2001-001 2001-01-01 750,000 750,000
2001-001 2001-02-01 800,000 800,000


문제 : 성적 테이블의 순위? 한 학생의 총점이 변경되면 모든 레코드의 순위가 변경될 수 있다.

공사진행 테이블의 공사비누적? 공사이력이 변경 또는 추가될 때 현재 레코드와 그 이후 레코드의 공사비누적 값이 변경되어야 한다.

즉, 전후 레코드간 영향을 미칠 수 있는 속성은 가능하면 피하는 것이 좋다.  

번호 제목 글쓴이 날짜 조회 수
공지 [기술 보고서 다운로드] IDC Technology Spotlight: 모델 기반 데이터 설계를 통한 비즈니스 민첩성 확보 방안 관리자 2015.08.24 4321
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 35804
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 37580
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 48856
20 [매크로활용] FK 일괄 명명 file 문효섭 2012.04.10 10548
19 [매크로활용] 테이블 소유자 일괄 수정 file 문효섭 2012.04.10 10755
18 [매크로활용] 한글명(논리명)을 Comment(Definition)에 반영하기 문효섭 2012.04.10 10802
17 [매크로활용] 메타데이터를 엑셀로 file 문효섭 2012.04.10 11131
16 Rapid SQL 사용자 가이드 file 문효섭 2012.01.27 11395
15 [매크로활용] 엔티티, 속성, 관계, 뷰 정의 일괄 임포트 file 문효섭 2012.04.10 11490
14 [매크로활용] 용어사전 활용 문효섭 2012.04.10 11502
13 데이터모델링이란 - 1.개요 file 관리자 2012.01.04 11614
12 [매크로활용] 운영DB의 Comment를 한글명(논리명)으로 일괄 변환 [1] file 문효섭 2012.04.10 11822
11 [매크로활용] 도메인 일괄 바인딩 file 문효섭 2012.04.10 12217
10 데이터모델링이란 - 8.관계형 테이블 전환 file 문효섭 2012.01.04 12511
9 데이터모델링이란 - 7.실전데이터모델링 이슈 file 문효섭 2012.01.04 12646
8 데이터모델링이란 - 4.식별자 file 문효섭 2012.01.04 12929
» 데이터모델링이란 - 9.반정규화(역정규화) 문효섭 2012.01.04 14914
6 [매크로활용] 산출물 자동화(테이블 정의서) 문효섭 2012.04.10 16004
5 데이터모델링이란 - 6.정규화 file 문효섭 2012.01.04 17676
4 데이터모델링이란 - 3.속성(Attribute) file 문효섭 2012.01.04 22780
3 데이터모델링이란 - 5.관계(Relational) file 문효섭 2012.01.04 33072


광고 모듈이 설치되어 있지 않아 실행을 중단합니다..