본문 바로가기

개발이야기

정규화 필요한가?

문화재 DB 구축의 분석설계로 프로젝트에 참여 하고 있고 2주일째가 되었다.
분산된 문화재를 한곳에 집중화 하는 프로젝트인데 각각의 문화재가 서로 다른 업체에서 하여 다양한 형태의 결과물을 볼 수가 있었다.
일단 데이터 수집을 하면서 온갖 너져부러진 프로그래밍 소스와 엉켜진 데이터베이스를 보고자 하니 유지보수가 힘들어 보였다.
특히 데이터베이스에 많은 오류가 널려 있고 관계와 정규화가 많이 미흡해 보였다. 어차피 실무에서는 생산성 위주이기에 관계나 정규화등을 않하여도 돌아가는 부분을 많이 무시하는 경향이 보이지만 이러면 유지보수 입장만 매우 불편해 진다.(정확한 결과보고서가 있어도 불편하다)
전에 개발로 프리랜서를 하면서 X쇼핑몰의 데이베이스에 대해 들었는데 그 쇼핑몰은 테이블 관계가 전혀 없이 이루어졌다고 했다. 나는 이말을 들으면서 너무 의아해 했지만 현재 관계 없는 것 투성인 DB를 다루다 보니 이게 현실인가 보구나 하고 있다.
정규화도 문제이다.
학교에서 DB수업 대부분 정규화의 필요성이 주구장창 길게 나열되어 있고 시험에 자주 나와 좋은 학점따기 위해서는 필사적으로 외워야만 하는 아이템이었다.
하지만 실무에서는 거의 외면 무시 당하기 일수..과연 이 정규화가 필요없어서 안쓰는 것일까?
몰라서 안쓰는 것일까? 아니면 귀찬아서 안쓰는 것일까?
더 놀라운것은 같은 데이베이스에 껴 넣거나 시스템 데이터베이스의 디비를 구현한 곳도 있었다. 이러면 내가 매우 곤란하다. 그리고 귀찬아서인지 몰라도 예를들어 '테이블명1', '테이블명2' 처럼 같은 이름에 시퀀시를 달아 놓으면 왜 해놓았고 어떤게 진짜인지 햇갈리게 된다. 또 마이그레이션이나 복사를 하고 기존 것은 지우지 않아 사용하지 않는 디비를 관찰하게 하여 헛일 하는 매우 난해한 입장이 된다.
문제점은 무엇일까? 아직 이런 경험이 부족한 나에겐 그저 물흐르는 곳으로 같이 흘러가야 한다.
나혼자 잘못된거 올바르게 한다고 물을 거슬러 올라 갈수도 없는 노릇..
과연 생산성인가 아니면 품질인가?