본문 바로가기

Foundation

데이터 베이스 이론

정보 시스템이란?
 - 인간이 영위하는 실제 세계의 일부가 컴퓨터에 반영되어 처리되는 시스템
 - 사용되는 사례 : 기업 업무, 은행 업무, 대학 업무, 정부 업무, 판매 업무

정보 시스템에서 가장 중요한 요소 : 정보

 

정보 시스템에서 사용되는 정보
 - 어떤 경우라도 정확한 값을 유지해야 한다
 - 어떤 외부 침입자로부터도 안전하게 보호 받아야 한다.

 

 

파일 시스템의 문제점
 - 다수의 사용자가 사용하기 위해 데이터가 중복되며 이로 인해 데이터간에 불일치성이 ㅈ발생하게 된다.
 - 파일 분석이 필요할 때 마다 별도의 프로그램을 작성해야 한다.
 - 무결성을 보장할 수 없다.
 - 공유된 파일의 경우, 많은 사용자가 동시에 저장하면 마지막에 저장한 사람의 의도만 반영된다.
 - 데이터 파일의 복사나 참조가 손쉬워 핵심 정보가 유출되기 쉽고, 중복된 파일로 존재하기 때문에 파일을 유츌시킨 사람을 확인하기 힘들다.

 

데이터베이스 란?
 - 서로 연관된 정보의 중복을 최소화하여 한 곳에 모아 저장함으로써 다수의 사용자로 하여금 필요한 정보를 효과적으로 공유하도록 한 정보의 집합체
 - 특정 조직의 응용 업무에 공동 사용하기 위하여 모아놓은 운영 및 전략 수집에 필요한 영속적 데이터의 집합체

특징 : 운영 데이터, 의사결정 데이터, 통합 데이터, 저장 데이터, 공유 데이터      


단계별 구조
 1. 외부 단계: 특정 사용자 관점의 일부 데이터베이스를 논리적 구조로 기술한 단계
 2. 개념 단계: 조직 전체 또는 관리자 관점의 전체 데이터베이스를 논리적구조로 기술한 단계
 3. 내부 단계: 전체 데이터베이스의 물리적 저장 구조에 대해 기술된 단계

 

데이터베이스 시스템의 외부 단계(external level)
 - 사용자가 보는 관점에서의 데이터베이스의 논리적 구조
 - 전체 데이터베이스 중 사용자에게 보여지는 데이터베이스의 일부분
 - 외부 스키마 (external schema): 외부 단계에서 정의된 논리적 구조, 부스키마, 뷰

 

데이터베이스 시스템의 개념 단계
 - 전체 조직이나 데이터베이스 관리자가 보는 관점에서의 데이터베이스의 논리적 구조
 - 개념 스키마 (conceptual schema) :
  - 개념 단계에서 정의된 논리적 구조
  - 일반적으로 스키마라고 하면 개념 스키마를 의미함
  - 전체 데이터베이스에 대한 논리적 구조를 포함한다.
  - 전체 데이터베이스의 대상 개체에 대한 속성, 데이터 형식, 제약조건, 사용자 연산 등과 개체들 간의 관계가 기술 된다.
  - 대상 개체들에 대한 데이터의 저장 구조, 실제 위치, 접근 방법 등과 같은 물리적인 명세는 포함하지 않는다.

 

데이터베이스 시스템의 내부 단계
 - 데이터베이스에 대하여 물리적인 저장과 가장 깊은 연관을 갖고 있는 단계
 - 실제로 데이터가 저장된 방삭의 표현
 - 내부 스키마, 저장 스키마
 - 전체 데이터베이스 중 하위 단계를 표현하는 것으로 다양한 형태의 내부 레코드로 구성됨

 

데이터베이스 시스템의 인터페이스(interface)
 - 응용 인터페이스 : 특정 외부 단계와 개념 단계 사이의 사상(mapping)을 위한 인터페이스
 - 저장 인터페이스 : 개념 단계와 내부 단계 간의 사상을 위한 인터페이스
 - 장치 인터페이스 : 내부 단계와 저장 장치 간의 사상을 위한 인터페이스

 

데이터베이스 시스템의 구성
1)데이터 베이스
 - 컴퓨터의 저장 장치에 저장된 정보의 집합체
 - 조직의 다수 사용자에게 운영과 의사결정에 필요한 업무를 지원
 - 규모: 소규모 개인용 컴퓨터에서 운영되는 데이터베이스 ~ 슈퍼 컴퓨터에서 운영되는 데이터베이스
 - 사용자 데이터베이스 vs 시스템 데이터베이스
  => 사용자 데이터베이스(저장 데이터베이스) : 조직의 운영 또는 의사 결정에 필요한 정보를 운영할 목적으로 만들어진 데이터베이스
  => 시스템 데이터베이스(메타 데이터베이스) : 시스템 운영을 위해 시스템이 내부적으로 필요로 하는 다양한 정보를 보관할 목적으로 만들어진 데이터베이스
 - 통상 데이터베이스라고 하면 이 두개의 데이터베이스를 모두 포함한 의미로 사용된다.

 

2) 하드웨어
 - 입력, 출력, 저장, 제어 기능을 통해 데이터베이스를 저장 장치에 저장하고 데이터베이스 관리 시스템을 주기억 장치에 적재하여 실행하는 역할을 수행한다.
 - 하드웨어는 데이터베이스에 대한 물리적 요구사항에 의해 결정된다.
 - 대표적 물리적 요구사항
  => 데이터베이스의 규모
  => 사용자 수에 대한 시간 제약
 - 하드웨어를 도입하기 전에 데이터베이스의 기본 규모와 증가 규모를 예측해야 한다.

 

