개발스토리
데이터베이스 설계 본문
데이터베이스 설계
■ 사용자의 다양한 요구 사항을 고려하여 데이터베이스를 생성하는 과정이다.
■ 관계 데이터베이스의 대표적인 설계 방법
- E-R 모델과 릴레이션 변환 규칙을 이용한 설계
- 정규화를 이용한 설계
이번 포스팅에서는 E-R모델과 릴레이션 변환 규칙을 이용한 설계를 이야기 해보겠다.
E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정
■ 설계 과정 중에 오류를 발견하여 변경이 필요하다면 이전 단계로 되돌아가서 설계 내용을 변경할 수 있다.
설계 1단계 : 요구 사항 분석
■ 목적
- 사용자의 요구 사항을 수집하고 분석하여 개발할 데이터베이스의 용도를 파악한다.
- 업무에 필요한 데이터가 무엇인지, 그 데이터에 어떤 처리가 필요한지 등을 고려
■ 결과물
- 요구 사항 명세서
■ 주요 작업
- 데이터베이스를 실제로 사용할 주요 사용자의 범위를 결정한다.
- 사용자가 조직에서 수행하는 업무를 분석한다.
- 면담, 설문조사, 업무 관련 문서 분석 등의 방법을 이용해 요구 사항을 수집한다.
- 수집된 요구 사항에 대한 분석 결과를 요구 사항 명세서로 작성한다.
설계 2단계 : 개념적 설계
■ 목적
- DBMS에 독립적인 개념적 스키마를 설계한다.
- 요구 사항 분석 결과물을 개념적 데이터 모델을 이용해서 개념적 구조로 표현한다.
- 개념적 모델링 방법으로 일반적으로 E-R 모델을 많이 이용한다.
■ 결과물
- 개념적 스키마 : E-R 다이어그램
■ 주요 작업
- 요구 사항 분석 결과를 기반으로 중요한 개체를 추출하고 개체 간의 관계를 결정해서 E-R 다이어그램으로 표현한다.
■ 작업 과정
1) 개체 추출, 각 개체의 주요 속성과 키 속성 선별
- 개체: 저장할 만한 가치가 있는 중요 데이터를 가진 사람이나 사물 등
- 예시: 병원 운영에 필요한 사람이나 사물로 환자, 의사, 수술실, 장비 등
- 개체 추출 방법: 요구 사항 문장에서 업무와 관련이 깊은 의미 있는 명사를 찾자. 여기서 업무와 관련이 적은 일반적이고 광범위한 의미의 명사는 제외한다. 의미가 같은 명사가 여러 개일 경우는 대표 명사 하나만 선택한다. 찾아낸 명사를 개체와 속성으로 분류하면 된다.
2) 개체 간의 관계를 설정한다.
- 관계: 개체 간의 의미 있는 연관성
- 관계 추출 방법: 요구 사항 문장에서 개체 간의 연관성을 의미 있게 표현한 동사를 찾자. 의미가 같은 동사가 여러 개일 경우는 대표 동사 하나만 선택한다. 찾아낸 관계에 대해 매핑 카디널리티와 참여 특성을 결정하자.
- 매핑 카디널리티: 1:1 / 1:N / N:M
- 참여 특성: 필수적 참여 / 선택적 참여
3) E-R 다이어그램으로 표현한다.
설계 3단계 : 논리적 설계
■ 목적
- DBMS에 적합한 논리적 스키마 설계
- 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현
- 논리적 모델링(데이터 모델링)은일반적으로 관계 데이터 모델을 많이 이용한다.
■ 결과물
- 논리적 스키마: 릴레이션 스키마
■ 주요 작업
- 개념적 설계 단계의 결과물인 E-R 다이어그램을 릴레이션 스키마로 변환한다.
- 릴레이션 스키마로 변환 후에 속성의 데이터 타입, 길이, NULL 값 허용 여부, 기본 값, 제약 조건 등을 세부적으로 결정하고 결과를 문서화 시킨다.
■ E-R 다이어그램을 릴레이션 스키마로 변환하는 규칙
1) 모든 개체는 릴레이션으로 변환한다.
- E-R 다이어그램의 각 개체를 하나의 릴레이션으로 변환한다.
- 개체의 이름 -> 릴레이션 이름으로 한다.
- 개체의 속성 -> 릴레이션 속성으로 한다.
- 개체의 키 속성 -> 릴레이션의 기본키로 한다.
- 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환한다.
2) 다대다 관계는 릴레이션으로 변환한다.
- 관계의 이름 -> 릴레이션 이름으로 한다.
- 관계의 속성 -> 릴레이션의 속성으로 한다.
- 관계에 참여하는 개체를 규칙1에 따라 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고, 외래키들을 조합하여 관계 릴레이션의 기본키로 지정한다.
3) 일대다 관계는 외래키로 표현한다.
- 일대다 관계에서 일에 속하는 개체 릴레이션의 기본키를 다에 속하는 개체 릴레이션에 포함시켜 외래키로 지정한다.
- 관계의 속성들도 다에 속하는 개체 릴레이션에 포함시킨다.
- 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다. 이 때는 1측 개체 릴레이션의 기본키를 다 측 개체 릴레이션에 포함시켜서 외래키로 지정하고 기본키와 외래키를 포함하여 기본키로 지정하면 된다.
4) 일대일 관계는 외래키로 표현한다.
5) 다중 값 속성은 릴레이션으로 변환한다.
- 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와서 새로운 릴레이션에 포함시킨다.
- 새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합하여 지정한다.
변환 규칙을 순서대로 적용하되, 해당되지 않는 규칙은 제외하면 된다.
설계 4단계 : 물리적 설계
■ 하드웨어나 운영체제의 특성을 고려해서 필요한 인덱스 구조나 내부 저장 구조등에 대한 물리적인 구조를 설계.
설계 5단계 : 구현
■ SQL로 작성한 명령문을 DBMS에서 실행하여 데이터베이스를 실제로 생성