본문 바로가기
자격증/SQLD

SQLD - 정규화

by 지구스시2 2023. 9. 1.
728x90
반응형

 

정규화

데이터의 일관성, 최소 중복, 최대 유연성 위한 방법

데이터 분해 과정

테이블 분해 → 중복 제거 → 유연성 높임

입출력 데이터 양 줄여 성능 향상 시킨다

 

정규화 절차

제 1정규화 속성의 원자성 확보
기본키 설정
제 2정규화 기본키 2개 이상
부분 함수 종속 제거
제 3정규화 기본키 제외 칼럼 간의 종속 제거
이행 함수 종속 제거
BCNF 기본키 제외 후보키 있는 경우
후보키가 기본키 종속시키면 분해
제 4정규화 여러 칼럼이 하나 칼럼 종속시키는 경우
다중값 종속 제거
제 5정규화 조인에 의해 발생 경우 분해

 

정규화 문제점

데이터 조회(SELECT) 시에 join유발 → 메모리, CPU 사용량 높임

 

반정규화

중복 허용, join 감소시켜 DB성능 향상

SELECT 속도 향상 but, 유연성 낮아짐

 

반정규화 수행하는 경우

정규화로 인해 SELECT 속도 느려진 경우

다량의 범위 자주 처리

특정 범위 자주 처리

요약, 집계 정보 자주 요구

 

반정규화 절차

대상 조사 및 검토 반정규화 대상 조회
다른 방법 검토 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램 파티션 등

1. 클러스터링
인덱스 정보를 저장할 때 물리적으로 정렬하여 저장하는 방법
연속적으로 읽기 때문에 성능 향상됨

2. 파티션 기법
논리적으로 하나의 테이블이지만 어려 개의 데이터 파일에 분산되어 저장됨
range partition: 범위
list partition: 특정 값 지정
hash partition: 해시 함수
composite partition: 범위+해쉬
- 장점
   access 범위 감소 → SELECT 성능 향상
  데이터가 분할 저장 → input/output 성능 향상
  파티션 독립적 백업, 복구 가능
반정규화 수행 테이블, 속성, 관계 등을 반정규화 한다.

 

반정규화 기법

계산된 칼럼 추가 배치 프로그램으로 미리 계산하고, 그 결과를 특정 칼럼에 추가
테이블 수직분할 칼럼을 분할하여 새로운 테이블 생성
테이블 수평분할 하나의 테이블에 있는 값 기준으로 테이블 분리
테이블 병합 1대1 관계 테이블 → 하나의 테이블
1대N 관계 테이블 → 하나의 테이블 ⇒ 많은 양의 데이터 중복 발생
슈퍼 타입, 서브타입 관계 → 테이블 통합

 

테이블 병합

OneToOne Plus Single
super, sub 개별 테이블 도출
테이블 수 많아 → 조인 발생 많아 → 관리 어렵
super, sub 테이블 도출
조인 발생 → 관리 어렵
super, sub → 하나의 테이블로 도출
조인 성능 좋음, 관리 편리
input/output 성능 별로
728x90
반응형

'자격증 > SQLD' 카테고리의 다른 글

SQLD - 관계형 데이터베이스  (0) 2023.09.02
SQLD - 분산데이터베이스  (0) 2023.09.02
SQLD - attribute  (0) 2023.09.01
SQLD - 데이터 모델링  (0) 2023.09.01
SQLD - 스키마  (0) 2023.09.01