설계에 관해서 단계적으로 알아보자.
데이터베이스 설계의 뜻은 무엇일까?
현실 세계의 정보를 컴퓨터의 데이터 체계로 변환하기 위한 모델링 과정 중 하나이다.
현실의 엔티티를 요구 사항 분석 단계를 거쳐 컴퓨터에 이식한다.
데이터베이스 설계 과정에서 우리는 앞서 배운 테이블, 뷰 등의 구조로 디자인 + Key를 이용해 컴퓨터가 잘 처리할 수 있게 만든다.
-> 어떠한 필드로 구성된 테이블을 어떠한 물리적 형태의 데이터베이스로 구성할 것인가를 결정
위의 그림을 조금 더 세분화 하자면
4가지로 나눌 수 있다.
1. 요구사항 분석
DB 사용환경 분석 후 대상 및 제한 조건을 도출한다. (사용환경이란 현재 시스템의 운영상태와 사용자의 요구사항을 말한다)
-> 요구 조건 명세서와 같은 것들을 작성 (소프트웨어 공학에서 배운다)
2. 개념적 설계
분석 결과를 추상화 된 표현 방식으로 기술해 개념적 스키마를 생성한다.
-> 트랜잭션 모델링, E-R 모델 등 만들어냄
3. 논리적 설계
논리적 데이터베이스 구조에 맞는 스키마를 고안 논리적 스키마를 생성한다.
-> 목표, 조건에 맞는 DBMS 에 맞춰서 설계
4. 물리적 설계
실제로 컴퓨터에 저장되는 방식을 설계한다. (여기서 전 단계의 논리적 설계 산출물 이용)
->특정 DBMS의 DLL로 데이터베이슷 생성
**마지막은 구현
각각에 대해서 조금 더 자세히 설명해보겠다.
요구 사항 분석
고객 또는 자신이 원하는 것이 무엇인지 정확하게 분석하기 위해서 이 단계를 실행한다.
요구 사항을 수집해 시스템 개발의 목표와 방향성을 기준으로 현재 시스템의 운영상태를 분석한다.
** 개인적으로 이 단계가 제일 중요하다고 생각한다. 여기서 실제 구현의 질이 결정된다고 말할 수 있다.
++ 이 단계를 위해서는 관련 분야의 기본적인 지식,상식을 가지고 문서화를 통해 담당자들과 의사소통을 한다.
개념적 설계
사용자의 요구사항 분석 후, 컴퓨터에 표현 방식보다는 추상적인 형태로 설계 + 요구사항 명세서 이용
-> 사용자의 이해성 고려
그 이후 개념적 모델을 이용해 개념적 스키마 생성
++(ERM, Entity Relationship Model)과 같은 모델
개념적 스키마는 데이터베이스에 대한 추상적인 설계도를 말하는 것으로
ERD, Entity Relationship Diagram으로 표현한다.
-개체관계 모델의 표현 수단
-ER 스키마라고도 함.
논리적 설계
논리적 모델을 이용하여 논리적 스키마를 생성하는 것이다. 즉, ERD를 이용하여 데이터베이스 스키마를 설계한다.
논리적 모델이란 관계형 데이터 모델을 말한다.
++ DBMS 종류에 따라 네트워크 데이터 모델, 계층 데이터 모델 등도 있다. (하지만 관계형이 제일 많이 사용된다)
논리적 스키마란 테이블 구조도와 같은 것으로 개념적 설계 단계에서 생성된 ERD를 바탕으로 생성되는 테이블이다.
물리적 설계
특정 DBMS가 제공하는 물리적 구조에 따라 테이블 저장 구조를 설계하는 것을 말한다.
여기서 테이블 저장 구조란?
-> 필드의 데이터 타입, 인덱스 지정 여부, 물리적 스키마를 말함
단순한 물리적 설계과정이다.
논리적 설계 단계에서 생성된 테이블 구조도에 따라 SQL 구문으로 각각의 테이블을 생성한다.
**인덱스 설정 여부, 기본키, 외래키 설정은 추가적 고려사항이다.
*** 물리적 설계 시 응답시간, 저장 공간 효율적 사용, 트랙잭션 처리능력들을 고려하는 것을 필수다.
우리가 말한 것들을 요약하자면
모든 설계과정시 고려할 사항이 4가지가 있다.
1. 충실성(faithfulness)
-> 필요한 모든 데이터가 존재해야함
2. 단순성(simplicity)
-> 단순하고 이해하기 쉬워야 다른 사람도 이용가능
3. 중복의 최소화(redundancy minimization)
-> 중복을 최소화하는 것이 데이터 일관성과 저장공간 효율성을 높여준다.
4. 제약조건 표현
-> 데이터가 갖추어야 할 조건을 표현해야 신뢰도 높은 DB가 된다.
이후에는 각각 설계에 대해서 더 자세히 알아보겠다.
우선 개념적 설계부터
'컴퓨터(Computer Science) > 데이터베이스, DB, DataBase' 카테고리의 다른 글
데이터베이스의 논리적 설계~최종 테이블 스키마 (0) | 2020.12.13 |
---|---|
데이터베이스의 개념적설계(Conceptual Design) (5) | 2020.12.13 |
SQL(Structured Query Language) + 보충내용(NULL처리, 중첩질의, 뷰(VIEW)) (0) | 2020.12.12 |
SQL(Structured Query Language)이란? (0) | 2020.12.12 |
관계형 데이터베이스, Relation Database 란? (0) | 2020.12.11 |