본문 바로가기
DB & SQL/데이터베이스 개론

데이터베이스 설계

by k-mozzi 2022. 2. 21.
반응형
Preface

 

이번 장에선 요구사항 명세서를 분석하여 E-R 다이어그램으로 표현한 후, 이를 바탕으로 관계 데이터 모델을 작성하는 방법을 알아보았다.

 

책에서 소개하는 각 단계의 예시들은 쉽게 따라하며 이해할 수 있었지만, 아무런 도움 없이 혼자 DB를 설계하려면 요구사항 명세서를 작성하는 것 부터 굉장히 오랜 시간이 소요될 것 같다는 생각이 들었다.

 

또, 소프트웨어 공학을 처음 공부한 것이 정말 잘한 일인 것 같다는 생각도 들었다.

 

다양한 내용들을 전체적으로 훑은 것 뿐이지만, 한 번 봤던 내용을 다시 공부하자 이해하기도 수월하고 자연스레 복습도 돼 자신감이 생긴다.


 

1. 데이터베이스 설계 단계

 

 

 


 

2. 요구사항 분석

 

 

- 목적: 개발할 DB의 용도를 명확히 파악하는 것

 

 

- 요구 사항 분석의 단계

1) 사용자의 범위 설정

2) 업무 분석

→ 면담, 설문지, 업무 관련 문서의 분석 etc.

3) 요구 사항 명세서 작성

 

 


 

3. 개념적 설계

 

 

- 개념적 데이터 모델: DB에 저장해둘 필요가 있다고 판단되는 데이터 요소를 추출하고 데이터 요소 간의 관계를 파악하여 표현한 것

 

 

- 개념적 모델링: 사용자의 요구 사항을 개념적 데이터 모델로 변환하는 작업

 

 

- 개체와 속성 추출 방법

1) 제시된 요구 사항의 문장들에서 명사를 찾는다.

2) 일반적이고 광범위한 의미의 명사는 제외한다.

3) 의미가 같은 명사가 여러 개면 대표 명사 하나만 선택한다.

4) 찾아낸 명사를 개체와 속성으로 정확히 분류한다.

→ 조직의 업무 처리와 관련이 깊은 개체와 속성부터 반드시 추출해야 한다.

 

 

- 관계 추출 방법

1) 제시된 요구 사항의 문장들에서 동사를 찾는다.

2) 일반적이고 광범위한 의미의 동사는 제외한다.

3) 의미가 같은 동사가 여러 개면 대표 동사 하나만 선택한다.

4) 매핑 카디널리티를 기준으로 관계를 분류한 후 참여 특성을 결정한다.

 

 

- E-R 다이어그램 작성

 

 


 

4. 논리적 설계

 

 

- 논리적(데이터) 모델링: E-R 다이어그램을 논리적 데이터 모델로 변환하는 작업

 

 

- E-R 모델과 관계 데이터 모델의 차이

1) E-R 모델: 개체와 관계를 구분, 다중 값 속성이나 복합 속성의 표현 허용

2) 관계 데이터 모델: 개체와 관계를 구분하지 않고 모두 릴레이션으로 표현, 다중 값 속성과 복합 속성 비허용

→ 릴레이션 스키마로 변환하는 방법을 규칙화할 필요가 있다.

 

 

- 릴레이션 스키마 변환 규칙


1. 모든 개체는 릴레이션으로 변환한다.

1) 개체가 가지고 있는 속성이 복합 속성인 경우, 이를 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환한다.

2) 키 속성은 릴레이션의 기본키로 변환한다.

 

 

2. 다대다(n:m) 관계는 릴레이션으로 변환한다.

1) 관계를 맺고 있는 개체들을 규칙 1에 따라 변환한 후, 이 릴레이션들의 기본키를 관계 릴레이션에 포함시키고 외래키로 지정한다.

2) 외래키들을 조합하여 관계 릴레이션의 기본키로 지정한다.

 

 

3. 일대다(1:n) 관계는 외래키로 표현한다.

1) 일반 개체들이 참여하는 일대다 관계는 릴레이션으로 변환하지 않고 외래키로만 표현한다.

① 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시키고 외래키로 지정한다.

② 관계의 속성들도 n측 개체 릴레이션에 포함시킨다.

 

 

2) 약한 개체가 참여하는 일대다 관계는 릴레이션으로 변환하지 않고 외래키로만 표현한다.

① 외래키가 포함된 릴레이션에서 이 외래키를 포함하여 기본키를 지정해야 한다.

 

 

4. 일대일(1:1) 관계는 외래키로 표현한다.

1) 일반적인 일대일 관계는 외래키를 서로 주고받는다.

① 릴레이션으로 변환하지 않고 서로의 기본키를 주고받아 이를 외래키로 지정한다.

② 관계가 가지는 속성들은 관계에 참여하는 개체의 릴레이션에 모두 포함시킨다.

→ 한쪽 릴레이션만 외래키와 관계의 속성을 가져도 충분하다.

 

2) 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다.

 

3) 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합친다.

① 관계의 이름을 릴레이션의 이름으로 사용한다.

② 관계에 참여하는 두 개체의 속성들도 릴레이션에 모두 포함시킨다.

③ 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정한다.

 

 

5. 다중 값 속성은 별도의 릴레이션을 만들어 포함시킨다.

1) 다중 값 속성으로 표현된 속성뿐 아니라 그 속성을 가지고 있는 개체에 해당하는 리렐이션의 기본키를 가져와 포함시키고 이를 외래키로 지정한다.

2) 기본키는 다중 값 속성과 외래키를 조합하여 지정한다.

 

 

- 속성의 분류

1) 복합 속성: 독립적인 속성들이 모여서 만들어진 속성

2) 다중값 속성: 하나의 속성이 여러 개의 값을 가질 수 있는 경우

 

 

- 속성이 많은 관계는 관계 유형에 상관없이 릴레이션으로 변환할 수 있다.

→ DBMS의 부담이 커지므로, 외래키만으로 표현이 가능하면 릴레이션으로 변환하지 않는 것이 좋다.

 

 

- 순환 관계를 변환하는 예

 


 

- 최종적으로 변환된 릴레이션 스키마에 대해 속성의 데이터 타입과 길이, 널 값 허용 여부, 기본값, 제약조건 등을 결정하는 것도 논리적 설계 단계에서 수행하는 작업이다.

 

 

- 테이블 명세서: 릴레이션 스키마에 대한 설계 정보를 기술한 문서

 


 

5. 물리적 설계와 구현

 

 

- 물리적 설계: 필요한 인덱스 구조나 내부 저장 구조 등 물리적 구조를 설계

 

 

- 구현: SQL로 작성한 명령문을 DBMS에서 실행하여 DB를 생성

 

728x90
반응형

'DB & SQL > 데이터베이스 개론' 카테고리의 다른 글

회복과 병행 제어  (0) 2022.02.24
정규화  (0) 2022.02.23
데이터베이스 언어 SQL  (0) 2022.02.17
관계 데이터 연산  (0) 2022.02.13
관계 데이터 모델  (0) 2022.02.11

댓글