본문 바로가기

기타/SQLD 자격증

5. 데이터 모델과 성능 (SQLD 자격증 공부)

정규화(Normalization)

  • 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정
  • 데이터 중복을 제거하고, 모델의 독립성을 확보
  • 제1정규화부터 제5정규화 까지 있지만, 실직적으로는 제3정규화까지 수행

▷ 정규화 절차

정규화 절차 설명
제1정규화 속성의 원자성 확보
기본키 설정
제2정규화 부분 함수 종속성을 제거
제3정규화 이행 함수 종속성 제거
BCNF 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해
제4정규화 다중값 종속성 제거
제5정규화 조인에 의해 종속성이 발생시 분해

 

▶ 함수적 종속성(Funtional Dependency)

  1. 제1정규화 : 함수적 종속성을 근거로 한다. ex) X→Y이면 Y는 X에 종속된다.
  2. 제2정규화 : 부분 함수 종속성을 제거 ex) 기본키가 2개 이상의 컬럼으로 이루어진 경우에 발생
    • 기본키가 하나의 컬럼으로 이루어지면 생략
  3. 제3정규화 : 이행 함수 종속성을 제거 ex) 기본키를 제외하고 컬럼간에 종속성이 발생
    • 제1정규화와 제2정규화를 수행한 뒤에 실행
  4. 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 속도를 향상하지만, 모델의 유연성은 낮아진다.

▷ 반정규화를 수행하는 경우

  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우
  • 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우

▷ 절차

  1. 대상 조사 및 검토 : 데이터 처리 범위, 통계성 등을 확인해서 대상을 조회
  2. 다른 방법 검토 : 반정규화를 수행하기 전 다른 방법이 있는지 검토
    • ex) 클러스터링, 뷰, 인덱스 튜닝, 파티션 등을 검토
  3. 반정규화 수행 : 테이블, 속성, 관계 등을 반정규화

▷ 반정규화 기법

  1. 계산된 컬럼 추가 : 미리 계산하고, 그 결과를 특정 컬럼에 추가
  2. 테이블 수직 분할 : 하나의 테이블을 두 개 이상의 테이블로 분할
  3. 테이블 수평 분할 : 하나의 테이블에 있는 값을 기준으로 테이블을 분할
※ 파티션(Partition) 기법
   파티션을 사용하여 테이블을 분할할 수 있다. 파티션 사용시 논리적으로는 하나의 테이블이지만 여러 개의 데이터     파일에 분산되어 저장된다.
  • Range Partition : 데이터 값의 범위를 기준으로 수행
  • List Partition : 특정한 값을 지정하여 수행
  • Hash Partition : 해시 함수를 적용하여 수행
  • Composite Partition : 범위해시를 복합적으로 사용하여 수행
  1. 테이블 병합
    • 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. 모두 동일함