본 포스팅은 부산대학교 정보컴퓨터공학과 이기준 교수님의 수업을 참고하였습니다.
Database 란?
데이터베이스는 실세계에 있는 어떠한 정보를 컴퓨터 속으로 집어넣는 것이다.
따라서 그런 정보들을 formal하게 modeling하는 것이 중요하다.
(formal 하다는 것은? 수식으로 표현이 될 수도 있고, diagram 이나 algebra로 표현이 될 수 있다.)
Database가 Real World 에서 Computer World 로 변환되는 과정은 다음과 같다.
1. 실세계를 정확하게 이해하고 이를 modeling 한다.
2. 구현한다.(design and modeling)
그 후, Computer World로 변환된 database를
3. 적용하여 활용하고 관리한다. (Application and Management)
Comparison with software Lifecycle
데이터베이스를 소프트웨어의 주기랑 비교해서 살펴보자.
어떠한 문제를 해결하기위해 요구분석을 하는 과정은 소프트웨어와 데이터베이스에서 같다.
데이터베이스 또한 결국 실세계의 문제를 해결하기 위함이기 때문이다.
SW에서는 그 요구분석에 따른 필요한 기능들을 명세하는데, DB에서는 요구분석에 따라 Modeling을 한다.
SW에서 design 하는 것과 마찬가지로 DB에서도 Schema를 design 하는데 여기서 schema란 database의 골격 즉 framework를 의미한다.
이외 SW와 다른 점으로는 DB는 데이터를 수집하고, Quality control을 하며,
마지막 Managament and Retrieval은 DB를 관리하는 것 뿐만 아니라 DB에서 검색을 하는 등의 과정을 포함한다.
What to study
이번 한학기동안 위의 그림과 같이
3개의 Part와 추가적으로 1개의 part를 더해 4개의 파트를 배우게 된다.
Part1에서 먼저 어떻게 formal 하게 세상을 이해하고 이를 modeling 할 것인가에 대해서 배우고,
그 후 시간의 역순으로 (E-R 모델이 먼저 나옴) Data Model의 종류를 살펴본다.
그 후 Part 2 에서는 Schema Design을 배우게 되는데 결국 Relational 한 데이터 표현이 기반이 되어 데이터베이스가 발전해왔기 때문에 Relation Database Schema Design에 대해 주로 배우게 된다.
물론 필요에 따라 Relation Database에 객체지향 기능을 추가할 수 있다.
Part3 는 실제 DB 에서 사용하는 언어인 SQL에 대해서 배우고
Part4 에서는 XML이라는 Semi-Structure Data Model에 대해 배우게 된다.
Database를 바라보는 두가지 관점
DB를 바라보는 관점에는 두가지가 있다.
첫번째는 논리적 혹은 conceptual 하게 바라보는 것이고,
두번째는 물리적 즉 physical 하게 바라보는 것이다.
먼저, physical 하게 database를 바라본다는 것은 어떤 의미일까.
DBMS(DataBase Management System)을 어떻게 구현하고, 파일 시스템을 어떻게 구축하고, 어떻게 빠르게 검색을 하고 등등 physical 한 관점으로 데이터베이스를 바라보는 것이다.
즉, database를 implementation 하는 것이 이에 해당한다.
Conceptual 하게 database를 바라본다는 것은 말 그대로 어떻게 특정 information을 이해하고 표현할 것인가 하는 것이다.
즉, Data를 modeling 하는 과정이라 할 수 있다.
conceptual 과 physical 사이에서 independece가 둘을 구분해주고 있다.
즉, conceptual한 과정을 함에 있어서는 physical representation이 어떻게 이루어지는지 전혀 고려하지 않아도 된다는 것이고, 반대로 physical의 입장에서는 logical한 측면을 전혀 고려하지 않고 각각이 자신의 역할만을 하면 되는 독립성을 가진다는 의미이다.
Application은, 만약 우리가 구축해놓은 데이터베이스가 굉장히 포괄적으로 되어있다고 하더라도 우리는 그 중 원하는 정보만을 골라서 사용할 수 있다.
즉, database를 어떻게 application을 하는지는 그때그때 적용마다 다르다.
Application, Logical, Physical 의 3층의 Schema를 합쳐 Three Levels Schema of Databases(or Three Layers)라고 한다.
Application의 경우 external level schema라 하고 나머지 두 개는 자신의 이름을 그대로 가져다 쓴다.
Discussion
데이터베이스 수업을 그냥 문법이나 DBMS를 배우는 수업이라 생각했는데, 나는 physical한 부분만을 생각했던 것 같다.
실제로 어떻게 실세계의 문제를 잘 modeling 하느냐가 database 설계자로서의 덕목이 아닐까 생각한다.
나아가 계속 db 수업을 들으면서 이런 큰 틀을 생각하면서 공부를 해나가면 좋을 것 같다.
//문제제기 및 피드백 언제든지 감사히 받겠습니다.