본문 바로가기
  • Always Awake
정보처리기사/3과목

[정보처리기사 필기] 정규화(Normalization) 와 반정규화(Denormalization)

by NerdyBoy 2022. 2. 16.
반응형

정규화(Normalization)


1. 정규화 개요

정규화란 함수적 종속성 등의 종속성 이론을 이용하여, 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정이다.

  • 정규형에는 제1, 2, 3정규형, BCNF형, 제4정규형, 제5정규형이 있으며, 차수 높아질수록 만족시켜야할 제약 조건이 늘어난다.
  • 데이터베이스의 논리적 설계단계에서 수행
  • 일관성, 정확성, 단순성, 비중복성, 안정성 등 보장
  • 정규화 수준 높을 수록 유연한 데이터 구축 가능하고 데이터 정확성 높아지는 반면 물리적 접근 복잡하고 조회 성능 저하됨
  • 정규화할 때는 정보의 손실이 있어서는 안되고, 중복성 감소해야 한다

 

2. 정규화 목적

  • 데이터 구조 안정성 및 무결성 유지
  • 데이터 중복 배제하여 이상(Anomaly)의 발생 방지 및 자료 저장 공간 최소화
  • 데이터 삽입 시 릴레이션 재구성할 필요 줄임
  • 데이터 모형 단순화 가능
  • 속성 배열 상태 검증 가능
  • 개체와 속성 누락 여부 확인 가능
  • 자료 검색과 추출의 효율성 추구

 

3. 이상(Anomaly) 개념 및 종류

정규화 거치지 않으면 데이터베이스 내 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 현상 발생하는 것을 이상 이라함

  • 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터 삽입 시 의도와 상관없이 원치 않는값 삽입되는 현상
  • 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플 삭제할 때 의도와 상관없는 값들도 함께 삭제되는 연쇄
  • 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값 갱신할 때 일부 튜플 정보만 갱신되어 정보에 모순 생기는 현상

 

4. 정규화 과정

  1. 비정규 릴레이션
  2. 1NF : 도메인이 원자값
  3. 2NF : 부분적 함수 종속 제거
  4. 3NF : 이행적 함수 종속 제거
  5. BCNF : 결정자이면서 후보키가 아닌 것 제거
  6. 4NF : 다치 종속 제거
  7. 5NF : 조인 종속성 이용

* 외우는 방법 - 도부이결다조(두부이걸다줘??ㅋㅋ)

1NF(제1정규형)

릴레이션에 속한 모든 도메인이(속성 값이) 원자값만으로 되어 있는 정규형

  • 릴레이션의 모든 속성이 단순 영역에서 정의

2NF(제2정규형)

릴레이션 R이 1NF, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형

 

함수적 종속/완전/부분 함수적 종속 및 이해

더보기

함수적 종속(Functional Dependency)

데이터 들이 어떤 기준값에 의해 종속되는 것을 의미

예를들어 '학번'에 따라 '이름'  이결정될 때  이름을 학번에 함수 종속적이라고 함

 

완전 함수적 종속

어떤 테이블 R에서 속성A가 다른 속성 집합 B 전체에 대해 함수적 종속이지만 속성 집합 B의 어떠한 진부분 집합 C에는 함수적 종속이 아닐 때  

 

부분 함수적 종속

어떤 테이블 R에서 속성A가 다른 속성 집합 B전체에 대해 함수적 종속이면서 속성 집합 B의 어떠한 진부분 집합에도 함수적 종속일 때

3NF(제3정규형)

릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형

  • 무손실 조인 또는 종속성 보존을 저해하지 않고도 항상 3NF 설계를 얻을 수 있다.

이행적 종속 : A -> B이고 B -> C일 때 A -> C를 만족하는 관계

BCNF(Boyce-Codd 정규형)

릴레이션 R에서 결정자가 모두 후보키인 정규형

  • 3NF에서 후보키가 여러 개 존재하고 서로 중첩되는 경우에 적용하는, 강한 제3정규형 이라고도 한다.
  • 모든 BCNF가 종속성을 보존하는 것은 아님
  • BCNF 제약 조건
    • 키가 아닌 모든 속성은 각 키에 대해 완전 종속해야 함
    • 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 함
    • 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속 불가

4NF(제4정규형)

릴레이션 R에 다치 종속 A ->> B 가 성립하는 경우 R의 모든 속성이 A에 함수적 종속을 만족하는 정규형

 

다치 종속(Multi Valued Dependency, 다가 종속) : A, B, C 3개의 속성을 가진 릴레이션 R에서 어떤 복합 속성 (A, C) 에 대응하는 B값의 집합이 A 값에만 종속되고 C 값에는 무관하면 B는 A에 다치종속 

 

5NF(제5정규형, PJ/NF)

릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

 

조인 종속(Join Dependency) : 릴레이션 R이 자신의 프로젝션을 모두 조인한 결과가 자신과 동일한 경우 조인 종속을 만족한다고 함

 

 

 

 

반정규화(Denormalization)


1. 반정규화 개념

시스템 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위이다.

  • 데이터의 일관성 및 정합성 저하될 수 있다.
  • 과도한 방정규화는 오히려 성능을 저하시킬 수 있다.

 

2. 반정규화 방법

테이블 통합

두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우

  • 테이블 통합 종류에는 1:1 관계 테이블 통합, 1:N 관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합이 있다.
  • 입력, 수정, 삭제 규칙 복잡해질 수 있음
  • Not Null, Default, Check 등의 제약조건 설계 어려움

테이블 분할

테이블을 수직 또는 수평으로 분할 하는 것

  • 수평 분할(Horizontal Partitioning) : 레코드를 기준으로 분할. 레코드별 사용 빈도 차이 클 경우 사용 빈도에 따라 테이블 분할
  • 수직 분할(Vertical Partitioning) : 하나의 테이블에 속성이 너무 많을 경우 속성 기준으로 분할
  • 테이블 분할 방법은 '갱신 위주, 자주 조회되는 속성, 크기 큰 속성,보안 적용 해야하는 속성'

중복 테이블 추가

여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우

  • 정규화로 인해 속도가 느려지는 경우
  • 많은 범위 데이터 자주 처리 해야 하는 경우
  • 특정 범위 데이터만 자주 처리해야 하는 경우
  • 처리 범위를 줄이지 않고는 수행 속도를 개선할 수  없는 경우
  • 중복 테이블 추가 방법은 '진행, 집계, 특정 부분'

중복 속성 추가

조인해서 데이터 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것

  • 추가 시 무결성 확보 어렵고, 디스크 공간 추가로 필요
  • 조인 자주 발생하는 속성의 경우
  • 접근 경로 복잡한 속성의 경우
  • 엑세스 조건으로 자주 사용되는 속성
  • 기본키 형태 적절하지 않거나 여러개의 속성으로 구성된 경우

 


출처

자료 참고: 

시나공 정보처리기사 필기 2022를 참고하여 작성되었습니다

표지

 

반응형

댓글