데이터베이스의 설계 단계는 아래와 같다
요구 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현
대부분은 이 단계가 구체적으로 뭘 하는 단계인지 모르고 단순암기 하는 경우가 많다. 학교나 회사에서 실제로 여러번 데이터 베이스 설계를 해봤음에도 개념 스키마 설계, 트랜젝션 모델링, 물리적 구조로 변환 등의 용어가 너무 와닿지 않기 때문이다.
이론적으로 먼저 알아보자
요구분석 : 요구조건 명세서 작성
개념석 설계 : 개념 스키마, 트렌젝션 모델링, E-R 모델 작성
논리적 설계 : 스키마 설계, 트렌젝션 인터페이스 설계, 논리적 자료 구조로 변환
물리적 설계 : 논리적으로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 구조의 데이터로 변환
무슨 말인지 알아듣기 힘들다. 좀 더 실무적으로 이해해 보자
요구조건 분석
"학사정보 시스템 DB를 만들고 싶어요!" "그럼 학생들 기본 정보, 성적, 수강 정보 등을 관리 할 수 있어야 하겠네. 수강 신청도 가능해야 하고 지도교수와의 관계도 명시할 필요가 있겠군. 그럼 학생, 교수, 학과, 과목, 수업등에 대한 테이블 설계가 필요 하겠네"
이런식으로 어떤 용도로 데이터베이스를 만드는가? 에 대해서 논의 하는 것이 요구조건 분석 단계이다.
개념적 설계
대략적인 ER-다이어그램을 그리는 단계라고 생각하면 된다. 엔티티와 관계정도만 표현되면 된다. 학생은 교수와 수강, 강의관계가 있을수도 있고, 지도교수, 지도학생 관계에 있을수도 있다.(DBMS독립적인 개념 스키마 설계) 학생에겐 무조건 지도교수가 있어야 한다고 하면 학생 생성 -> 지도교수 배정이 하나의 트렌젝션이 되어야 할 수도 있다. 이런 관계를 연습장에 러프하게 구성하는 단계라고 볼 수 있다.
논리적 설계
엔티티와 관계 정도만 그려진 ER-다이어그램에서 엔티티를 테이블로 구체화 한다. 학생이란 테이블엔 어떤 Attribute가 있어야 하고, 학생과 교수의 수강관계를 별도의 Relation 테이블로 구성할지를 논의한다.(DBMS에 종송적인 논리적 스키마를 설계) 어떤 테이블에 어떤 값이 Manipulation(삽입, 갱신, 삭제) 될때 또 다른 테이블 또한 같이 Manipulation되어야 하는지를 명확히 설계한다.(트렌젝션 인터페이스 설계)
여기서 부터 계층형 DBMS인지, 관계형 DBMS인지에 따라 하는 일이 바뀌고, 이 모두를 포괄된 표현을 쓰기 때문에 말이 어려운 것인데, 다른 포스팅에서 말했듯이 우리가 사용하는 거의 대부분의 DBMS는 관계형이다. 따라서 테이블을 설계하고 관계를 정립하는 단계라고 생각해버리면 이해하기 편하다.
물리적 설계
앞단계에서 설계했던 테이블의 Attribute의 데이터 타입까지 결정한다. 재적상태를 true/false만 있는 boolean으로 구성할 것인가, Y=재적/N=제적/H=휴학/J=정학 등을 표현할 수 있는 CHAR(1)로 표현할 것인가, 1~255가지의 세부적인 상태를 표현할 수 있도록 TINY INT 형태로 할것인가를 정해야 한다. 그리고 많은 에트리뷰트들 중에서 뭘 인덱스로 할지 정한다. 어떤 형태의 조회 및 갱신이 많이 일어날지 고려를 해야 결정할수 있는 부분이다.
결국 이정도면 테이블의 모양이 다 나온것이다. 이제 DBMS에 DDL로 CREATE문을 던지기만 하면 될 정도로 설계를 마치는게 물리적 설계이다. 이까지 됐으면 더불어 트랜젝션 또한 실제로 작성을 한다. Auto Commit을 할 것인지, 수동으로 몇몇 과정이 완료 된 후 Commit을 Manual하게 할것인지 결정하고 이에 대한 개발이 이루어진다.
구현
앞서 다 설계된 데이터베이스를 SQL문으로 만들어서 DBMS에 던진다. 실제 그림으로만 있던 스키마를 실제 데이터베이스로 만들어 내는것이다. 하지만 앞선 논리적 설계, 물리적 설계 단계 중에서도 DDL을 적당히 던져가며 DBMS에 실제로 구조가 준완성되어 있더라도 이상한건 아니다. 요즘은 실제로 테이블을 대략적으로 만들고 코딩을 해 가면서 설계를 점점 구체화 해 가는 경우도 많기 때문이다. 하지만 이론적으론, 구현 단계에서 실제 데이터베이스가 만들어 진다고 알고 있으면 된다.
'IT 이론 > 데이터베이스' 카테고리의 다른 글
데이터베이스 병행제어 기법 정리 (1) | 2019.12.07 |
---|---|
전위 순회(Preorder), 후위 순회(Postorder), 중위 순회(Inorder) (0) | 2016.10.01 |
[시험대비] 데이터베이스 모델의 종류와 특징을 쉽게 이해하자! (1) | 2015.10.17 |
SQL에서 DDL, DML, DCL, TCL의 구분 (0) | 2015.10.16 |
[시험대비] 외부 스키마, 개념 스키마, 내부 스키마를 구분하자! (0) | 2015.10.16 |
댓글