정보 처리/데이터 모델링

데이터베이스의 설계

본클라쓰 2012. 6. 11. 11:03

 

데이터베이스 응용 프로그램을 작성할 때 데이터베이스 설계가 가장 중요하다. 데이터베이스 응용 프로그램의 성패는 거의 대부분 데이터베이스 설계가 차지한다. 그 이유는 사용하고자 하는 데이터를 분석하여 데이터베이스에 반영하는 작업이고, 현실 세계에 존재하는 복잡한 개체와 사건들을 데이터베이스에 저장하고, 개체와 개체 간의 관계성을 보다 명확하게 기술하여 데이터베이스를 쉽게 구축할 수 있도록 하는 작업이기 때문이다.

 

그렇다면 데이터베이스 설계에 정확한 답은 있는가?

 

그렇지 않다. 데이터베이스 모델링은 모델링을 하는 사람이 어떤 사람이냐에 따라 각기 다른 결과가 나타날 수 있다. 그렇지만 중요한 점은 좋은 모델링과 나쁜 모델링이 존재한다는 점이다. 즉, 정답은 없더라도 모범 답안은 존재한다.

 

데이터베이스 모델링은 상당히 어려운 작업이다. 그 이유는 구현하고자 하는 현실 세계의 업무에 대해 폭넓고 정확한 지식이 필요하고, 데이터베이스 시스템에 대해 깊이 있는 지식과 경험이 요구되기 때문이다. 그래서 모델링은 프로젝트의 경험이 많고 데이터 베이스 관련 지식도 있는 사람이 담당하는 것이 대부분이다. 만약 모델링이 잘못되면 나중에 열심히 만든 프로그램이 아무 짝에도 쓸모없어지는 결과를 낳을 수 있다.

 

그럼 관계형 데이터베이스를 설계할 때 구성되는 요소는 무엇인가? 관계형 데이터베이스 설계의 구성 요소는 개체, 속성, 관계이다.

 

개체란 데이터로 표현하고자 하는 현실 세계의 대상체를 말한다. 현실 세계에 대해 사람이 생각할 수 있는 개념과 정보의 단위로서 의미를 지니며 파일에서는 레코드와 대응된다. 사람, 자동차, 연필 등 명사로 표현할 수 있으며 고유한 특성을 가진 하나의 사물이다.

 

속성은 개체에 관한 정보이다. 파일 구조상 필드에 해당한다. 데이터베이스를 구성하는 최소의 논리적 단위로 하나의 개체에 한 개 이상의 속성으로 구성되고 각 속성은 개체의 특성, 상태 등을 기술한다. 예를 들어 사람이 이름이나 성별이 속성이 된다.

 

관계는 개체 간의 연관성을 말한다. 일반적으로 동사형으로 표현된다. 예를 들어 "사람이 학교에 수업을 신청하다"라는 현실 세계의 데이터를 표현하기 위해서는 명사와 동사를 구분한다. 이 때 명사가 개체가 되고 동사가 관계가 된다. 앞의 문장에서는 사람, 학교, 수업이 개체가 되고, 신청하다 가 관계가 된다.

 

 

 

● 데이터베이스 모델링의 순서

 

데이터베이스 모델링은 보통 3단계를 거쳐 완성된다.

 

 

1. 개념적 모델링(Conceptual Modeiling)

 

조직, 사용자의 데이터 요구 사항을 찾고 분석하는데 시작한다. 이 과정은 어떠한 자료가 중요하며 또 어떠한 자료가 유지되어야 하는지를 결정하는 것도 포함된다. 이 단계에 있어서 중요한 활동은 핵심 엔티티와 그들 간의 관계를 발견하고 그것을 표현하기 위해서 엔티티-관계 다이어그램(ERD)을 작성하는 것이다. 개념적 모델링을 통해 조직의 데이터 요구를 공식화하는 것은 두 가지 중요한 기능을 지원한다.

 

첫째, 사용자와 시스템 개발자가 데이터 요구 사항을 발견하는 것을 지원한다. 개념적 모델링은 상위 문제에 대해 구조화를 쉽게 하며, 사용자와 시스템 개발자가 시스템 기능에 대해 논의할 수 있는 기반을 형성한다.

 

둘째, 개념 데이터 모델은 현 시스템이 어떻게 변형되어야 하는가를 이해하는데 유용하다. 일반적으로 매우 간단하게 고립된 시스템도 추상적 모델링을 통해 보다 쉽게 표현되고 설명된다.

 

 

2. 논리적 모델링(Logical Modeling)

 

데이터베이스 설계 프로세스의 Input으로 비즈니스 정보와 논리적인 구조와 규칙을 명확하게 표현한다. 누가, 어떻게 그리고 전산화와 별개로 비즈니스 데이터에 존재하는 사실들을 인식하여 기록하는 것이다. 데이터 모델링 과정에서 가장 핵심이 되는 부분이 논리 데이터 모델링이라 할 수 있다. 데이터 모델링은 업무를 조사하고 결정한 사실을 단지 ERD라는 그림으로 그려내는 과정을 말한다. ERD를 그린다는 것은 시스템 구축을 위해 가장 먼저 시작할 기초적인 업무조사를 하는 초기 단계부터 인간이 결정해야 할 대부분의 사항을 정의하는 시스템 설계의 전 과정을 지원하는 '과정의 도구'라고 해야 할 것이다.

 

이 단계에서 정규화를 실시한다. 정규화는 논리 데이터 모델의 상세화 과정의 대표적인 활동으로, 논리 데이터 모델의 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔티티에 배치되도록 함으로써 보다 신뢰성있는 데이터 구조를 얻는데 목적이 있다.

 

 

3, 물리적 모델링(Physical Modeling)

 

논리 데이터 모델에서는 데이터 저장소로서 어떻게 컴퓨터 하드웨어에 표현될 것인가를 다룬다. 물리적으로 컴퓨터에 어떻게 저장될 것인가에 대한 정의를 물리적 스키마라고 한다. 이 단계에서 결정되는 것은 테이블, 컬럼 등으로 표현되는 물리적 저장구조와 사용될 장치, 자료를 추출하기 위한 방법 등이 있다.

 

현실 프로젝트에서는 개념적 모델링 - 논리적 모델링 - 물리적 모델링 순으로 순차적으로 수행하는 경우는 드물며 개념적 모델링과 논리적 모델링은 한꺼번에 수행하여 물리적 모델링을 얻는 것이 대부분이다.

 

 

 

● 좋은 데이터베이스 설계를 보장하기 위한 조건

 

종속성 보존, 무손실 조인, Null 값의 사용을 자제해야 한다. 참고로 Null 값은 조인 속성에 존재할 경우 문제가 발생된다. Null 값이 존재하는 경우 질의를 명시할 때 정규 조인과 Outer 조인 사이의 결과 차이가 중요하다. 어떤 질의는 정규 조인을 필요로 하고 어떤 질의는 Outer 조인을 필요로 한다.

 

관계형 데이터베이스를 설계할 때 중요한 부분은 하나의 사물이 가질 수 있는 속성을 전부 찾아낸 후 Null 값을 가질 수 있는 부분과 Null 값을 가질 수 없는 부분으로 구분하는 것이다. Null 값을 가질 수 있는 부분을 찾아내어 테이블을 따로 구성하는 방법으로 관계를 효율적으로 구성할 수 있다. Null 값의 존재 여부는 중요한 정보와 중요하지 않은 정보로 나누는 기준이 되기도 한다. 데이터 중에 필수적인 요소를 정보라고 하며, 이 필수 정보들을 한 곳에 모아 관리하는 것도 좋다.