데이터베이스 설계 단계
- 데이터베이스 설계 : 사용자드의 요구 사항을 고려하여 데이터베이스를 생성하는 과정
- 데이터베이스 설계 방법
- E-R 모델과 릴레이션 변환 규칙 설계
- 요구사항분석 2. 개념적 설계 3. 논리적 설계 4. 물리적 설계 5. 구현
- 변경이 필요하면 이전 단계로 되돌아가 설계 내용을 변경
- 정규화를 이용한 설계
요구 사항 분석
- 조직의 구성원들이 데이터베이스를 사용하는 용도를 파악
- 다양한 요구 사항을 수집하고 이를 분석한 결과를 요구 사항 명세서로 작성
- 사용자의 범위 결정
- 실제 사용할 주요 사용자의 범위를 정해 불필요한 요구사항을 수집하지 않도록 하는 작업
- 해당 사용자가 조직에서 수행하는 업무 분석
- 업무와 관련해 필요한 데이터와 데이터에 필요한 처리 등에 맞춰 요구 사항들을 수집, 분석
- 요구 사항 수집 방법 : 면담, 설문지 배포, 업무 관련 문서 분석 등
- 분석 결과를 요구사항 명세서로 문서화
- 요구 사항 분석 단계의 결과물 : 요구 사항 명세서
개념적 설계
- 요구 사항 분석 결과를 기반으로 현실 세계에서 중요한 데이터 요소인 개체를 추출한 후 개체 간의 관계를 결정하여 이를 E-R 다이어그램으로 표현하는 것
- 데이터베이스에 저장해 둘 필요가 있다고 판단되는 데이터 요소를 추출하고 데이터 요소 간의 관계를 파악하여 이를 표현
- 개념적 설계의 결과물 : 개념적 스키마 (E-R 다이어그램)
- 개체와 속성 추출
- 개체 : 저장할만한 가치가 있는 중요 데이터를 가진 사람이나 사물. 개념적 모델링에 가장 중요한 요소
- 요구 사항 명세서의 문장들의 명사 (일반적이고 광범위한 의미의 명사는 제외)
- 관계 추출
- 관계 추출
- 개체 간의 의미 있는 연관성
- 문장에서 동사 (연관성을 의미있게 표현한 동사)
- 매핑 카디널리티와 참여 특성 결정
- 매핑 카디널리티 : 관계를 맺고 있는 두 개체에서 각 개체 인스턴스가 관계를 맺고 있는 상대 개체의 개체 인스턴스의 개수 / 일대다, 일대다, 다대다
- 참여특성 : 필수적 참여, 선택적 참여
- E-R 다이어그램 작성
- 개념적 스키마 : 요구사항 명세서에서 추출한 개체, 속성, 관계를 하나의 E-R 다이어그램으로 표현
논리적 설계
- DBMS에 적합한(사용할 DBMS의 특성 고려) 논리적 데이터 모델을 이용해서 개념적 스키마를 기반으로 논리적 스키마를 설계
- 일반적으로 관계 데이터 모델
- E-R 다이어그램 -> 릴레이션 스키마 (테이블 스키마)
- 논리적 설계의 결과물 : 논리적 스키마 (릴레이션 스키마)
- 5가지 규칙에 의해 변환
- 모든 개체는 릴레이션으로 변환한다
- 각 개체는 하나의 릴레이션
- 개체의 이름 : 릴레이션 이름, 개체의 속성 : 릴레이션 속성
- 복합 속성인 경우 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
- 키 속성 : 릴레이션의 기본키
- 다대다 관계는 릴레이션으로 변환한다
- 다대다 관계를 하나의 릴레이션으로 변환
- 관계의 이름: 릴레이션의 이름, 관계의 속성 : 릴레이션의 속성
- 관계를 맺고 있는 개체를 규칙 1에 의해 변환 후 릴레이션들의 기본키를 관계 릴레이션에 포함시키고 외래키로 지정. 이 외래키들을 조합하여 관계 릴레이션의 기본키로 지정 (그림 참고)
- 외래키 지정시 이름 같으면 다 다르게 표현해주어야 함
- 일대다 관계는 외래키로 표현한다
- 일대다 관계는 릴레이션으로 변환하지 않고 외래키로만 표현
- 3-1. 일반적인 일대다 관계는 외래키로 표현한다
- 일반 개체들이 참여하는 일대다 관계
- 1측의 개체 릴레이션의 기본키를 가져와 n측 개체 릴레이션에 포함시키고 외래키로 지정
- 관계 속성들도 n측 개체 릴레이션에 포함
- 3-2. 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다
- 약한 개체가 참여하는 일대다 관계는 릴레이션으로 변환하지 않고 외래키로만 표현
- 1측의 개체 릴레이션의 기본키를 가져와 n측 개체 릴레이션에 포함시키고 외래키로 지정
- 관계 속성들도 n측 개체 릴레이션에 포함
- 다른점 : 외래키가 포함된 릴레이션에서 이 외래키를 포함하여 기본키를 지정
- = n측 개체 릴레이션이 가지고 있던 키 속성과 외래키 속성을 조합하여 기본키로 지정 (오너 개체에 따라 존재 여부가 결정되기 때문에)
- 일대일 관계를 외래키로 표현한다
- 4.1. 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
- 4.2. 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다.
- 관계가 가지고 있는 속성들도 관계에 필수적으로 참여하는 개체에 해당하는 릴레이션에 함께 포함시킨다
- 4.3 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합친다.
- 두 개체에 해당하는 릴레이션들을 하나로 합쳐 표현
- 관계의 이름을 릴레이션의 이름으로 사용, 속성들도 모두 포함시킴
- 키 속성을 조합하여 관계 릴레이션의 기본키로 지정
- 다중 값 속성은 릴레이션으로 변환한다
- 다중값 속성의 경우 별도의 릴레이션을 만들어 포함시킨다.
- 릴레이션의 이름은 자유롭게 정하고 다중값 곳겅을 가지고 있는 개체에 해당하는 릴레이션의 기본키를 가져와 포함시키고 이를 외래키로 지정. 기본키는 다중값 속성과 외래키를 조합하여 지정.
- 기타
- 일대일 일대다 관계도 릴레이션으로 변환할 수 있다 (대신 릴레이션이 많아져 부담스러워짐)
- 순환관계 : 기본 규칙 그대로
- 릴레이션 스키마 변환 규칙을 이용한 논리적 설계
물리적 설계와 구현
- 물리적 설계 : 하드웨어나 운영체제의 특성을 고려하여 필요한 인덱스의 구조나 내부 저장 구조 등에 대한 물리적인 구조 설계
- 구현 : DBMS를 이용해 SQL문을 작성하고 이를 실행시켜서 데이터베이스를 실제로 생성하면 완료