DBA(데이터베이스 관리자)라면 반드시 알아야 할 데이터베이스 설계 절차에 대해 알아보자!
세부적으로 파고들면 설계과정에 대한 여러 얘기가 나올 수도 있지만
거의 국룰이라 할 수 있는 설계과정 4단계는 반드시 알아둬야 할 필요가 있다.

나는 이걸 줄여서 "요개논물"이라고 외웠다. 또 한 가지 덧붙이자면 물리적 설계 다음에 구현 단계가 있으나 이번 포스팅에서 다루지 않을 것 같아 생략하겠다. 그럼 이 국룰 4단계에 대해서 하나하나 알아보자. 제목과 같이 비즈니스 관점으로 접근해보고자 하여 인터넷 도서 쇼핑몰을 예로 들어서 진행해 보겠다.
잠깐! 읽기 전에 알아두면 좋은 짤막한 개념 잠시 소개하겠다.
스키마 : DB 내 저장된 데이터들의 제약조건, 논리적 구조를 바탕으로 정의한 것 을 말한다.
인스턴스 : 위 정의된 스키마의 조건에 따라 데이터베이스에 실제 저장된 데이터 값이다.
데이터베이스 설계 1단계. 요구사항 분석
실제 세계에서 DB의 사용환경, 조직 구성원들의 사용 용도 및 요구사항을 고려하여 어떻게 최적의 시스템을 구축할 건지에 대한 데이터베이스의 용도를 파악하는 것이다. 정확한 개념은 여러 환경에 따라 달라질 수 있다.
예를 들면, 비즈니스의 관점에서 보자면 고객관점에서의 기능적 요구사항을 추가하여 고객의 니즈를 충족시키기 위한 용도도 같이 고려될 수 있겠다.
요구사항 명세서 (예시)
①도서 인터넷 쇼핑몰에 가입하려면 아이디 비밀번호 이름 나이 직업을 반드시 기입하여야 한다.
②회원은 유일값인 회원 ID를 통해 구별되어야 하며, 그 말인즉슨 중복이 일어나면 안 된다.
③도서품목에 대한 정보는 도서번호, 도서명, 도서종류, 재고수량, 도서 등급으로 이 부분 들은 반드시 유지되어야 한다.
④도서품목의 유일값은 도서번호로 중복은 절대 허용될 수 없다.
⑤출판사 정보는 출판사명, 전화번호, 위치, 담당자 정보를 유지한다.
⑥출판사 정보의 기본값은 출판사명이다.
⑦게시판 정보는 글번호, 글제목, 전체내용, 작성일자 정보를 가진다.
⑧게시판 정보의 기본값은 글번호이다.
데이터베이스 설계 2단계. 개념적 설계
이전 단계에서 나온 데이터베이스에 대한 요구사항을 추상화하여 개념적 구조의 스키마로 표현하는 DB모델링의 핵심이라고 할 수 있다. 개념적 설계 시에 작업은 다음과 같이 수행된다! 여기서 가장 눈에 띄는 단어는 엔터티이다.

(1) 엔터티 도출에 도움이 될 관련 자료 및 요구사항 분석서 혹은 고객과의 인터뷰자료를 통해 엔터티 후보 선정
(2) 도출된 엔터티에 대한 서로의 관계, 관계명을 선정하고, 애트리뷰트를 식별한다.



(3) 완성된 개념적 ER 다이어드램을 작성하고 검증을 실시한다.
더불어 개념적 설계 단계에서 트랜잭션 모델링도 병행 수행하니 기억해 두자!
(트랜잭션에 대한 자세한 포스팅은 조만간 다룰 예정)
데이터베이스 설계 3단계. 논리적 설계
전 단계에서 생성된 개념적 구조를 DBMS가 지원하는 논리적 구조로 변환시키는 과정이라고 할 수 있다.
논리적 DB 구조에 맞는 일명 릴레이션 스키마와 더불어 상세 ERD를 작성하는 단계라고 이해하면 되겠다.
릴레이션 스키마의 원칙 중 중요한 몇 가지를 설명해 보겠다.
(1) 속성 안에 또 여러 속성으로 나뉘는 걸 복합속성이라고 한다. 이는 같은 속성으로 간주하여 일반 속성과 똑같이 릴레이션으로 변환한다.

(2) n 대 m 즉 다대다의 관계에서 회원번호, 도서번호와 같은 기본키를 관계 릴레이션에 포함시키고 외래키로 지정한다.

데이터베이스 설계 4단계. 물리적 설계
설계의 마지막 단계로 논리적인 구조화된 데이터를 특정 스토리지 장치에 저장할 수 있도록 물리적 구조의 데이터로 변환시키는 단계를 말한다. 저장 레코드 타입과 테이블 및 인덱스 타입을 설계하여 물리적 스키마 결과물을 만들어 내게 된다. 정규화에 반하는 반정규화도 역시 이 단계에서 고려된다.
이렇게 물리적 설계까지 완료되면 특정 데이터베이스 관리 시스템에 종속된다. 예시로는 모두에게 익숙한 ORACLE, DB2, SQL Server, Sybase 등이 있다.
'IT' 카테고리의 다른 글
[운영체제 OS] CPU 스케쥴링 기본 및 선점형 비선점형 알고 가기 (2) | 2023.07.18 |
---|---|
[운영체제 OS] 스레드(Thread) 개념과 멀티 쓰레드 간단히 이해하기 (0) | 2023.07.16 |
프로세스 개념 및 PCB, 문맥교환(Context Switching) 알아보기 (0) | 2023.07.13 |
데이터베이스 정규화 [ 1차, 2차, 3차, BNCF ] 알아보기 (0) | 2023.07.10 |
데이터베이스 입문 [개념 및 특징 구조 설명] (0) | 2023.07.04 |