데이터베이스를 설계하는데 필요한 방법과 언어를 공부했지만 언제 어떻게 사용해야 하는지 알아야 데이터베이스를 제대로 개발할 수 있다.
이 장에서는 DB의 설계방법 정규화와 E-R 모델중 E-R모델과 릴레이션 변환 규칙을 소개한다.
DB설계는 사용자들의 요구 사항을 고려하여 DB를 생성하는 과정이다. 사용자가 DB를 실제로 사용하면 구조를 변경하기 어렵기 때문에 설계 과정에서부터 사용하기 쉬운 질 좋은 DB를 생성해야 한다. 데이터의 일관성과 무결성을 유지하면서 사용자가 이해하기 쉽고 접근하기 편해야 한다는 점도 기본 요건에 포함된다.
E-R 모델과 릴레이션 변환 규칙을 이용한 DB 설계는 다음과 같이 5단계로 진행된다.
1단계 | 요구 사항 분석 |
2단계 | 개념적 설계 |
3단계 | 논리적 설계 |
4단계 | 물리적 설계 |
5단계 | 구현 |
꼭 단계별 순서대로 진행되지 않으며, 변경이 필요하면 이전 단계로 돌아가 설계 내용을 변경할 수도 있다.
[ 1단계 : 요구 사항 분석 ]
요구 사항 분석 단계에서는 조직의 구성원들이 DB를 사용하는 용도를 파악한다.
즉 데이터베이스를 사용해 실제 업무를 처리하는 사용자에게서 필요한 데이터의 종류와 처리 방법 같은 다양한 요구 사항을 수집한다. 수집한 요구 사항을 분석하여 그 결과를 요구 사항 명세서로 작성하는 것이 요구 사항 분석 단계에서 수행하는 주요 작업이다.
요구 사항 분석 단계에서 파악한 사용자의 요구 사항은 이후의 설계 단계에서 중요하게 사용된다 [ 요구 사항 명세서 ].
[ 2단계 : 개념적 설계 ] : 개념적 구조, 스키마
요구 사항 분석 단계의 결과물인 명세서를 바탕으로 개념적 설계를 시작한다. 사용자의 요구 사항을 개념적 데이터 모델을 이용해 표현 [ E-R 모델 ] 한다.
개념적 설계 단계에서 요구 사항 명세서를 개념적 데이터 모델로 변환하는 일을 개념적 모델링이라고 한다.
E-R 다이어그램과 같이 개념적 데이터 모델로 표현한 결과물을 개념적 구조 또는 개념적 스키마라고 한다.
요구 사항 분석단계에서 얻은 요구 사항 명세서를 토대로 개념적 데이터 모델을 이용하여 표현한다. 개발에 사용될 DBMS의 종류에는 상관없이 저장할 필요가 있다고 판단되는 데이터 요소를 추출하고 관계를 파악하여 표현한 것이다.
먼저 E-R모델의 핵심요소인 개체를 추출하고 각 개체 [Table] 의 주요 속성 [Attribute] 과 키 속성을 선별. 개체 간의 관계를 결정해야 한다.
[ 개체와 속성 추출 ] - > [ 관계 추출 ] - > [ E-R 다이어그램 작성 ]
1 ] 개체와 속성 추출
개체는 현실 세계에서 어떤 조직을 운영하는데 꼭 필요한 사람, 사물과 같이 구별되는 모든 것을 의미한다. 즉, 개체는 저장할 만한 가치가 있는 중요 데이터를 지닌 사람이나 사물 등이며, 개념적 모델링을 하는데 가장 중요한 요소이다!
EX] 병원을 운영하는데 중요한 사람 : 환자, 의사, 간호사 등 => 개체
병원을 웅영하는데 중요한 사물 : 병실, 수술실, 의료 장비 등 => 개체
하지만 직관적으로 쉽게 개체를 추출하기에는 어렵다. 이럴때에는 제시된 요구 사항의 문장들에서 명사부터 찾아야한다. 이렇게 찾아낸 명사 중 개체가 아닌 속성으로 분류되는 단어는 제외한다.
EX] 회원이 상품을 주문하면 주문에 대한 주문번호, 주문수량, 배송지, 주문일지 정보를 유지해야한다.
여기서 회원과 상품은 개체로 분류. 주문번호, 주문수량, 배송지, 주문일지 정보는 회원이 상품을 주문하면 생기는 속성으로 분류한다.
개념적 설계의 최종 결과물은 E-R 다이어그램으로 작성해야 한다. 따라서 요구 사항 명세서에서 추출한 개체와 속성을 E-R 다이어그램으로 표현해두는 것이 좋다.
EX] 상품 : 상품번호, 상품명, 재고량, 단가
2 ] 관계 추출
관계는 개체 간의 의미 있는 연관성이다. 일반적으로 관계는 요구 사항을 표현한 문장에서 동사로 표현되므로 요구 사항 문장에서 동사부터 찾아야 한다.
관계를 추출한 후에는 추출한 관계에 대한 매핑 카디널리티와 참여 특성을 결정해야한다. 매핑 카디널리티는 관계를 맺고 있는 두 개체에서, 관계를 맺고 있는 상대 개체의 개체 인스턴스 개수를 의미한다. 1:1, 1:n, n:m [일대일, 일대다, 다대다] 중 하나로 분류한다.
EX] 회원은 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다. -> 회원개체 - 상품개체 가 맺는 관계 형성
회원 한 명이 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있으므로 둘의 개체가 맺는 주문 관계는 다대다 n :m 관계가 된다.
EX] 각 상품은 한 제조업체가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있다. -> 상품개체 - 제조업체 개체가 맺는 관계 형성
하나의 상품은 제조업체 하나가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있다. 제조업체 개체와 상품 개체 관계가 맺는 공급 관계는 1 :n 관계가 된다.
관계 | 관계에 참여하는 개체 | 관계 유형 | 속성 |
주문 | 회원(선택) 상품(선택) |
다대다 | 주문번호, 주문수량, 배송지, 주문일자 |
공급 | 상품(필수) 제조업체(선택) |
일대다 | 공급일자, 공급량 |
작성 | 회원(선택) 게시글(필수) |
일대다 |
[ 3단계 : 논리적 설계 ] : 릴레이션 스키마
논리적 설계 단계에서는 개발에 사용할 DBMS에 적합한 논리적 데이터 모델을 이용해 개념적 설계 단계에서 생성한 개념적 구조를 기반으로 논리적 구조를 설계한다. 대체적으로 관계 데이터 모델을 많이 사용하며 개념적 설계 단계에서 생성한 E-R 다이어그램을 릴레이션 스키마 [ 테이블 ] 로 변환하여 DBMS가 처리할 수 있도록 하는것이 논리적 설계 단계에서 수행하는 주요 작업.
[ E-R 다이어그램 ] ---> [ 논리적 데이터 모델 ]
논리적 모델링, 데이터 모델링
E-R 모델에서는 개체와 관계를 구분하지만, 관계 데이터 모델에서는 개체와 관계를 구분하지 않고 모두 릴레이션으로 표현한다. E-R 다이어그램을 릴레이션 스키마로 변환할 때 적용할 수 있는 5가지 규칙이 있다. 규칙을 적용하고 정규화 과정을 거치면 거의 완벽한 릴레이션 스키마를 얻을 수 있다.
[릴레이션 스키마 변환 규칙]
1. 모든 개체는 릴레이션으로 변환한다.
E-R 다이어그램의 각 개체를 하나의 릴레이션으로 변환한다. 개체의 이름을 릴레이션의 이름으로 하고, 개체가 가진 속성도 릴레이션 속성으로 그대로 변환한다. 개체가 가지고 있는 키 속성은 릴레이션의 기본키로 변환한다.
복합 속성을 가지고 있는 E-R 다이어그램의 경우 복합 속성의 주 속성을 제외한 속성을 고객 릴레이션에 포함한다.
2. 다대다 n :m 관계는 릴레이션으로 변환한다.
다대다 n :m 관계는 릴레이션으로 변환할 때, 관계의 이름을 릴레이션 이름 그대로 사용하고 속성도 그대로 사용한다. 그리고 다른 두 개체가 맺고있는 관계의 기본키를 가져와 외래키로 지정한다.
3.1 일대다 1 :n 관계는 외래키로 표현한다.
일대다 1 :n 관계는 릴레이션으로 변환하지 않고 외래키로만 표현한다. 1측 개체에 해당하는 릴레이션의 기본키를 n측 개체의 외래키로 지정하여 포함시킨다.
3.2 일대다 1 :n 관계에서 약한 개체가 참여하는경우 1측 개체의 기본키를 외래키로 포함하여 기본키로 지정한다.
비행기와 좌석을 예로들어 좌석은 비행기가 있어야만 존제하는 약한개체이므로 비행기의 기본키인 비행기번호를 외래키로 포함하고 좌석 개체의 기본키인 좌석번호화 묶어 기본키로 사용한다.
4. 일대일 1 :1 관계는 외래키로 표현한다.
- 일반적인 일대일 관계는 외래키를 서로 주고받는다.
- 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다.
[ 관계에 선택적으로 참여하는 개체는 구축된 후에 외래키에 널 값이 저장되는 경우가 많기 때문에 ] - 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합친다.
[ 두 개체의 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정한다 ]
5. 다중 값 속성은 릴레이션으로 변환한다.
다중값을 가지는 속성은 따로 마스터 데이터의 기본키값을 외래키로 지정하여 릴레이션으로 변환한다. [ 중복제거 ]
[ 4단계 : 물리적 설계 ]
물리적 설계 단계에서 논리적 설계 단계에서 생성된 논리적 구조를 기반으로 [ 릴레이션 스키마 ] 물리적 구조를 설계한다. DB의 물리적 구조는 DB를 저장 장치에 실제로 저장하기 위한 내부 저장 구조와 접근 경로 등을 의미한다. 그러므로 물리적 설계 단계에서는 저장 장치에 적합한 저장 레코드와 인덱스의 구조 등을 설계하고, 저장된 데이터와 인덱스에 빠르게 접근할 수 있는 탐색 기법등을 정의한다.
물리적 설계 단계에서는 응답 시간을 최소화하고 저장 공간을 효율적으로 활용하면서 DBMS의 처리 능력을 향상시킬 수 있도록 물리적 구조를 설계해야한다.
[ 5단계 : 구현 ]
DB구현 단계에서는 이전 설계 단계의 결과물을 기반으로 DBMS에서 SQL로 작성한 명령문을 실행하여 DB를 실제로 생성한다. 이때 사용되는 SQL 문은 테이블이나 인덱스 등을 생성할 때 사용되는 데이터 정의어 [ DDL ] 이다.
< 요약 >
단계 | 목적 | 과정 | 결과 |
1단계 | 요구 사항 분석 | DB의 용도 파악 | 요구 사항 명세서 |
2단계 | 개념적 설계 | DBMS에 독립적인 개념적 구조 설계 | 개념적 스키마 (E-R 다이어그램) |
3단계 | 논리적 설계 | DBMS에 적합한 논리적 구조 설계 | 논리적 스키마(릴레이션 스키마) |
4단계 | 물리적 설계 | DBMS로 구현 가능한 물리적 구조 설계 | 물리적 스키마 |
5단계 | 구현 | SQL 문을 작성한 후 이를 DBMS에서 실행하여 DB 생성 | DB생성 |
요구 사항 분석, 개념적 설계, 논리적 설계 이 3단계가 DB설계의 핵심 과정이다.
'전공수업 > 데이터베이스 [DB]' 카테고리의 다른 글
제 10장] 회복과 병행 제어 (0) | 2019.11.19 |
---|---|
제 9장 ] 정규화 (0) | 2019.11.11 |
제 7장 ] DB언어 SQL (0) | 2019.10.19 |
ORACLE 오류 ] ORA - 12505 (0) | 2019.10.17 |
제 6장] 관계 데이터 연산 (0) | 2019.10.17 |