[CS - db] 정규화, 이상 현상(Anomaly)

Jo HangJoon·2022년 10월 20일
0

CS 공부

목록 보기
16/17

질문의 핵심

  • 정규화와 비정규화란?
  • 정규화의 목적은?
  • 정규화의 장단점은?
  • 이상현상이란? 이상현상의 종류는?

1. 정규화(Normalization)

정규화(Normalization)의 목적은?

  • 테이블 간에 중복된 데이터(불필요한 데이터)를 허용하지 않기 위해.
  • 데이터 저장을 논리적으로 하기 위해.

정규화를 통해 무결성(Integrity)을 유지할 수 있고, DB의 저장 용량도 줄일 수 있다. 또, 불필요한 데이터를 없애고 삽입/삭제/갱신 시 발생할 수 있는 각종 이상현상(Anomaly)을 방지할 수 있다.

정규화의 원칙

  1. 정보의 무손실 : 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함해야 한다.
  2. 최소 데이터 중복 : 이상 현상을 제거, 데이터 중복을 최소화
  3. 분리의 원칙 : 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리해서 표현

정규화 장점

  • 각종 이상 현상들을 해결할 수 있다. 
  • 새로운 속성의 추가로 인해 DB 구조를 확장하는 경우, 구조의 변경을 최소화할 수 있다. 따라서 DB와 연동된 응용프로그램에 최소한의 영향만을 미쳐 응용프로그램의 생명을 연장시킨다. 
  • 정규화된 릴레이션 간의 관계가 현실 세계에서의 개념들간의 관계를 잘 보여준다.

릴레이션의 분해로 연산이 많아져 응답시간이 느려질 수 있다. 이러한 문제는 반정규화로 해결할 수 있다.

반정규화(De-normalization)

시스템의 성능 향상을 위해 정규화된 데이터 모델을 통합하는 작업으로 의도적으로 정규화 원칙을 위배한다.

테이블 통합/분할/추가, 중복 속성 추가 등으로 반정규화를 진행한다.

반정규화의 대상은 다음과 같다.

  1. 수행속도가 많이 느린 경우
  2. 테이블의 Join 연산을 지나치게 사용하여 데이터를 조회하는 것이 기술적으로 어려운 경우
  3. 테이블에 많은 데이터가 있고, 다량의 범위 혹은 특정 범위를 자주 처리해야 하는 경우

2. 정규화 유형

정규화는 각 단계별로 정의되어 있다.

제1 정규화

테이블의 column이 원자값(Atomic Value)을 갖도록 테이블을 분해한다.

원자값을 값는다는 것은 각 row마다 column의 값이 1개여야 함을 의미한다.

데이터의 논리적 구성을 위해 데이터의 불필요성(redundancy)이 증가할 수 있다.

제2 정규화

제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해한다.

완전 함수 종속이란 기본키 중에 특정 column에만 종속된 column이 없어야 한다는 것을 의미한다.

제3 정규화

제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해한다.

이행적 종속이란 A → B , B → C가 성립할 때 A → C가 성립되는 것을 의미한다.

BCNF(Boyce and Codd Normal Form) 정규화

제3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해한다.


3. 이상 현상(Anomaly)

이상 현상(Anomaly)이란?

테이블 내의 데이터들이 불필요하게 중복되어 테이블을 조작할 때 발생하는 데이터 불일치 현상이다.

이상 현상의 종류

삽입 이상(Insertion anomaly)

원하지 않는 자료가 삽입되거나 key가 없어 삽입하지 못하는 문제점.

삭제 이상(Deletion anomaly)

하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제되어 원하지 않는 정보 손실이 발생하는 문제점.

갱신 이상(Update anomaly)

일부만 변경하여 데이터가 불일치하는 모순된 또는 중복된 튜플이 존재하게 되는 문제점.


참조

0개의 댓글