정규화(Normalization)
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정
- 데이터 중복을 제거하고, 모델의 독립성을 확보
- 제1정규화부터 제5정규화 까지 있지만, 실직적으로는 제3정규화까지 수행
▷ 정규화 절차
| 정규화 절차 | 설명 |
| 제1정규화 | 속성의 원자성 확보 기본키 설정 |
| 제2정규화 | 부분 함수 종속성을 제거 |
| 제3정규화 | 이행 함수 종속성 제거 |
| BCNF | 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해 |
| 제4정규화 | 다중값 종속성 제거 |
| 제5정규화 | 조인에 의해 종속성이 발생시 분해 |
▶ 함수적 종속성(Funtional Dependency)
- 제1정규화 : 함수적 종속성을 근거로 한다. ex) X→Y이면 Y는 X에 종속된다.
- 제2정규화 : 부분 함수 종속성을 제거 ex) 기본키가 2개 이상의 컬럼으로 이루어진 경우에 발생
- 기본키가 하나의 컬럼으로 이루어지면 생략
- 제3정규화 : 이행 함수 종속성을 제거 ex) 기본키를 제외하고 컬럼간에 종속성이 발생
- 제1정규화와 제2정규화를 수행한 뒤에 실행
- BNCF(Boyce-Codd Normal Form) : 복수의 후보키가 있으며, 후보키들이 복합 속성이며 서로 중첩되어야 한다.
부분 함수 종속성을 제거하는 정규화 단계는? (답 : 3)
1. BNCF
2. 제3정규화
3. 제2정규화
4. 제1정규화
제3정규화와 관련이 있는 것은? (답 : 3)
1. 속성의 원자성
2. 부분 함수 종속성
3. 이행 함수 종속성
4. 후보키의 복합성
▷ 정규화의 문제점
- 테이블을 분해하여 데이터 중복을 제거하기 때문에 모델의 유연성을 높인다.
- SELECT시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용한다.
반정규화(De-Normalization)
- 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 방법
- SELECT 속도를 향상하지만, 모델의 유연성은 낮아진다.
▷ 반정규화를 수행하는 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보가 자주 요구되는 경우
- 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
▷ 절차
- 대상 조사 및 검토 : 데이터 처리 범위, 통계성 등을 확인해서 대상을 조회
- 다른 방법 검토 : 반정규화를 수행하기 전 다른 방법이 있는지 검토
- ex) 클러스터링, 뷰, 인덱스 튜닝, 파티션 등을 검토
- 반정규화 수행 : 테이블, 속성, 관계 등을 반정규화
▷ 반정규화 기법
- 계산된 컬럼 추가 : 미리 계산하고, 그 결과를 특정 컬럼에 추가
- 테이블 수직 분할 : 하나의 테이블을 두 개 이상의 테이블로 분할
- 테이블 수평 분할 : 하나의 테이블에 있는 값을 기준으로 테이블을 분할
※ 파티션(Partition) 기법
파티션을 사용하여 테이블을 분할할 수 있다. 파티션 사용시 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어 저장된다.
- Range Partition : 데이터 값의 범위를 기준으로 수행
- List Partition : 특정한 값을 지정하여 수행
- Hash Partition : 해시 함수를 적용하여 수행
- Composite Partition : 범위와 해시를 복합적으로 사용하여 수행
- 테이블 병합
- 1대1 관계의 테이블을 하나로 병합해 성능을 향상
- 1대N 관계의 테이블 병합하여 성능을 향상시키지만 많은 양의 중복데이터 발생
- 슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합하여 성능 향상
※ 슈퍼 타입(Super Type)과 서브 타입(Sub Type)
부모와 자식 간의 관계
▷ 슈퍼 타입과 서브 타입 변환 방법
- OneToOne Type : 개별 테이블로 도출, 테이블 수가 많아 조인이 많이 발생되고 관리가 어려움
- Plus Type : 슈퍼 타입과 서브 타입 테이블로 도출, 조인이 발생하고 관리가 어려움
- Single Type : 하나의 테이블로 도출, 조인 성능이 좋고 관리가 편하지만 입출력 성능이 나쁨
Super Type과 Sub Type의 관계에서 도출되는 테이블 수가 가장 적은 것은? (답 : 3)
1. Plus Type
2. OneToOne Type
3. Single Type
4. 모두 동일함
'기타 > SQLD 자격증' 카테고리의 다른 글
| 7. SQL 기본2 (SQLD 자격증 공부) (0) | 2022.02.09 |
|---|---|
| 6. SQL 기본 (SQLD 자격증 공부) (0) | 2022.02.09 |
| 4. 관계 & 엔터티 식별자(SQLD 자격증 공부) (0) | 2022.01.28 |
| 3. 엔터티 & 속성 (SQLD 자격증 공부) (0) | 2022.01.28 |
| 2. 3층 스키마 ( SQLD 자격증 공부) (0) | 2022.01.28 |