데이터베이스와 DBMS의 기본적인 소개 및 특징

 

 


데이터베이스(DB)
는 논리적으로 일관된 관련 데이터들의 모음을 말한다.

이것은 사용자가 데이터베이스를 쉽게 생성하고 유지할 수 있도록 데이터베이스 관리 시스템(DBMS)에 의해 관리되고,

DBMS를 이용하여 데이터베이스를 정의, 구축, 조작, 공유할 수 있다.

 

 

 

 

 

 

데이터베이스의 특징

 

  • 자기 기술적인 특성(Self-describing nature)
  • 프로그램과 데이터 간의 독립성 및 데이터 추상화
  • 다중 데이터 뷰 지원
  • 데이터 공유 및 다중 사용자 트랜잭션 처리

 

 

 

 

 

자기 기술적인 특징

데이터베이스 시스템은 데이터베이스 자체뿐만 아니라 구조를 설명하는 메타데이터도 포함하고 있다. 이를 통해 데이터 베이스를 유지하고 관리할 수 있다.

  • 메타데이터: 데이터베이스 구조와 제약 조건을 정의하는 정보로, 데이터베이스를 유지하는 데 필요하다.
  • 메타데이터는 DBMS 카탈로그에 저장된다.

 

 

 

 

 

프로그램과 데이터 간의 독립성 및 데이터 추상화

  • 데이터 구조가 변경되더라도 프로그램에 영향을 미치지 않는 프로그램-데이터 독립성을 제공한다. 이는 데이터베이스의 자기 기술적인 특성 덕분에 가능하다.
  • 데이터 추상화: DBMS는 데이터를 논리적 개념(예: 객체, 속성, 상호 관계)으로 표현할 수 있는 기능을 제공한다.
    • 데이터가 어떻게 저장되는지, 접근 경로나 저장 방식 등의 물리적 세부사항을 포함하지 않는다.
    • 추상화 덕분에 사용자나 개발자는 물리적 세부사항 대신 데이터의 논리적 구조만 이해하면 된다.

 

 

 

 

 

다중 데이터 뷰 지원

  • 서로 다른 사용자는 동일한 데이터베이스에 대해 다양한 뷰(View)를 필요로 할 수 있다.
  • 뷰(View)는 데이터베이스로부터 파생된 가상 데이터로, 실제로 데이터베이스에 저장되지 않고 동적으로 생성된다.
  • 사용자는 데이터가 저장된 것인지 파생된 것인지 알 필요 없이 요구에 맞는 뷰를 사용할 수 있다.

 

 

 

 

 

데이터 공유 및 다중 사용자 트랜잭션 처리

  • 데이터베이스는 여러 사용자가 동시에 접근할 수 있도록 해야 하며, 다양한 애플리케이션의 데이터를 통합 관리할 수 있어야 한다.
  • 동시성 제어 소프트웨어는 다중 사용자가 동시에 데이터베이스에 접근할 때 데이터의 일관성을 보장하는 역할을 한다.
    • 예시: 항공 예약 시스템에서는 다수의 사용자가 동시에 예약을 하더라도 데이터 충돌을 방지해야 한다.

 

즉, 여러 사용자가 안전하게 데이터를 공유하고 다룰 수 있도록 동시성 제어를 통해 데이터 일관성을 유지해야 한다.

 

 

 

더보기

대규모 조직에서는 데이터베이스를 설계, 사용, 유지 보수하는 데 다양한 사람들이 관여하게 된다.

아래에 소개할 주요 사용자(Actor)들은 데이터베이스를 다양한 방식으로 활용하는 역할을 수행한다.

 

  • 데이터베이스 관리자(DBA):
    • 데이터베이스 접근 권한 부여, 시스템 리소스 관리 및 모니터링을 담당한다.
  • 데이터베이스 설계자:
    • 데이터베이스에 저장될 데이터를 정의하고, 데이터베이스 구조를 설계하며, 사용자 요구 사항을 반영해 최적의 디자인을 만든다.
  • 소프트웨어 엔지니어(개발자):
    • 시스템 분석가: 사용자 요구를 분석하고 표준 트랜잭션 사양을 정의한다.
    • 애플리케이션 프로그래머: 사양을 바탕으로 프로그램을 구현하고, 테스트, 디버깅, 유지 보수를 수행한다.

 

 

 

주요 사용자가 아닌, 일반 사용자(End Users)는 데이터베이스에 접근하여 작업을 수행하는 사람들로 나뉜다.

 

  • 일반 사용자(Casual End Users): 데이터베이스를 가끔 사용하며, 다양한 정보에 접근한다.
  • 단순 사용자(Naïve End Users): 표준화된 쿼리나 업데이트를 주로 사용하며, 은행 직원이나 항공 예약 직원 등이 이에 해당한다.
  • 숙련된 사용자(Sophisticated End Users): 복잡한 요구 사항을 해결하기 위해 DBMS 기능을 직접 사용한다.
  • 독립 사용자(Standalone Users): 금융 소프트웨어와 같은 프로그램을 사용해 개인 데이터베이스를 관리하는 사용자.

 

간단하게, 일반 사용자는 데이터베이스 사용 빈도와 복잡성에 따라 다양한 유형으로 나뉘며, 각 유형마다 데이터베이스 접근 방식이 다르다.

 

 

 

배후 작업자는 데이터베이스의 설계, 개발, 운영에 관여하지만, 데이터의 내용 자체에는 관심이 없는 사람들을 말한다.

 

  • DBMS 시스템 설계자 및 구현자: DBMS의 다양한 모듈(예: 쿼리 처리, 인터페이스, 데이터 접근, 동시성 제어 등)을 설계하고 구현한다.
  • 도구 개발자: 데이터베이스 모델링, 설계, 시스템 성능 모니터링 등을 돕는 소프트웨어 도구를 설계하고 개발한다.
  • 운영 및 유지보수 인력: 하드웨어 및 소프트웨어 환경을 관리하고 유지한다.

 

주로 DBMS의 설계와 개발, 운영을 지원하며, 시스템의 기술적 부분을 관리한다.

 

 

 

DBMS 시스템 설계자 및 구현자

DBMS는 다양한 모듈로 구성되는데, 각각의 모듈을 설계하고 구현하는 역할을 한다.

ex) 쿼리 언어 처리, 인터페이스 처리, 데이터 접근 및 버퍼링, 동시성 제어, 데이터 복구 처리 등.

 

 

  • 도구 개발자:
    • 데이터베이스 접근을 용이하게 하는 도구를 설계하고 구현한다.
    • 예시: 데이터베이스 모델링, 성능 모니터링, 시뮬레이션 등을 위한 소프트웨어 패키지.
  • 운영 및 유지보수 인력:
    • 데이터베이스 시스템의 하드웨어와 소프트웨어 환경을 관리하고 유지하는 역할을 한다.

 

 

 

 

 

 

DBMS의 주요 기능

 

DBMS가 제공해야 하는 주요 기능들

  1. 중복 제어 (Controlling Redundancy)
  2. 무단 접근 제한 (Restricting Unauthorized Access)
  3. 다양한 사용자 인터페이스 제공 (Providing Multiple User Interfaces)
  4. 무결성 제약 조건 적용 (Enforcing Integrity Constraints)
  5. 백업 및 복구 제공 (Providing Backup and Recovery)

 

 

 

 

 

중복 제어

 

동일한 데이터를 여러 위치에 여러 번 저장하면 저장 공간 낭비 및 데이터 불일치가 발생할 수 있다.

따라서, DBMS는 데이터 일관성을 유지하고 중복을 방지하기 위한 기능을 제공해야 한다.

 

 

위 상황을 해결하는 방법으로

학생(Student) 정보를 별도의 테이블로 분리하여 학생번호(Student_number)와 학생 이름(Student_name)을 한 번만 저장하고,

GRADE_REPORT 테이블에서는 Student_number만 외래키(Foreign Key)로 저장하여 참조하도록 설계한다.

 

 

 

 

 

 

무단 접근 제한

 

DBMS는 데이터의 무단 접근을 방지하기 위해 접근 권한 관리 기능을 제공하며, 각 사용자마다 다른 접근 권한을 부여한다.

예시: 재무 데이터(급여, 보너스 등)는 권한이 있는 사람만 접근 가능하거나
일부 사용자는 데이터 조회만 가능하고, 다른 사용자는 조회 및 수정이 모두 가능하도록 설정한다.

 

 

 

 

 

다양한 사용자 인터페이스 제공

 

데이터베이스는 다양한 기술 수준을 가진 여러 사용자들이 사용하므로, 다양한 유형의 사용자 인터페이스를 제공하여 접근성을 높인다.

  • 쿼리 언어 인터페이스: 애플리케이션 프로그래머를 위한 인터페이스.
  • 그래픽 사용자 인터페이스(GUI): 일반 사용자와 독립 사용자를 위한 메뉴 기반 인터페이스.

 

 

 

 

 

 

무결성 제약 조건 적용

 

무결성이란 데이터가 주어진 제약 조건을 만족해야 하는 특성이다.

DBMS는 이러한 무결성 제약 조건을 정의하고 이를 강제 적용할 수 있는 기능을 제공한다.

 

 

 

 

 

백업 및 복구

 

DBMS는 예상치 못한 장애가 발생할 때 데이터베이스를 복구할 수 있도록 백업과 복구 기능을 제공해야 한다.