March 31st 2021
데이터베이스의 디자인 절차의 전반적인 흐름을 파악 후 각 절차에 대해 조금 더 깊이 살펴보겠습니다. 구현하기도 빠듯한데 이러한 절차를 다 완수해야 하는지 의문점이 들 수 있습니다.
적당히 설계하고 만 데이터베이스는 설계 과정을 마치지 않은 것과 같습니다. 설계 과정을 경시할수록 구현 및 개발 후의 리스크가 더 커질 수 있기 때문에, 프로젝트의 크기의 규모와 상관없이 처음부터 끝까지 마치는 것이 중요합니다.
“There’s never time to do it right, but there’s always time to do it one!”
저는 학습하는 단계이고 개인 프로젝트에서의 DB 작업은 설계에 대해 크게 고려해 보지 않고 작업했습니다. 하지만 데이터베이스 설계 작업 자체는 어렵지 않다고 합니다. 다만 앞서 언급한 대로 시간과 인내심을 가지고 끝까지 완료하는 것이 중요하다고 해요.
앞으로 데이터베이스 디자인 작업을 크게 7단계로 나누어 살펴보고자 합니다. 개략적인 흐름을 알 수 있도록 여기서는 간략하게 살펴보겠습니다.
여러 회사에서 그들만의 미션이나 비전을 정해 놓은 것을 쉽게 찾아볼 수 있습니다. 데이터베이스 설계에서도 비슷한 작업을 할 수 있습니다.
다른 설계 작업에 앞서 데이터베이스 존재 이유에 대해 생각해보고 그것을 Mission Statement로 명시해 줍니다. 이를 통해 개발 및 데이터를 모으는 과정에서 의도된 대로 나아가고 있는지 상기할 수 있습니다.
데이터베이스가 완성된다면, DB 내 데이터를 이용해 유저가 어떠한 작업을 할 수 있는지 정리해 봅니다. 그리고 이것을 Mission Objectives란 이름으로 리스트를 작성해 보아요. 이 Mission Objectives는 Mission Statement에 대한 기반이 될 수 있습니다.
기존에 사용하고 있는 데이터베이스를 먼저 분석하는 작업이에요. 기존에 사용하고 있는 데이터베이스일 수도 있고, 또한 서류로 된 파일철이나 문서가 될 수도 있습니다.
요새 어느 곳에서 서류를 사용하나 싶을 수 있지만 의외로 아직 서류로 정보를 보관하는 곳이 꽤 있다고 합니다. 그리고 회사 내에서 사용하는 웹 또는 데스크탑 애플리케이션을 검토하는 것도 중요한 작업입니다. 요새 한국의 스타트업은 대부분 노션을 사용하기도 하는데, 이러한 애플리케이션도 잘 살펴보면 도움이 될 수 있어요.
데이터베이스 개발자는 기존의 데이터베이스를 분석함으로써 회사 또는 단체에서 어떠한 방식으로 데이터를 사용하고 취합을 하는지 검토할 수 있습니다. 그리고 실제 데이터베이스 개발 진행을 위한 초석이 됩니다.
데이터베이스 분석 과정에는 데이터의 실 사용자와 경영진들과의 인터뷰가 포함됩니다. 데이터베이스를 기반으로 어떠한 작업을 하는지, 또한 경영진이 정보를 어떻게 인식하고 있는지에 대해 감을 잡을 수 있습니다.
분석을 한 내용을 기반으로 초기 필드 리스트를 작성해 볼 수 있습니다. 그리고, 이 리스트를 가지고 다시 사람들과 논의, 피드백, 수정 등의 과정을 거칠 수 있습니다.
이 단계에서는 실제 데이터베이스의 테이블, 필드, 키, 필드 세부 사항을 정의하는 단계입니다. Mission Objectives와 두 번째 단계에서 얻은 데이터를 기반으로 테이블로 나타낼 대상을 정의하고 관련된 필드를 추가합니다.
그리고 정의한 테이블 필드를 검토합니다. 필드 단위에서는 multipart 또는 multivalue 필드가 없는지 확인하고, 테이블 단위에서 빠진 대상이 없고 각 대상이 적절히 정의되었는지 확인합니다.
각 구조가 정의 되었으면 필드에 대한 세부 스펙과 명세를 작성합니다. 데이터베이스를 사용할 유저 및 경영진과 함께 데이터베이스 개발자가 익숙하지 않은 부분을 확인하거나 구체적인 사항을 함께 검토할 수 있습니다.
정의한 테이블의 관계를 primary key 또는 linking table을 이용해 설정하는 단계입니다. 어떠한 방식으로 관계를 설정할지는 테이블 간 관계에 따라 다르며 구조상 관계가 명확한 케이스도 있고 비즈니스 룰에 따라야 하는 케이스도 있을 것입니다.
다음으로 인터뷰를 통해 데이터베이스에 추가 해야 할 제한 사항을 여러 방면으로 확인하고 이를 근거로 비즈니스 룰을 설정하고 테이블의 validation을 추가하는 단계입니다.
회사 또는 조직이 데이터를 사용하는 방식은 데이터베이스 개발자가 어떠한 제한 사항을 선정하는데 꼭 파악해야 하는 사항입니다. 실무자와는 데이터의 구체적인 사항을, 경영진과는 좀 더 큰 맥락에 대한 제한 사항을 파악할 수 있습니다.
유저가 어떠한 방식의 정보가 필요하고 데이터를 어떻게 사용하는지 파악한 후 필요한 뷰를 파악하는 단계입니다. 몇몇 유저는 자신의 업무에 매우 구체적인 정보를 필요로 하고, 몇몇은 개략적인 정보만을 필요로 할 수 있습니다. 인터뷰를 통해 이를 파악 후 알맞은 테이블과필드를 이용해 뷰를 정의하고 뷰에 대한 기준을 세우는 단계입니다.
설계한 데이터베이스를 검토하는 단계입니다. 테이블 및 필드 레벨의 무결성, 테이블 간 관계의 유효성을 검토합니다. 그리고 비즈니스 룰에 대한 검토도 진행합니다.
여기까지 데이터베이스 설계 시 거치는 큰 단계에 대해 개략적으로 알아보았습니다. 다음 글을 통해 각 단계별로 어떠한 설계 작업을 하는지 좀 더 구체적으로 살포 보겠습니다.