2 분 소요

key word : Database, RDB



데이터베이스를 효율적으로 사용하기 위해서는 구현하기 이전에 설계를 먼저 해봐야 한다. 중간에 구조를 변경하기 어렵기 때문에 특히 저장해야 할 데이터가 복잡할수록 그 중요성이 커진다고 생각한다. 이번에는 데이터베이스 중에서도 관계형 데이터베이스를 설계하는 방식에 대해 알아보고 다음번에 진행할 토이 프로젝트에서도 적용해 보려고 한다.



데이터베이스 설계 과정

  1. 요구 사항 분석
  2. 개념적 설계
  3. 논리적 설계
  4. 물리적 설계
  5. 구현

데이터베이스의 설계는 위의 5단계를 통해 이루어진다. 중간에 고치고 싶은 점이 발견된다면 다시 앞으로 돌아가 설계를 다시 할 수도 있다.



요구 사항 분석

가장 먼저 데이터베이스에 접근해 사용하는 구성원들의 요구를 파악해야 한다. 데이터베이스를 사용하는 용도에 따라 필요한 데이터의 종류와 처리 방법이 달라질 수 있다. 뒤에 이어지는 개념적 설계를 위한 발판이 되는 작업으로 요구 사항을 분석해 요구 사항 명세서로 작성하는 것이 좋다. 최종적으로 데이터베이스가 구현됐을 때 그 품질을 결정하는 기준으로 사용되기도 한다.



개념적 설계

요구 사항을 분석했다면 해당 명세서를 바탕으로 개념적 데이터 모델링을 해야 한다. 개념적 설계 단계에서 정의하는 데이터 모델은 DBMS에 종속적이지 않고, 단지 데이터들 간의 관계를 표현하기 위해 사용된다. 즉, Oracle을 사용할지, MySQL을 사용할지 정하기 이전에 데이터들 사이의 관계를 어떻게 표현할 것인지를 정하는 작업이다.

개념적 설계를 위한 데이터 모델로는 개체-관계 모델(Entity Relation Model)이 많이 사용된다. 해당 모델을 적용해 개념적 모델링을 한 이후의 결과물이 개체-관계 다이어그램(Entity Relationship Diagram)이다.

출처 : https://ko.wikipedia.org/wiki/%EA%B0%9C%EC%B2%B4-%EA%B4%80%EA%B3%84_%EB%AA%A8%EB%8D%B8


ERD를 작성하기 위해서는 우선 요구 사항 명세서를 보고 개체 및 개체의 속성, 개체 간의 관계 등을 추출해야 한다. 추출된 개체들과 속성을 이용해 서로 어떤 관계를 갖고 있는지를 도식화하면 ERD를 완성할 수 있다. ERD와 같이 개념적 모델링의 결과물을 표현한 것을 개념 스키마라고 부른다.



논리적 설계

논리적 설계에서는 개념적 설계 단계에서 도출한 결과를 DBMS에 적용할 수 있게 논리적 모델링을 한다. DBMS의 종류에 따라 여러 데이터 모델을 사용할 수 있지만, 많이 사용되는 것은 관계 데이터 모델이므로 관계 데이터 모델을 이용한 설계에 대해 알아보겠다.

관계 데이터 모델은 테이블을 이용해 데이터를 표현한다. E-R 다이어그램으로 표현한 데이터베이스의 개념적 구조를 특정 DBMS에서 사용될 수 있도록 테이블(릴레이션)으로 변환한다. 이 과정을 논리적 모델링, 혹은 그냥 데이터 모델링이라고 부른다.

ERD를 릴레이션으로 변환하는 데에는 몇 가지 규칙들이 있다. 다음의 규칙을 알아두면 적용하여 설계할 때 도움이 될 것이다.

  1. 모든 개체는 릴레이션으로 변환한다.
  2. 다대다 관계는 릴레이션으로 변환한다.
  3. 일대다 관계는 외래키로 표현한다.
  4. 일대일 관계는 외래키로 표현한다.
  5. 다중 값 속성은 릴레이션으로 표현한다.

이 외에도 여러 세부적인 규칙들이 존재하므로 필요할 때 찾아보면 좋을 것 같다.



물리적 설계 및 구현

물리적 설계 단계는 데이터베이스를 저장 장치에 실제로 저장할 때 어떤 구조로 저장할지, 경로를 어떻게 설정할지 등을 결정하는 단계이다. 효율적으로 데이터베이스에 접근해 데이터를 이용하기 위해 저장 레코드나 인덱스 구조 등을 지정하고, 탐색 기법을 정의하기도 한다. 실제로 저장하는 저장 장치와 운영 체제 등을 고려해 최대한 효율적인 성능을 내게 하는 것이 이 단계의 목표이다. 물리적 설계의 결과물은 내부 스키마라고 부른다.

구현 단계에서는 앞선 단계들의 결과물을 가지고 실제 데이터베이스를 생성하는 일을 한다. DBMS에서 SQL 쿼리를 작성해 테이블이나 인덱스 등을 생성하면 데이터베이스 설계 및 구현은 최종적으로 마무리가 된다. 마무리된 이후에는 맨 처음 목표한 데이터베이스의 용도에 맞게 잘 설계가 되었는지 확인해 보는 일도 중요하다.



참고

데이터베이스 개론(2판), 김연희, 한빛아카데미 , 2019

업데이트: