정규화, 반정규화

정승렬·2023년 2월 27일
0

기술면접

목록 보기
4/38

정규화란?

  • 데이터의 일관성, 최소한의 데이터 중복, 최소한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정
  • 정규화된 모델은 테이블이 분해된다.
  • 정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다.

정규화 절차
제 1정규화 :

  • 속성(Attribute)의 원자성을 확보한다
  • 중복값을 제거한다.
  • 기본키를 설정한다.

제 2정규화 :

  • 기본키가 2개 이상의 속성으로 이루어진 경우, 부분함수 종속성을 제거한다.
  • 부분함수 종속성이란, 기본키가 2개 이상인 칼럼으로 이루어진 경우에 발생한다. 기본키가 1개이면 이 과정을 스킵한다.
  • 복합 인스턴스에 대해 각 인스턴스의 종속적 중복을 삭제한다.

제 3정규화 :

  • 기본키를 제외한 칼럼 간에 종속성을 제거한다.
  • 이행 함수 종속성을 제거한다.
  • 일반 속성의 종속성을 제거한다

BCNF :

  • 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이어야 한다.
  • 기본키를 제외하고 후보키가 있는 경우 후보키가 기본키를 종속시키면 분해한다.
  • BCNF는 복수의 후보키가 있고, 후보키들이 복합 속성이어야 하며 서로 중첩되어야 한다

제 4정규화 :

  • 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다치종속을 제거한다
  • 다치 종속성을 제거한다

제 5정규화:

  • 조인에 의해서 종속성이 발생되는 경우 분해한다.

반정규화

  • 데이터베이스의 성능 향상을 위하여 데이터 중복을 혀용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다.
  • 반정규화는 조회 속도를 향상시키지만, 데이터 모델의 유연성은 낮아진다

반정규화 수행 이유

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

반정규화 절차

대상 조사 및 검토

  • 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상을 조사

다른 방법 검토

  • 반정규화를 수행하기 전에 다른 방법이 있는지 검토
  • 예를 들어 클러스터링, 뷰, 인덱스, 튜닝, 응용 프로그램, 파티션을 검토한다

반정규화 수행

  • 테이블, 속성, 관계 등을 반정규화 한다.

[Clustering?]

  • 클러스터링 인덱스라는 것은 인덱스 정보를 저장할 때, 물리적으로 정렬해서 저장하는 방법이다.
  • 따라서 조회 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.

반정규화 기법

계산된 칼럼 추가

  • 배치 프로그램으로 계산이 필요한 칼럼을 미리 계산하고 그 결과를 특정 칼럼에 추가한다.

테이블 수직 분할

  • 하나의 테이블의 두 개 이상의 테이블로 분할한다 즉, 칼럼을 분할하여 새로운 테이블을 마드는 것이다.

테이블 수평 분할

  • 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법

슈퍼타입 및 서브타입 변환 방법
OneToOneType

  • 슈퍼타입과 서브타입을 개별 테이블로 도출
  • 테이블 수가 많아서 조인이 많이 발생하고 관리하기 어려움

Plus Type

  • 슈퍼타입과 서브타입 테이블로 도출
  • 조인이 발생하고 관리가 어렵다.

Single Type

  • 슈퍼타입과 서브타입을 하나의 테이블로 도출한다
  • Join 성능이 좋고 관리가 편하다, 입출력 성능이 나쁘다

0개의 댓글