정규화의 이유

데이터베이스에서 정규화는 빼놓고 이야기 할 수 없을 정도로 매우 중요하다. 그러나 이론적인 면만을 강조하고, 정규화를 하는 이유에 대해서는 여러 가지 이상현상만을 가지고 이야기하고 있는 것이 많은 데이터베이스론 책들이 범하는 오류이다.

 

정규화를 하는 가장 큰 이유는 크게 2가지다.

 

1. 데이터베이스의 성능을 향상시킨다.

2. 데이터의 무결성을 확보한다.

 

2가지 이유는 '데이터 중복'에 있다. 특히나 분산환경에서는 이 '데이터 중복'이 가장 큰 이슈가 된다. 그러면 '데이터 중복'이 성능에 어떤 영향을 미칠까? 그 이유는 상식적으로 생각해 보아도 알 수 있다.

 

데이터의 중복이 있다면 데이터 중복이 없는 것에 비해 같은 결과를 처리하기 위해서 더 많은 자원을 사용하게 된다. , 중복된 데이터를 저장하기 위해서는 더 많은 Disk 저장공간이 필요하고, 더 많은 메모리를 필요로 하게 된다. 그러면 자연히 더 많은 데이터를 처리하기 위해서 CPU도 더 많이 사용하게 된다.

 

데이터 무결성 측면에서 살펴보자. 여러 테이블에 데이터가 중복되어 있다면 입력되는 시점에 모든 데이터는 일치되어야 한다. 또한 하나의 테이블에서 데이터가 변경이 되면 다른 테이블의 중복된 데이터도 변경을 시켜야만 데이터의 정확성이 확보된다. 만약 그렇지 않다면 자연스레 '정보의 질'은 떨어지게 된다. 이때 특정 시점에 서로 다른 값을 가지게 되는 것을 '데이터 불일치'라고 한다. 데이터의 불일치가 발생하지 않고, 데이터가 항상 안정적이고 결점이 없이 존재하는 것을 '데이터 무결성'이라고 한다. 물론 데이터를 일치시키는 작업도 자원을 사용하므로 자연스레 성능도 떨어지게 된다.

 

중복된 데이터를 일치시키는 일은 그리 쉽지가 않다. 데이터의 중복이 많으면 많을수록 데이터의 불일치가 발생할 확률은 높은 것이 당연하다. 또한 데이터를 일치시키기 위해서 데이터 무결성 규칙에 대한 복잡성도 증가하게 된다.

 

이것이 바로 '정규화'가 중요한 이유이다. 성능을 생각한다면 흔히 '비정규화'를 떠올리게 되는데, 이는 막연한 생각일 뿐이다. 데이터의 '비정규화'는 대부분 단일 사용자 관점에서 고려되기 때문에 전체적인 성능에 영향을 끼칠 확률이 또 높아진다.

 

이제 '정규화'가 데이터베이스에서 빼놓고 이야기 할 수 없는 이유를 알았을 것이다. 정규화는 최고의 성능튜닝의 도구이자 최고의 무결성 확보를 위한 도구이다.

 

그러므로.. 정규화.. 잘 하자..

 

by 이재학 | 2007/09/14 11:54 | 모델링&설계 | 트랙백 | 덧글(1)
트랙백 주소 : http://dbstroy.egloos.com/tb/749600
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by killy at 2007/09/14 22:47
유지보수 기간에 정규화 시도하다 짤릴뻔 했습니다. ㅜ_ㅜ

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >