데이터베이스 사용 목적 및 3level 데이터베이스 구조(정리1)

2 minute read

Q1. 데이터베이스를 쓰는 이유? 기존 데이터를 파일로 저장하고 관리하는 것에 비교하여 데이터베이스가 갖고 있는 장점은?

A.

  1. 데이터 중복(data redundancy)을 피할 수 있다. 응용 프로그램별로 파일을 유지하면 같은 데이터가 여러 파일에 저장될 수 있다. 예를 들어, 목적이 다른 경우 동일한 데이터가 포함된 엑셀파일을 여러가지 버전으로 갖고 있어야 한다.

  2. 데이터를 응용 프로그램에 독립적으로 관리할 수 있다. 데이터베이스를 사용하면 응용 프로그램이 직접 파일에 접근하여 데이터를 처리할 필요가 없이 데이터를 관리하고 활용할 수 있다.(data independence) 반대로 파일시스템으로 데이터를 관리하면 응용 프로그램에 의해 데이터 구조와 접근이 달라지기 때문에 프로그램별 데이터 구조가 달라질 수 있다.(data dependence)

  3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 가능하다.
  4. 데이터 관리를 DBMS에서 해주기 때문에 응용 프로그램에서 데이터의 CRUD 기능을 별도로 개발할 필요가 없다.

Q2. 왜 데이터베이스를 3단계 구조로 설계하는가?

A.

  • 미국의 표준화 기관인 ANSI/SPARC에서는 데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해하고 사용할 수 있도록 3단계 데이터베이스를 제안했다. 3단계 구조는 개별 사용자 관점에서 바라보는 외부단계(external level), 조직 전체의 관점에서 바라보는 개념 단계(conceptual level), 물리적인 장치의 관점에서 바라보는 내부단계(internal level)로 나눈다. 데이터베이스를 3개의 독립된 구조로 나누고, 각 층의 구조를 연결(mapping)하여서 어떤 LEVEL에서 변경사항이 있다고 하더라도 다른 LEVEL에서 큰 변화없이 데이터 독립성을 유지할 수 있다. **데이터 독립성은 하위 스티마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성이다. ** 3단계 구조를 통해 2가지 데이터 독립성을 확보할 수 있다. 첫째, 논리적 데이터 독립성이다. 논리적 데이터 독립성은 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다. 전체 데이터베이스의 논리적 구조가 변경되어도 관련된 외부/개념 사상(mapping) 정보만 적절히 수정해주면 외부 스키마를 따로 변경할 필요가 없다. 두번째, 물리적 데이터 독립성이다. 물리적 데이터 독립성은 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다. 그래서 결과적으로 외부 스키마도 영향을 받지 않는다.

Imgur 출처 : 데이터베이스 개론(한빛아카데미, 김연희 지음)

Q3. 데이터베이스에서 데이터 사전은 무엇인가?

  • 데이터베이스에서는 실제 데이터를 저장하는 것 외에 저장된 데이터를 올바르게 관리하기 위한 데이터의 구조와 연결(mapping)에 대한 부가정보가 필요하다. 스키마 정보와 사상정보가 저장되는 데이터베이스 공간을 데이터 사전 또는 시스템 카탈로그라고 한다.

Imgur

출처 : 데이터베이스 개론(한빛아카데미, 김연희 지음)

데이터베이스를 공부하면서 느낀점

최근 공학적 문제해결방식에 대한 생각을 하게 되었다. 소프트웨어 공학에서는 복잡한 메커니즘과 기능을 수행하기 위해 철저히 각 모듈의 독립성을 지향한다. 자동차를 운전할 때, 핸들이나 브레이크, 엑셀의 작동원리를 이해하지 않아도 해당 기능의 Input, Output 만 파악하면 자동차를 운전하는데 문제가 없다. 또한 엔진의 내부 구조를 몰라도, 엔진의 Input, Output를 파악하여 문제가 있는 부분을 파악하고 수리하거나 쉽게 수리가 안되면 새로운 엔진으로 교체하여 문제를 해결할 수도 있다. 우리가 응용프로그램을 작동하는 것도 자세히 살펴보면 데이터베이스 구조와 유사하게, 응용프로그램이 운영체제에게 요청하고, 운영체제는 프로세스를 생성하여 하드웨어를 커널모드로 작동을 시킨다. 그리고 응용프로그램, 운영체제, 하드웨어가 서로 영향을 미치지만 3가지 모두 철저히 독립성을 유지한다. 소프트웨어를 개발할 때도 철저히 내부의 복잡한 기능을 하나의 단순한 부품처럼 모듈로 취급하고 블랙박스 형태로 단순화하고 구지 내부를 건드리지 않게끔 리팩토링하여 정리하는 것을 추구한다. 더 복잡한 기능을 위해 기존에 구현된 기능을 최대한 단순화하여 독립적인 부품처럼 취급하는데, 이런 방식이 소프트웨어 공학에서 기본적인 문제해결 접근인거 같다.



Leave a comment