제2절_정규화와_성능
2012.03.04 10:52
2절 정규화와 성능
1.정규화를 통한 성능 향상 전략
정규화란?
속성들간의 종속성을 분석해서 기본적으로 하나의 종속성이 하나의 릴레이션으로 표현되도록 분해해 나가는 과정
데이터 처리의 입력/수정/삭제이상을 제거하기 위해 분리 통합하는 방법
데이터 모델을 구조화시키고 개선시켜나가는 절차
→ 정보가 손실되지 않고 중복성을 제거하는 절차
정규화 내용 정리
2.반정규화된 테이블의 성능저하 사례
2차 정규화가 안된 경우
사례1
만약 조건을 관서등록일자로 검색하는 경우
반정규화 경우 : 같은 관서등록일자 데이터를 누적된 데이터양 만큼 조회
정규화 경우 : 필요한 관서번호만 읽고 조인
사례2
어떤 물건을 매각할 때 매각일자를 정하고 그 일자에 해당하는 매각시간과 매각장소가 결정하는 속성의 성격을 가짐.
→ 매각일자:결정자 매각시간,매각장소 : 의존자 함수 종속성
특정 매각장소에서 매각된 총매각금액, 총유찰금액을 조회할 경우
SELECT B.총매각금액 , B.총유찰금액
FROM (SELECT DISTINCT 매각일자, 매각장소
FROM 일자별매각물건
WHERE 매각장소 = '서울 7호') A, <== 100만건의 데이터를 읽어 DISTINCT함
매각일자별매각내역 B
WHERE A.매각일자 = B.매각일자
AND A.매각장소 = B.매각장소;
SELECT B.총매각금액 , B.총유찰금액
FROM 매각기일 A, 매각일자별매각내역 B
WHERE A.매각장소 = '서울 7호' <== 5천건의 데이터를 읽음
AND A.매각일자 = B.매각일자
AND A.매각장소 = B.매각장소;
사례3
동일한 속성 형식을 두개 이상의 속성으로 나열 → 속성중복(1정규화 위배)
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 조건에 해당하는 컬럼중 하나라도 인덱스가 생성되어있지 않을 경우 조회시 성능저하.
유형추가시에도 테이블 구조가 변경될 필요 없는 유연한 데이터 모델
사례4
1정규화 위반사례로 동일함
6.함수적 종속성에 근거한 정규화 수행 필요
함수의 종속성은 데이터들이 어떤 기준값에 의해 종속되는 형상을 지칭하는 것.
이때 기준값을 결정자, 종속되는 값을 종속자라고 한다.
정규화의 궁극적인 목적은 반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것.
→ 함수의 종속성을 이용하여 정규화 작업 진행에 이용
주민등록번호가 이름, 출생지, 호주를 함수적으로 결정함.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
18 | 제5절_배치_프로그램_튜닝 | 보라빛고양이 | 2012.07.04 | 6913 |
17 | 제3절_DML(DATA_MANIPULATION_LANGUAGE) | balto | 2012.03.09 | 6855 |
16 | 제8절_ORDER_BY_절 | 실천하자 | 2012.03.20 | 6751 |
15 | 제2절_SQL_파싱_부하 | ljw | 2012.04.23 | 6548 |
14 | 제8절_절차형_SQL | 보라빛고양이 | 2012.04.02 | 6544 |
13 | 제2절_인덱스_기본 | 실천하자 | 2012.04.12 | 6501 |
12 | 제1절_고급_SQL_활용 | 실천하자 | 2012.06.11 | 6292 |
11 | 제5절_데이터베이스_구조와_성능 | 오예스 | 2012.03.08 | 6100 |
10 | 제3절_동시성_제어 | 운영자 | 2012.05.08 | 6038 |
9 | 제4절_데이터베이스_IO_원리 | 운영자 | 2012.04.30 | 5968 |
8 | 제3절_데이터베이스_Call과_네트워크_부하 | 오예스 | 2012.04.30 | 5907 |
7 | 제2절_집합_연산자(SET_OPERATOR) | ljw | 2012.03.19 | 5800 |
6 | 문제작성 | 실천하자 | 2012.07.16 | 5796 |
5 | 제4절_파티션_활용 | 오예스 | 2012.06.26 | 5755 |
4 | 제2절_쿼리변환 | ljw | 2012.05.14 | 5615 |
3 | Week1_이주영 | suspace | 2012.07.17 | 5027 |
2 | 제3절_조인_기본_원리 | 보라빛고양이 | 2012.05.31 | 3847 |
1 | Week1_승대수 | 보라빛고양이 | 2012.07.17 | 3054 |