데이터베이스 설계와 구축
제대로 된 데이터베이스 설계는 유지 보수 비용을 줄이는 중대한 역할을 한다. 이 책은 데이터베이스 설계에 필요한 이론을 다루고 있지만 개발 프로세스 각 단계별 실전 예제를 제시하여 이론에 치우치지 않도록 하였으며 후반부에 쇼핑몰 구축을 위한 데이터베이스 설계 예제를 오라클9i 기반으로 설계서비스할 수 있도록 보여주고 있다. 이 예제는 책에서 배운 내용을 토대로 실제 개발 과정에서 어떻게 데이터베이스를 설계하고 사후 관리하는지까지 보여주고 있어 가장 실무
필자는 SQL이란 단어를 98년 말경에 접했고, 군 복무를 하면서 실제적으로 SQL문과 오라클 데이터베이스를 공부할 기회를 가지게 되었다. 복무시 전산실에 있으면서 몇가지 통계정보를 DB에서 뽑을 필요때문에 약간 복잡한 SQL문도 조금씩 구현할 수 있게 되었고 얼마 없는 시간을 쪼개어 OCP자격증을 취득하고 오라클 자체에 대해서도 공부를 할 수 있었다.
실제 DB의 개념과 관리 방법을 알고나서는 데이터베이스에 대해서 어느정도 알고 있다고 생각하였으나, 최근에 모 업무시스템을 개발하면서는 그런 생각이 산산히 부숴지고 말았다.
테이블을 만드는 문장을 쓸 줄 안다는 것, 그리고 힌트를 사용하여 퍼포먼스향상을 얻을 줄 안다는 것과 실제 시스템을 개발한다는 것은 다른얘기였다. I/O에 대해서는
DB BLOCK SIZE가 O/S I/O BLOCK SIZE의 정수배여야 함을 알고, 익스텐트 크기가 DB BLOCK SIZE에 MULTI BLOCK I/O SIZE를 곱한 값의 배수여야 함을 안다는 것과 클라이언트가 요구하는 시스템이 어떤 것인지를 파악하고 그것을 RDBMS에 옮긴다는 것은 전혀 달랐다.
갑갑한 마음에 테이블 디자인을 위한 책을 찾으려 서점을 뒤져보았지만 수많은 수학식과 함수들과 마주해야했을 뿐, 무엇이 테이블이고 무엇이 ERD인지 말해주는 책은 드물었다.
그렇게 시간이 없는 이유로, 몇권 안되는 책을 빠른 시간내에 훑어보고 당장 테이블 디자인을 해야했고 그렇게 디자인된 시스템을 완성시켜가면서 초기에 DB DESIGN시에 고려하지 못한 부분 혹은 원천적으로 잘못 설계된 디자인때문에 프로그램자체의 성능은 떨어질 수 밖에 없었고 임시변통의 방법들도 등장하기 시작했다. 그리고 필자는 RDBMS가 무엇인지 알기전에 다시는 테이블 설계를 하지 않겠다고 결심했다.
그리고 얼마 뒤 한빛미디어에서 나온 "데이터베이스 설계와 구축"이란 책을 마주할 수 있었던것은 너무나 기쁜 일이었다. 책을 잠깐 훑어본 필자는 "바로 이거야"라는 감탄사를 내뱉었고, 지금은 책에 열심히 줄을 그으며 읽게 되었다.
이 책은 초보자를 위한 책이 아니다. 이 책은 전문가를 위한 책도 아니다. 전문가도 초보자도 아닌 어중간한 자리에 서서 자신이 무엇을 아는지 무엇을 모르는지도 모르는 사람을 위한 책이다. 테이블을 만드는 SQL을 쓸줄은 아는데, ORACLE상에서 FULL OUTER JOIN을 수행할줄은 아는데 정작 테이블을 만들라면 무엇을 해야할지 모르는 사람. 시스템을 가동시키고 나면 무엇인가를 체크해야하는 것은 아는데 그게 무엇인지를 말하라면 "글쎄요." 라는 말 밖에 할말이 없는 사람을 위한 책이다.
그러나 이 책이 단순히 빠른 개발을 위한 HOWTO만을 말하고 있는 책은 아니다. ENTITY가 ENTITY가 아닌가? 라고만 생각하고 있는 독자에게 엔티티를 분류시켜 주고, 엔티티에는 어떻게 명칭을 부여할 것인가에대해서는 잠시 접어두고 시간에 쫓겨 생각 나는대로 명명하는 독자에게 엔티티 명명 규칙에 대해서 생각할 시간을 주는 책이다.
초반부에 ERD의 기초지식으로 출발하여 DB 구축 준비, SQL, 튜닝, DB관리, 프로젝트 실습으로 이어지는 진행역시 잘 짜여진 구성이다.
다만, 이 책의 독자가 될 대부분의 사람들에게는 이미 익숙할 SQL문과 오라클 설치방법에 대해서 지면을 할애한 것이 불필요하다고 보이는 점이 옥의 티라고 생각된다.(만약 오라클 설치방법에 ORACLE 8i를 펜티엄 4에서 설치할때 마주치는 문제를 해결하는 방법에 대해서 다루었다면 전혀 불필요하지 않았을테지만..)
프로그래밍에 있어서 설계는 중요하다. 프로그래머중 100이면 100 이 말에는 이견이 없을것이다. 문제는 어떻게 설계하는가이다. 시간에 쫓겨야하는, 그리고 언제나 슈퍼맨이기를 요구받는 열악한 개발환경속에서도 좋은 RDBMS디자인을 하고 싶은 사람이라면 이책은 읽어볼만 하다.