3) 소프트웨어
 - 데이터베이스 관리 시스템
  => 데이터베이스 엔진 또는 데이터베이스 서버라고 불림
   => 사용자나 응용 프로그램의 데이터베이스에 대한 요구를 처리
 - 관리 도구 소프트웨어
  => 보통 데이터베이스 관리 시스템 패키지에 포함되지만 데이터베이스 엔진과는 분리되어 있는 소프트웨어
  => 주로 데이터베이스 관리자가 데이터베이스의 관리를 위해 사용
 - 데이터베이스 응용 프로그램
  => 조직의 응용 업무를 위해 개발자에 의해 작성된 응용 프로그램
  => 데이터베이스 관리 시스템과 연동하여 데이터베이스에 대한 요구를 처리

 

4) 사용자
 - 데이터베이스 시스템을 운영하는데 필요한 사용자들
 - 일반 사용자, 응용 프로그래머, 데이터베이스 설계자, 데이터베이스 관리자
 

데이터베이스 관리 시스템의 요구 처리 과정
 - 사용자는 질의어(query language)를 사용하여 데이터베이스로부터 필요한 정보를 요구한다.
 - DBMS는 사용자가 전송한 요구를 분석한다.
 - DBMS는 분석된 요구에 대한 최적화된 물리적 절차를 결정한다.
 - DBMS는 물리적 절차에 따라 필요한 연산을 수행하여 사용자에게 필요한 정보를 제공한다.

 

데이터베이스 관리 시스템의 주요 기능
 - 질의 처리, 스토리지 관리자와의 상호 통신, 무결성 유지, 보안 유지, 백업과 복구, 동시성 제어


데이터 언어
 - 데이터베이스 관리 시스템에 대한 언어 형식의 사용자 인터페이스
 - 데이터베이스 관리 시스템에서는 통상 데이터 언어(SQL)를 통해 사용자의 요구사항을 입력으로 받아들여 처리한다.

 

사용 용도에 따른 데이터 언어의 분류
1) 데이터 정의어 (DDL : Data Definition Language)
 - 사용자에게 필요한 데이터베이스 객체의 논리적 구조를 정의하는데 사용되는 언어
 - 데이터베이스 및 데이터베이스 객체에 대한 정의, 수정, 삭제 기능을 가지는 언어
 - 데이터 정의어로 정의된 데이터베이스 객체들은 질의 처리 과정을 거쳐 결과가 메타-데이터베이스에 저장된다.
 - 데이터베이스 시스템에 의해 사용되는 저장구조와 접근 방법은 데이터 정의어에 의해 정의된다.
 - 데이터 정의어는 데이터베이스 객체에 대한 정의 뿐만 아니라 수정하고 삭제하는 기능도 함께 포함된다.
 *메타-데이터베이스 :
  - 데이터 사전, 시스템 카탈로그
  - 데이터베이스 객체 대한 정의 내용을 보관하는 테이블들의 집합
  - 일반적으로 데이터베이스 관리 시스템에서 실제의 데이터가 읽혀지거나 수정되기 전에 데이터베이스 관리 시스템에 의해 참조되어 진다.

 

2) 데이터 조작어 (DML: Data Manipulation Language)
 - 데이터베이스에 저장된 데이터를 조작하기 위한 일련의 연산을 제공하는 언어
 - 데이터 조작의 의미(조작 연산)
  => 데이터베이스에 새로운 데이터를 삽입(insert)하는 연산
  => 데이터베이스에 저장된 데이터를 갱신(update)하는 연산
  => 데이터베이스에 저장된 데이터를 검색(select)하는 연산
  => 데이터베이스에 저장된 데이터를 삭제(delete)하는 연산
 - 질의어(query language) 
  => 데이터 조작어 중 데이터 검색을 요청하는 부분
  => 데이터베이스에 대한 요구를 질문의 형식으로 전달하고, 데이터베이스는 이에 응답한다는 의미
  => 통상 많은 경우에서 데이터 언어와 질의어란 용어를 혼용해서 사용하고 있다.


3) 데이터 제어어 (DCL : Data Control Language)
 - 데이터베이스에 저장된 데이터의 보안 및 권한을 제어하거나 일련의 질의에 대해 동시성 제어를 수행할 수 있도록 지원하는 언어
 - 데이터 정의어나 데이터 조작어에 속하지 않는 사용자 계정, 세션 관리, 로그인, 서버 관리 등 다양한 제어 기능을 담당하는 언어
 - 주로 정보 관리 목적으로 데이터베이스 관리자에 의해 사용된다.

 

데이터베이스 사용자의 역할에 따른 분류
 - 응용 프로그래머 : 프로그래밍 언어를 이용하여 조직의 응용 프로그램을 작성하는 사용자(개발자)
 - 데이터베이스 설계자 : 실 세계 응용 분야의 업무를 분석하여 논리적, 물리적 데이터 구조로 형식화하여 정의하는 사용자
 - 일반 사용자 : 조직 업무를 위해 데이터베이스 정보를 조작하는 최종 사용자, 응용 프로그램을 통해 접근 or 질의 편집 도구를 이용하여 접근
 - 데이터베이스 관리자 : 데이터베이스의 사용과 유지에 대하여 전반적인 관리와 책임을 가지는 사용자

 

데이터베이스 관리자(DBA : Database Administrator)
 - 데이터베이스 관리 시스템 전체에 대한 전반적은 제어 권한을 수행하는 사람 또는 집단
 - 역할 : 스키마의 정의와 수정, 데이터 저장구조와 접근 방법의 정의, 사용자에게 데이터 접근 권한을 부여, 무결성 제약조건을 지정, 백업과 복구를 위한 정책 결정, 가용성 유지