[데이터베이스] 정규화

Doyeon Lim·2022년 4월 24일
0

데이터베이스

목록 보기
2/6

한빛아카데미 - 데이터베이스 개론 2판

정규화란?

정규화 normalization : 데이터 연산 수행시 발생하는 부작용(이상현상)을 제거하면서 데이터베이스를 올바르게 설계해나가는 과정

관련 없는 속성들을 하나의 릴레이션에 모아두고 있기 때문에 이상현상이 발생한다. 따라서 릴레이션을 분해하는 과정(정규화)을 통해 릴레이션 설계를 올바르게 완성할 수 있다.

이상현상

이상현상 anomaly : 잘못된 데이터베이스 설계로 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입, 수정, 삭제 연산을 수행할 때 발생하는 부작용

[이상현상의 종류]

  • 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
  • 갱신 이상 : 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
  • 삭제 이상 : 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

정규형이란?

정규형 Normal Form : 릴레이션이 정규화된 정도, 크게 기본 정규형과 고급 정규형으로 나뉨

[기본 정규형]

  • 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형

[고급 정규형]

  • 제4정규형, 제5정규형

일반적으로 차수가 높은 정규형에 속하는 릴레이션일수록 데이터 중복에 의한 이상 현상이 발생하지 않는 바람직한 릴레이션일 수 있지만 모든 릴레이션이 제5정규형에 속해야 되는 것은 아니다.

*무손실 분해 nonloss decomposition : 정규화 과정에서 분해된 릴레이션들을 자연 조인하여 분해 전의 릴레이션으로 다시 복원할 수 있어야 한다.

제1정규형 1NF; First Normal Form

릴레이션에 속한 모든 속성의 도메인이 *원자 값으로만 구성되어 있으면 제 1정규형에 속한다.

* 원자 값 atomic value : 더는 분해되지 않는 값

다중 값을 가지는 속성을 포함한 릴레이션은 제1정규형의 제약조건을 만족하지 않기 때문에 릴레이션을 분해하는 정규화 과정을 거쳐야한다.

제2정규형 2NF; Second Normal Form

릴레이션이 제 1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2정규형에 속한다.

부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야한다.

제3정규형 3NF; Third Normal Form

릴레이션이 제 2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 *이행적 함수 종속이 되지 않으면 제 3정규형에 속한다.

* 이행적 함수 종속 transitive FD : 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X -> Y, Y -> Z가 존재하면 논리적으로 X -> Z가 성립한다. 이때 Z가 X에 이행적으로 함수 종속되었다고 한다.

보이스/코드 정규형 BCNF; Boyce/Codd Normal Form

릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.

BCNF에 속하는 모든 릴레이션은 3NF에 속하지만 3NF에 속하는 릴레이션이라고 BCNF에 속하는 것은 아니기 때문에 BCNF를 강한 3NF라고도 한다.

제4정규형 4NF; Fourth Normal Form

릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 *다치종속을 제거하면 제 4정규형에 속한다.

* 다치종속 Multi Valued Dependency : 두 개의 독립된 속성이 1:N 관계로 대응되면 다치종속이 성립된다.

제5정규형 5NF; Fifth Normal Form

릴레이션이 제 4정규형을 만족하면서 후보키를 통하지 않는 *조인 종속을 제거하면 제 5정규형에 속한다.

* 조인 종속 Join Dependency : 릴레이션을 정규화한 뒤 조인해서 다시 원래의 릴레이션으로 복원할 수 있다면 조인 종속이 존재하는 릴레이션이다.

profile
🙇‍♀️ Android

0개의 댓글