Hello

[정처기 필기] 데이터베이스 정규화, 반정규화, 이상 현상

by 볼빵빵오춘기

데이터베이스 정규화

  • 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정이다.
  • 좋은 데이터베이스 스키마를 생성하고 불필요한 데이터의 중복을 방지하여 정보 검색을 용이하게 할 수 있도록 허용한다.

 

정규화의 목적

  • 데이터 구조의 안정성 최대화
  • 중복 데이터의 최소화
  • 수정 및 삭제 시 이상 현상 최소화
  • 테이블 불일치 위험 간소화

 

이상 현상(Anomaly)

  • 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상을 의미한다.
  • 종류 : 삽입 이상, 삭제 이상, 갱신 이상

삽입 이상(Insertion Anomaly)

데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상이다.

 

삭제 이상(Deletion Anomaly)

릴레이션의 한 튜플을 삭제함으로써 연쇄 삭제로 인해 정보의 손실을 발생시키는 현상이다.

 

갱신 이상(Update Anomaly)

튜플 중에서 일부 속성을 갱신함으로써 정보의 모순성이 발생하는 현상이다.

 

함수적 종속

  • 개체 내에 존재하는 속성 간의 관계를 종속적인 관계로 정리하는 방법이다.
  • 데이터 속성들의 의미와 속성 간의 상호 관계로부터 도출되는 제약조건이다.
  • 기준값을 결정자(Determinant)라 하고 종속되는 값을 종속자(Dependent)라고 한다.
  • 속성 Y는 속성 X에 함수적 종속이라 하고 표현은 X→Y로 표현한다.
  • 이때 X를 결정자, Y를 종속자라고 부른다.

부분 함수적 종속

복합 속성(A,B)에 대하여 A→C가 성립할 때이다.

 

이행 함수적 종속

속성 X,Y,Z가 주어졌을 때 X→Y, Y→Z하면 X→Z가 성립된다는 것이다.

 

정규화 과정

정규화 과정

1정규형

  • 어떤 릴레이션에 속한 모든 도메인이 원자값(하나의 항목에는 중복된 값이 입력될 수 없음)만으로 되어 있는 릴레이션이다.
  • 하나의 속성만 있어야 하고 반복되는 속성은 별도 테이블로 분리한다.

 

2정규형

  • 1정규형을 만족하고, 릴레이션에 내재된 부분 함수적 종속을 제거한다.
  • 기본키가 아닌 애트리뷰트 모두가 기본키에 완전 함수 종속이 되도록 부분 함수적 종속에 해당하는 속성을 별도의 테이블로 분리한다.

 

3정규형

  • 1, 2정규형을 만족하고, 속성 간 이행적 함수 종속을 제거한다.

※ 이행적 함수 종속 : A→B, B→C, A→C

 

BCNF(보이스/코드) 정규형

  • 1, 2, 3 정규형을 만족하고, 결정자가 후보키가 아닌 함수종속이 제거되면 보이스/코드 정규형에 속한다.
  • 후보키를 여러 개 가지고 있는 릴레이션에서 발생할 수 있는 이상 현상을 해결하기 위해 3정규형 보다 좀 더 강력한 제약조건을 적용한다.
  • 보이스/코드 정규형에 속하는 모든 릴레이션은 3정규형에 속하지만, 3정규형에 속하는 모든 릴레이션이 보이스/코드 정규형에 속하지는 않는다.

 

4정규형

  • 1 , 2, 3, BCNF 정규형을 만족하고, 다치 종속을 제거한다.

 

5정규형

  • 1, 2, 3, BCNF, 4정규형을 만족하고, 후보키를 통하지 않은 조인 종속을 제거한다.

 

반정규화

정규화를 통하여 정합성과 데이터 무결성이 보장되지만, 테이블의 개수가 증가함에 따라 테이블 간의 조인이 증가하여 조회 성능이 떨어질 수 있는데 이렇게 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발 및 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법이다.

 

테이블 분할(파티셔닝)

  • 테이블을 여러 부분으로 분할하는 것을 의미한다.
  • 대표적인 분산 데이터베이스 분할로 각 타피션은 여러 노드로 분산 배치되어 사용자가 각 노드에서 로컬 트랜잭션을 수행할 수 있다.
  • 파티션 각각이 작은 데이터베이스가 되도록 분할하는 방법과 하나의 테이블만 같이 선택된 요소로 분리하는 방법이 있다.

 

반정규화 - 테이블 추가

중복/ 집계 / 이력 / 부분 / 진행 테이블 추가

 

반정규화 - 컬럼 반정규화

중복 / 파생 / 이력 / PK에 의한 / 응용 시스템 오작동을 위한 컬럼 추가

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기