프로그래밍/3. ORACLE

[데이터베이스] 데이터베이스 설계에 관한 오해(데이터베이스는 행위를 고려하지 않는다?)

핫호빵 2013. 2. 7.
반응형


작년 여름에 참여했던 프로젝트에서 있었던 일입니다. 당시 저는 정보시스템 구축 프로젝트에 참여해서 시스템을 설계하는 일을 했었는데요. CBD개발 방법론의 전문가(프로젝트도 많이 하셨고, 책을 많이 쓰셨습니다.)가 만든 방법론을 가지고 시스템 설계 및 데이터베이스 설계 작업을 해야 했습니다.

 

 

 

 

 

저는 그전까지는 주로 데이터베이스 설계 및 SQL 작업을 많이 했었기에 JAVAC# 같은 프로그래밍 언어는 물론 CBD 같은 개발방법론에 대한 이해는 약한 편이였습니다. 만들어진 프로그램이 있으면 분석해서 새로운 화면 개발하는 정도 수준이죠.

 

그래서 이번 기회에 CBD와 시스템 설계에 관해서 배워야겠구나 하면서(하지만 그다지 배우지는 못 했습니다. 방법론을 만들어 놓으시고 1시간씩 2번 설명해주시고는 철수 하셨습니다) 그분한테 제가 설계한 내용을 검증 받았습니다(검증은 철수하고 약 한달 후에 잠시 오셔서 하셨습니다.).

 

검증 받으면서 시스템 설계에 관한 이런저런 이야기도 들었는데, 문득, 그분이 이렇게 말씀하셨습니다. 시스템을 설계하는 관점은 두 가지의 관점이 있다. 하나는 데이터의 흐름으로 보는 관점이고, 다른 하나는 행위를 위주로 보는 관점이다. 지금까지는 행위를 생각하지 않고, 데이터 흐름만을 생각한 데이터베이스 설계가 시스템 설계의 주축을 이루었다면, 앞으로는 행위를 표현하는 컴포넌트를 주축으로 하는 시스템 설계가 중심이 될 것이다.’



 

여러분의 생각은 어떻습니까? 전 뒤통수를 한 대 맞은 느낌이 들었습니다. 데이터베이스 설계가 행위를 생각하지 않는다니요. 반대로 묻고 싶었습니다. 어떻게 하면 행위를 생각하지 않고 데이터베이스를 설계할 수 있나요?

 

데이터베이스 시스템은 사람이 어떤 행위를 하는데 필요한 데이터 혹은 행위의 결과로 만들어진 데이터를 효과적이고 체계적으로 관리하기 위해서 만들어진 시스템입니다. 따라서 데이터베이스 설계를 위해서는 시스템 목적과 목적을 완수하기 위해서 필요한 모든 행위를 정의하는 것이 가장 우선적으로 이루어져야 하는 작업이죠.

 

시스템에서 일어나는 행위를 정의하는 작업이 끝이 난 후 각 행위를 지원하기 위한 데이터, 각 행위의 결과로 발생되는 데이터를 정의하며, 이 작업이 끝나야 비로소 흔히 말하는 정규화 작업 및 논리적 데이터베이스 설계 즉 테이블 및 테이블 간에 관계를 설계하는 작업이 시작되는 것이죠. 전 그분이 도대체 왜 그런 허무맹랑한 생각을 하시는지 도무지 이해할 수가 없었습니다. 정말 데이터베이스 설계에 대해서 모르셨던 걸까요?

 

마무리하자면 행위와 데이터 이 둘은 때놓을 수 없는 바늘과 실의 관계라고 생각합니다. 완성도 높은 시스템 설계를 위해서는 행위와 데이터 어느 한쪽도 결코 소홀히 할 수 없다는 이야기지요. 한쪽으로 치우친 시선보다는 양쪽 모두를 시야에 담을 수 있는 넉넉한 마음과 실력을 갖출 수 있도록 노력해야겠습니다.

반응형

댓글