데이터베이스 설계 단계
데이터베이스 설계란?
- 사용자들의 요구 사항을 고려하여 데이터베이스를 생성하는 과정
- 사용자가 데이터베이스를 실제로 사용하면 구조를 변경하기 어렵다.
- 설계 과정에서부터 품질 좋은 데이터베이스를 생성해야 한다.
- 품질 좋은 데이터베이스를 평가하는 기준을 만족해야 한다.
- 데이터베이스를 실제로 사용하는 구성원들의 요구 사항을 만족하는가
- 데이터의 일관성과 무결성을 유지하고 있는가
- 사용자가 이해하기 쉽고 접근하기 편리한가
데이터베이스 설계 과정
- 요구사항 분석
- 역할
- 데이터베이스의 용도 파악
- 결과물
- 요구 사항 명세서
- 역할
- 개념적 설계
- 역할
- DBMS에 독립적인 개념적 구조 설계
- 결과물
- 개념적 스키마
- 역할
- 논리적 설계
- 역할
- DBMS에 적합한 논리적 구조 설계
- 결과물
- 논리적 스키마
- 역할
- 물리적 설계
- 역할
- DBMS로 구현 가능한 물리적 구조 설계
- 결과물
- 물리적 스키마
- 역할
- 구현
- 역할
- SQL문을 작성 후 이를 DBMS에서 실행하여 데이터베이스 생성
- 역할
1번에서 5번까지 순서대로만 진행되는게 아니라
설계 과정 중에 오류를 발견하여 변경이 필요하면
이전 단계로 되돌아가 설계 내용을 변경할 수도 있다.
요구사항 분석
- 조직의 구성원들이 데이터베이스를 사용하는 용도를 파악하는 단계
- 데이터베이스를 사용해 실제 업무를 처리하는 사용자에게 필요한
데이터의 종류와 처리 방법같은 다양한 요구 사항을 수집하고,
이를 분석한 결과를 요구 사항 명세서로 작성한다. - 요구 사항 분석 단계에서 파악한 사용자의 요구 사항은 이후의 설계 단계에서 중요하게 사용되고,
구축된 데이터베이스의 품질을 결정짓는 중요한 기준이 된다. - 기본 순서
- 데이터베이스를 사용할 주요 사용자의 범위 결정
- 해당 사용자가 조직에서 수행하는 업무 분석
- 사용자의 업무와 관련해 필요한 데이터가 무엇이고,
그 데이터에 어떤 처리가 필요한가 등에 초점을 맞춰서 요구 사항을 수집 및 분석한다.
- 사용자의 업무와 관련해 필요한 데이터가 무엇이고,
- 수집된 요구 사항에 대한 다각도의 분석이 끝나면 분석 결과를 요구 사항 명세서로 문서화한다.
개념적 설계
- 요구 사항 분석 단계에서 파악한 사용자의 요구 사항을 개념적 데이터 모델을 이용해 표현하는 단계
- 일반적으로 E-R 모델을 많이 사용한다.
- 요구 사항 분석 결과를 기반으로 현실 세계에서 중요한 데이터 요소인
개체를 추출한 후 개체 간의 관계를 결정하여 개념적 데이터 모델로 표현한다. - 개념적 모델링
- 개념적 설계 단계에서 요구 사항 명세서를 개념적 데이터 모델로 변환하는 작업
- 개념적 구조
- 개념적 데이터 모델로 표현한 결과물
- 예시
- E-R 다이어그램
- 예시
- 개념적 스키마라고도 부른다.
- 개념적 데이터 모델로 표현한 결과물
- 개념적 데이터 모델은 사용자들의 요구 사항들을 분석한 결과에서,
앞으로 데이터베이스에 저장해둘 필요가 있다고 판단되는 데이터 요소를
추출하고 데이터 요소 간의 관계를 파악하여 이를 표현한다.- 개발에 사용할 DBMS의 종류는 중요하지 않다.
- 개념적 모델링 과정
- 개체와 속성 추출
- 관계 추출
- 개념적 구조 작성 (예시 : ERD)
논리적 설계
- 개념적 구조를 개발에 사용할 DBMS에 적합한 논리적 데이터 모델을 이용해
논리적 구조를 설계하는 단계- 일반적으로 관계 데이터 모델을 많이 사용한다.
- 논리적 모델링
- 개념적 구조를 릴레이션(테이블) 스키마로 변환하여 DBMS가 처리할 수 있도록 하는 작업
- 데이터 모델링이라고도 부른다.
- 논리적 구조
- 논리적 데이터 모델로 표현된 결과물
- 논리적 스키마라고도 부른다.
- 릴레이션 스키마 변환 규칙
- 모든 개체는 릴레이션으로 변환한다.
- 다대다 관계는 하나의 릴레이션으로 변환한다.
- (기타 고려사항) 일대일 관계나 일대다 관계도 릴레이션으로 변환할 수 있다.
- (기타 고려사항) 속성이 많은 관계는 관계의 유형에 상관없이
릴레이션으로의 변환을 고려할 수 있다.
- 일대다 관계는 외래키로 표현한다.
- 일반적인 일대다 관계는 외래키로 표현한다.
- 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다.
- 일대일 관게를 외래키로 표현한다.
- 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
- 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다.
- 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합친다.
- 다중 값 속성은 릴레이션으로 변환한다.
물리적 설계
- 논리적 구조를 기반으로 물리적 구조를 설계한다.
- 데이터베이스의 물리적 구조는
데이터베이스를 저장 장치에 실제로 저장하기 위한
내부 저장 구조와 접근 경로 등을 의미한다. - 저장 장치에 적합한 저장 레코드와 인덱스의 구조등을 설계한다.
- 저장된 데이터와 인덱스에 빠르게 접근하게 할 수 있는 탐색 기법등을 정의한다.
- 주로 데이터베이스를 실제로 구축할 컴퓨터 시스테므이 저장 장치와 운영체제의 특성을 고려하여,
효율적인 성늘을 지원하면서도 사용할 DBMS로 구현이 가능한
물리적인 구조를 설계하는 작업을 한다. - 응답 시간을 최소화하고 저장 공간을 효율적으로 활용하면서,
데이터베이스 시스템의 처리 능력을 향상시킬 수 있도록 물리적 구조를 설계해야 한다. - 내부 스키마
- 물리적 설계의 결과물인 물리적 구조
- 물리적 스키마라고도 부른다.
구현
- 내부 스키마를 기반으로 DBMS에서 SQL로 작성한 명령문을 실행하여 데이터베이스를 실제로 생성한다.
- 데이터 정의어(DDL)이 사용된다.