데이터베이스 정규화

위키백과 ― 우리 모두의 백과사전.

데이터베이스 정규화(영어: Database Normalization)는 논리적 데이터베이스 설계에있어서 관계형 데이터베이스의 테이블들을 구조화하는 기법 중 하나이다. 어느 테이블이든 어느 정도는 정규화될 수 있는데, 데이터베이스 이론에서는, 테이블의 정규화된 정도를 정규형(영어: normal form)이라는 용어를 써서 표현한다. 보통 많이 쓰는 정규형을 가장 정규화 되지 않은 것부터 가장 정규화된 것까지의 순서로 나열하면 다음과 같다:

  • 제 1 정규형 (영어: First normal form,1NF)
  • 제 2 정규형 (2NF)
  • 제 3 정규형 (3NF)
  • 보이스-코드 정규형 (BCNF)
  • 제 4 정규형 (4NF)
  • 제 5 정규형 (5NF)
  • 도메인/키 정규형 (DKNF)
  • 제 6 정규형 (6NF)

각 정규형은 하위의 정규형의 성질을 자동적으로 포함한다. 예를 들어 3NF인 테이블은1NF이기도 하다.

정규형의 차수가 높을수록, 데이터베이스의 무결성을 저해할 수 있는 다양한 종류의 논리적 모순이 존재할 가능성과 데이터가 중복으로 존재할 가능성을 줄여준다. 높은 차수의 정규형들은 데이터베이스의 개발과 유지보수를 쉽게 해주고 데이터베이스의 확장성을 높여 준다. 그러나, 높은 차수의 정규화는 보통 테이블의 개수를 많아지게 하고, 많은 수의 조인을 창출해낸다. 이것은 데이터베이스의 성능을 저해할 수도 있다. 그 결과, 차수가 높게 정규화된 테이블들은, 고립시킬 수 있는 트랜잭션들을 많이 쓰는 데이터베이스(자동입출금기기 시스템 같은)에 많이 쓰이고, 차수가 낮게 정규화된 테이블들은, 읽기 동작이 대부분인 데이터베이스(리포트 같은)에 많이 쓰인다.

비록 정규형은 테이블의 성질들과 같은 비공식적인 용어들을 사용해 정의되곤 하지만, 엄밀한 정의는 릴레이션이라는 수학적인 구성 개념과 관련 있다. 정보가 관계를 가지고 기술된다면 – 쉽게 말해, 정보가 고정된 열 제목 하의 각 행에 표시된다면 – 이 정보 표현을 정규화할 것인가라고 한 번 쯤 고민해보는 것도 의미 있는 일이다.

목차

[편집] 정규화가 해결하는 문제

[편집] 필요한 몇 가지 정의

[편집] 역사