본문 바로가기

데이터베이스/Oracle

[데이터베이스 모델링-1] 데이터베이스 설계

데이터베이스 설계란?


모델링을 통해 현실 세계의 업무적인 데이터 항목들과 프로세스를 추상화한 것을 실제적으로 구현하여 물리적 데이터베이스화 시키는 일련의 과정이다.



데이터베이스 설계과정


요구사항수집 및 분석 단계 > 개념적 설계 단계 > 논리적 설계 단계 > 물리적 설계 단계


(1) 요구사항 수집 및 분석 단계: 

     구성원들의 요구사항과 기능적 요구사항을 명시한다.


(2) 개념적 설계단계: 

     요구사항을 기반으로 엔티티를 추출하고, 애트리뷰트와 관계를 정의하며, 산출물로 ER다이어그램을 작성한다. 이 단계에서는 큰틀에서 세부적인 애트리뷰트까지를 분류하는 하향식 방식을 사용한다.

(상향식설계는 데이터베이스를 구축하려는 대상에서 사용되는 화면이나 양식, 전표로부터 데이터 항목을 모두 추출해 낸 후에 비슷한 애트리뷰트를 그룹지어 엔티티를 만들어서 설계하는 방식이다.)


ER모델은 개념적 데이터 모델로 엔티티와 애트리뷰트, 관계를 가지고 실세계를 개념적으로 표현하는 기법이다.


(3) 논리적 설계단계:

     데이터베이스 관리시스템을 무엇으로 할것인지를 선정한다. 다음은 정해진 데이터 베이스 관리 시스템의 스키마를 만든다. 개념적 설계단계에서 얻은 산출물을 데이터베이스관리시스템의 스키마로 변한하는 작업을 수행한다.


(4) 물리적 설계단계:

     주어진 응용 프로그램에 대한 성능을 향상시키기 위해서 데이터베이스 저장 구조와 접근 경로를 결정하는 작업을 수행한다. 이 단계에서 수행하는 가장 대표적인 작업이 인덱스와 역정규화이다. 인덱스는 데이터베이스 내의 레코드를 쉽게 접근하기 위해서 원하는 데이터를 좀 더 빨리 찾게 도와주는 데이터베이스의 객체 중의 하나이다. 역정규화는 정규화 때문에 분리된 테이블을 참조할 때 과도한 조인 연산이 발생하는 것을 방지 하기 위해 정규화에 어긋나는 행위를 하는것을 말한다.




설계지침


데이터베이스의 설계 목표는 간단하고 효율적인 스키마를 만드는 것이다.  이런 스키마를 만들기 위한 몇가지 지침을 정리하면,

(1) 현실 세계를 데이터베이스로 구축할 때는 정확하게 모델링을 해야 한다.

(2) 두 엔티티간에 비슷한 애트리뷰트가 많이 있다면 둘을 하나의 엔티티로 통합해야 한다.

(3) 애트리뷰트는 단순하고 명확하며 직관적인 의미를 갖도록 해야 한다.

(4) 각각의 사실은 한 번식만 표현해서 정보는 공유되어야 한다.

(5) 애트리뷰트는 널(Null)값을 가지면 안된다.

(6) 엔티티 vs 애트리뷰트 vs 관계 중 어느 것에 해당하는지를 정하는것이 중요하다.

(7) 일반적으로 엔티티와 애트리뷰트는 명사이고 관계는 동사인 경우가 많다.

(8) 애트리뷰트의 이름은 짧아야 관리하기 쉽다.