메뉴 건너뛰기

bysql.net

제2절_정규화와_성능

2012.03.04 10:52

ljw 조회 수:10394

2절 정규화와 성능

1.정규화를 통한 성능 향상 전략


정규화란?

속성들간의 종속성을 분석해서 기본적으로 하나의 종속성이 하나의 릴레이션으로 표현되도록 분해해 나가는 과정

데이터 처리의 입력/수정/삭제이상을 제거하기 위해 분리 통합하는 방법

데이터 모델을 구조화시키고 개선시켜나가는 절차

→  정보가 손실되지 않고 중복성을 제거하는 절차

SQL_074.jpg


정규화 내용 정리 

크기변환_IMAG0338.jpg


2.반정규화된 테이블의 성능저하 사례

2차 정규화가  안된 경우

사례1

SQL_075.jpg 


만약 조건을 관서등록일자로 검색하는 경우

반정규화 경우 : 같은 관서등록일자 데이터를 누적된 데이터양 만큼 조회

정규화 경우 : 필요한 관서번호만 읽고 조인



사례2

어떤 물건을 매각할 때 매각일자를 정하고 그 일자에 해당하는 매각시간과 매각장소가 결정하는 속성의 성격을 가짐.

→ 매각일자:결정자  매각시간,매각장소 : 의존자  함수 종속성


SQL_077.jpg 

특정 매각장소에서 매각된 총매각금액, 총유찰금액을 조회할 경우


SELECT B.총매각금액 , B.총유찰금액 

   FROM (SELECT DISTINCT 매각일자, 매각장소

                   FROM 일자별매각물건 

      WHERE 매각장소 = '서울 7호') A, <== 100만건의 데이터를 읽어 DISTINCT함 

      매각일자별매각내역 B 

WHERE A.매각일자 = B.매각일자 

     AND A.매각장소 = B.매각장소;




SQL_079.jpg 

SELECT B.총매각금액 , B.총유찰금액 

    FROM 매각기일 A, 매각일자별매각내역 B 

 WHERE A.매각장소 = '서울 7호' <== 5천건의 데이터를 읽음 

       AND A.매각일자 = B.매각일자 

       AND A.매각장소 = B.매각장소;





사례3

동일한 속성 형식을 두개 이상의 속성으로 나열 → 속성중복(1정규화 위배)

SQL_081.jpg 

SELECT 모델코드, 모델명 

    FROM 모델 

 WHERE ( A유형기능분류코드1 = '01' )

         OR ( B유형기능분류코드2 = '02' ) 

         OR ( C유형기능분류코드3 = '07' ) 

         OR ( D유형기능분류코드4 = '01' )

         OR ( E유형기능분류코드5 = '02' ) 

         OR ( F유형기능분류코드6 = '07' ) 

         OR ( G유형기능분류코드7 = '03' ) 

         OR ( H유형기능분류코드8 = '09' ) 

         OR ( I유형기능분류코드9 = '09' ) 


인덱스 과다로 인한 입력/수정/삭제 성능 저하. 위의 쿼리에서 or 조건에 해당하는 컬럼중 하나라도 인덱스가 생성되어있지 않을 경우 조회시 성능저하.





SQL_084.jpg 


유형추가시에도 테이블 구조가 변경될 필요 없는 유연한 데이터 모델





사례4

1정규화 위반사례로 동일함

SQL_086.jpg



6.함수적 종속성에 근거한 정규화 수행 필요

함수의 종속성은 데이터들이 어떤 기준값에 의해 종속되는 형상을 지칭하는 것.

이때 기준값을 결정자, 종속되는 값을 종속자라고 한다.


정규화의 궁극적인 목적은 반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것.

→ 함수의 종속성을 이용하여 정규화 작업 진행에 이용


주민등록번호가 이름, 출생지, 호주를 함수적으로 결정함.

SQL_087.jpg

번호 제목 글쓴이 날짜 조회 수
58 Front Page file 운영자 2012.02.21 186700
57 Week1_이진우 [5] ljw 2012.07.16 46278
56 제1절_성능_데이터_모델링의_개요 file ljw 2012.03.04 44546
55 제4절_고급_조인_기법 suspace 2012.06.05 31240
54 제1절_Lock balto 2012.05.05 25259
53 제1절_데이터_모델의_이해 실천하자 2012.03.04 22594
52 제5절_식별자 file ljw 2012.03.04 18958
51 제1절_표준_조인(STANDARD_JOIN) file ljw 2012.03.19 15924
50 제3절_반정규화와_성능 file ljw 2012.03.04 15292
49 제5절_WHERE_절 file 보라빛고양이 2012.03.10 14879
48 제4절_관계(Relationship) [1] 실천하자 2012.03.04 13028
47 제5절_그룹_함수(GROUP_FUNCTION) file balto 2012.03.31 12458
46 제2절_소트_튜닝 file ljw 2012.06.04 12024
45 제2절_DDL(DATA_DEFINITION_LANGUAGE) [1] file balto 2012.03.09 11722
44 제7절_GROUP_BY_HAVING_절 suspace 2012.03.12 11531
43 제1절_데이터베이스_아키텍처 [2] ljw 2012.04.23 11523
42 제4절_서브쿼리 오예스 2012.03.27 11516
41 제1절_관계형_데이터베이스_개요 balto 2012.03.09 10446
» 제2절_정규화와_성능 file ljw 2012.03.04 10394
39 제2절_인덱스_튜닝 balto 2012.05.18 9904