DB/MySQL로 배우는 데이터베이스 개론과 실습

Chapter 01. 데이터베이스 시스템

favor 2026. 4. 14. 17:08

01. 데이터베이스와 데이터베이스 시스템

데이터베이스(database) : 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것

 

(1) 데이터, 정보, 지식

데이터가 모이면 정보가 되고, 정보가 모이면 지식이 됨

 

데이터(data) : 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값

정보(information) : 데이터에 의미를 부여한 것

지식(knowledge) : 사물이나 현상에 대한 이해

 

(2) 데이터베이스의 활용

데이터베이스 시스템은 데이터의 검색변경 작업을 주로 수행

ㄴ 변경 : 시간에 따라 변하는 데이터 값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업 

 

검색, 변경 빈도에 따른 데이터 베이스 유형

유형 검색 빈도 변경 빈도 데이터베이스 구축 특징
유형 1 적다 적다 쉬움

^
|
|
v

어려움
- 검색이 많지 않아 데이터베이스를 구축할 필요 없음
- 보존 가치가 있는 경우에 구축함
ex) 공룡 정보 데이터베이스
유형 2 많다 적다 - 사용자 수 보통임
- 검색은 많지만, 데이터에 대한 변경은 적음
ex) 도서 데이터베이스
유형 3 적다 많다 - 예약 변경/취소 등 데이터 변경은 많지만, 검색은 적음
- 실시간 검색 및 변경이 중요함
ex) 비행기 예약 데이터베이스
유형 4 많다 많다 - 사용자 수 많음
- 검색도 많고, 거래로 인한 변경도 많음
ex) 증권 데이터베이스

 

* 데이터베이스는 저장된 데이터 양이 많고, 실시간 검색이 많은 분야일수록 활용도가 높다.

 

(3) 데이터베이스의 개념 및 특징

데이터베이스 : 여러 사람이 공용으로 사용하기 위해 통합하고 저장한 운영 데이터의 집합

  1. 통합된 데이터(integrated data)
    • 여러 곳에서 사용하던 데이터를 통합하여 하나로 저장한 데이터를 의미
    • 통합할 때 중요한 점은 각자 사용하던 데이터의 중복을 최소화함으로써 중복 저장으로 인한 데이터 불일치 현상을 없애는 것
  2. 저장된 데이터(stored data)
    • 문서로 보관된 데이터가 아니라 디스크, 테이프와 같은 컴퓨터 저장 장치에 저장된 데이터를 의미
    • 사람의 눈으로 직접 볼 수는 없지만, 컴퓨터 프로그램을 이용하여 보여주거나 인쇄물로 출력 가능
  3. 운영 데이터(operational data)
    • 조직의 목적을 위해 사용되는 데이터를 의미
    • 업무에 필요한 검색을 할 목적으로 저장된 데이터
    • 조직의 목적과 관계없이 저장된 데이터나 임시 저장된 단순 입출력 데이터는 운영 데이터에 속하지 않음
  4. 공용 데이터(shared data)
    • 한 사람 또는 한 가지 업무에 사용되는 데이터가 아니라 공동으로 사용되는 데이터를 의미
    • 데이터는 어느 순간이라도 둘 이상의 프로그램 또는 여러 사람이 동시에 사용 가능 

 

데이터베이스의 특징

  1. 실시간 접근이 가능하다
    • 데이터베이스는 실시간으로 서비스됨
    • 실시간 서비스 : 사용자가 요청하는 순간의 실제 데이터를 서비스하는 것
  2. 계속 변화한다
    • 데이터베이스에 저장된 데이터 값은 삽입, 삭제, 수정 등의 작업으로 변화
  3. 동시 공유가 가능하다
    • 데이터베이스는 서로 다른 업무를 하거나 같은 업무를 하는 여러 사용자에게 동시에 공유됨
    • 동시 == 병행
    • 데이터베이스에 접근하는 사용자 데이터 요청 프로그램이 동시에 여러 개 있다는 의미
  4. 내용으로 참조가 가능하다
    • 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값(내용)에 따라 참조됨
    • 사용자가 원하는 데이터를 얻기 위해 데이터 값을 사용하여 조건을 제시하면 데이터베이스는 이에 해당하는 데이터를 검색해줌 

 

(4) 데이터베이스 시스템의 구성

데이터베이스 시스템 : 각 조직에서 사용하던 데이터를 통합하고 공유할 때 생기는 장점을 이용하는 시스템

데이터베이스 관리 시스템, 데이터베이스, 데이터 모델 세 가지로 구성 

 

  1. 데이터베이스 관리 시스템(DBMS)
    • 데이터를 관리하는 소프트웨어 시스템
    • 주기억장치에 상주하면서 사용자와 데이터베이스를 연결해줌
  2. 데이터베이스
    • 데이터를 모아 둔 토대
    • 컴퓨터 내부의 하드디스크에 물리적으로 저장됨
  3. 데이터 모델 
    • 데이터가 저장되는 기법에 관한 내용
    • 눈에 보이지 않는 논리적인 개념

 

02. 데이터베이스 시스템의 발전

(1) 정보 시스템의 발전

데이터베이스 관리 시스템(DBMS)과 인터넷의 등장은 기업의 업무 환경을 바꾸는 획기적인 계기가 됨

 

데이터베이스 처리 관점에서 기업 정보 시스템의 발전 과정

  1. 파일 시스템
    • 데이터를 파일 단위로 파일 서버에 저장
    • 각각의 컴퓨터는 LAN(Local Area Network)을 통하여 파일 서버에 연결되어 있고, 파일 서버에 저장된 데이터를 사용하기 위해 각 컴퓨터의 응용 프로그램에서 열기/닫기를 요청
    • 각 응용 프로그램이 독립적으로 파일을 다룸 --> 데이터가 중복 저장될 가능성 O
    • 동시에 파일을 다룸 --> 데이터의 일관성이 훼손될 가능성 O
  2. 데이터베이스 시스템
    • DBMS를 도입하여 데이터를 통합 관리하는 시스템
    • 클라이언트/서버 시스템
    • DBMS가 설치되어 데이터를 가진 쪽이 서버, 외부에서 데이터를 요청하는 쪽이 클라이언트
    • DBMS 서버가파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행
    • 데이터를 저장하기 전에 설계 과정을 거침 --> 데이터 중복을 줄이고 데이터를 표준화하며 무결성을 유지 
  3. 웹 데이터베이스 시스템
    • 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템
    • 클라이언트는 웹 브라우저 프로그램을 이용하여 웹 서버에 접속한 후 데이터를 요청
    • 웹 서버는 DBMS 서버에 요청을 전달
    • 웹 데이터베이스 시스템은 불특정 다수 고객을 상대로 하는 온라인 상거래나 공공 민원 서비스 등에 사용됨 
  4. 분산 데이터베이스 시스템
    • 여러 곳에 분산된 DBMS 서버를 연결하는 운영 시스템 
    • 대규모의 응용 시스템에 사용됨 

 

중소기업에서 대기업으로 성장할수록 데이터베이스의 규모가 커지고 업무도 복잡해지며, 고객에게 실시간 전달하는 고객 중심 서비스를 하게 됨

 

03. 파일 시스템과 DBMS

(1) 데이터를 저장하는 방법

컴퓨터에 데이터를 저장하는 방법 세 가지 

 

✔️ 데이터를 프로그램 내부에 저장하는 방법

데이터를 프로그램의 변수에 치환하여 저장하는 방법

 

새로운 데이터가 생길 때마다 프로그램을 수정한 후 다시 컴파일하고, 새로 컴파일된 프로그램을 실행시켜야 함

ㄴ 데이터의 추가나 삭제 같은 변경 작업이 없다면 아무 문제가 없지만, 데이터에는 항상 변경이 일어나기 때문에 문제가 발생함

 

✔️ 파일 시스템을 사용하는 방법

데이터를 프로그램과 분리하여 별도의 파일에 저장하는 방법

파일은 프로그램과 분리되어 컴퓨터의 디스크에 저장되며, 컴퓨터가 꺼진 상태에서도 데이터 값을 유지

데이터가 변경되어도 프로그램 자체를 수정하지 않아도 됨 

 

데이터 구조가 바뀔 때면 데이터 구조를 다시 정의하고 다시 컴파일 해야 함

같은 파일을 두 개의 프로그램이 공유하게 되면 동시에 사용 불가능

 

✔️ DBMS를 사용하는 방법

데이터 정의와 데이터 값을 DBMS라는 소프트웨어 관리하는 방법

프로그램에 데이터 정의나 데이터 값을 포함하지 않기 때문에 데이터 구조가 바뀌어도 다시 컴파일할 필요가 없음

DBMS는 데이터 정의, 데이터 변경 등의 작업을 할 수 있는 별도 프로그램을 가짐

 

(2) 파일 시스템과 DBMS 비교

구분 파일 시스템 DBMS
데이터 정의 응용 프로그램 DBMS
데이터 저장 파일 시스템 데이터베이스
데이터 접근 방법 응영 프로그램이 파일에 직접 접근 응용 프로그램이 DBMS에 파일 접근을 요청
사용 언어 자바, C++, C 등 자바, C++, C 등과 SQL
CPU/주기억장치 사용 적음 많음

 

DBMS는 파일 시스템에 비해 CPU와 주기억장치 등의 컴퓨터 자원을 많이 사용하지만 SQL 언어를 사용하여 응용 프로그램이 데이터에 쉽게 접근 가능

ㄴ 프로그래머가 해야 할 파일 관리를 DBMS로 쉽게 할 수 있음

 

DBMS의 장점

장점 설명
데이터 중복 최소화 DBMS를 이용하여 데이터를 공유하므로 중복 가능성이 낮음
데이터 일관성 유지 중복 제거로 데이터의 일관성이 유지됨
데이터 독립성 유지 데이터 정의와 프로그램 간 독립성을 유지 가능
관리 기능 제공 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 등을 수행
프로그램 개발 생산성 향상 짧은 시간에 큰 프로그램을 개발 가능
기타 데이터 무결성 유지, 데이터 표준 준수가 용이함 

 

04. 데이터베이스 시스템의 구성

데이터베이스 시스템의 기본 구성 : 데이터베이스, 데이터베이스 관리 시스템(DBMS), 데이터 모델
- 데이터 베이스 : 하드 디스크에 저장된 데이터
- DBMS : 주기억장치에 저장된 소프트웨어
- 데이터 모델 : 눈에 보이지 않는 논리적인 개념으로, 데이터가 저장되는 기법에 관한 내용

 

(1) 데이터베이스 언어

데이터베이스 시스템은 데이터베이스 전용 언어인 SQL(Structured Query Language)을 사용

SQL의 구성 : 데이터 정의어, 데이터 조작어, 데이터 제어어

  • 데이터 정의어(Data Definition Language, DDL)
    • DBMS에 저장된 테이블 구조를 정의하는 데 사용
    • CREATE, ALTER, DROP 문 등
  • 데이터 조작어(Data Manipulation Language, DML)
    • 데이터를 검색, 삽입, 삭제, 수정하는 데 사용
    • SELECT, INSERT, DELETE, UPDATE 문 등
  • 데이터 제어어(Data Control Language, DCL)
    • 데이터의 사용 권한을 관리하는 데 사용
    • GRANT, REVOKE 문 등

 

SQL의 핵심은 데이터 조작어 중 데이터를 검색하는 질의문

질의문은 SELECT-FROM-WHERE 구조

SELECT bookname, publisher
FROM Book;

Book 테이블에서 bookname과 publisher를 검색한다.

 

SELECT bookname, publisher
FROM Book
WHERE price >= 10000;

Book 테이블에서 price가 10,000원 이상인 bookname과 publisher를 검색한다. 

 

(2) 데이터베이스 사용자

데이터베이스 시스템을 사용하는 사람은 크게 일반 사용자, 응용 프로그래머, SQL 사용자, 데이터베이스 관리자로 구분 가능

  • 일반 사용자(end user)
    • 응용 프로그래머가 작성한 프로그램을 이용하는 사람
    • 보통 특별한 지식 없이 데이터베이스에 접근하여 데이터의 검색, 삽입, 삭제, 수정 작업을 함
    • 일반 사용자는 자신이 DBMS를 이용하는지 알지 못함
  • 응용 프로그래머(application programmer)
    • 데이터베이스를 이용하여 문제를 해결하는 프로그램을 작성하는 사람
    • 자바, C, JSP 등의 프로그래밍 언어와 SQL을 사용하여 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 로직을 개발
    • 데이터베이스 프로그래머라고도 함
  • SQL 사용자
    • SQL 질의를 작성하거나 SQL을 이용하여 프로그램을 작성하는 사람
    • 응용 프로그램으로 구현되지 않은 업무를 SQL을 사용해 처리
    • 데이터 검색, 데이터 구조 변경, 데이터에 관한 통계 처리 등 데이터를 모니터링하는 업무를 하거나 보고서 형태로 만들어 상부에 보고하는 업무를 함
  • 데이터베이스 관리자(DataBase Administrator, DBA)
    • 조직의 데이터베이스 운영을 총괄하는 사람
    • 데이터 설계, 구현, 유지보수의 전 과정을 담당
    • 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등의 제반 업무를 맡음 

 

(3) DBMS

DBMS : 사용자와 데이터베이스를 연결해 주는 소프트웨어

ㄴ 데이터베이스 사용자가 데이터베이스를 생성, 공유, 관리할 수 있도록 지원해 주는 총체적인 역할을 함

 

DBMS의 기능

기능 설명
데이터 정의 - 데이터 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행
데이터 조작 - 데이터를 조작하는 소프트웨어(응용 프로그램)가 요청하는 데이터의 검색, 삽입, 수정, 삭제 작업을 지원
데이터 추출 - 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출
데이터 제어 - 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어
- 백업과 회복, 동시성 제어 등의 기능을 지원

 

(4) 데이터 모델

데이터 모델 : 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것으로, 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지를 결정

ㄴ 현재 데이터베이스 시스템은  관계 데이터 모델을 기본 개념으로 하고, 객체-관계 데이터 모델로 발전하고 있음

 

또 다른 데이터 모델로는 계층 데이터 모델, 네트워크 데이터 모델, 객체 데이터 모델, 객체-관계 데이터 모델 등이 있음

ㄴ 객체-관계 데이터 모델은 객체지향 언어가 널리 사용됨에 따라 관계 데이터 모델과 객체 데이터 모델의 장점을 결합한 모델

 

데이터 모델을 구분하는 가장 큰 기준 : 데이터 간 관계를 표현하는 방법

  • 포인터 사용 : 계층 데이터 모델, 네트워크 데이터 모델
    • 프로그래밍 언어의 포인터 타입을 이용하는 방법
    • 데이터를 직접 찾아갈 수 있어서 프로그램 속도는 빠름
    • 포인터를 다루는 프로그래밍을 해야 하므로 응용 프로그램 개발 속도 면에서는 느리다는 단점
  • 속성값 사용 : 관계 데이터 모델
    • 직접적인 포인터는 없고 값을 이용하여 관계를 찾아감
    • 포인터를 사용하는 방법보다 속도가 조금 느림
    • 개념이 쉽고 프로그램 개발이 빠르기 때문에 많은 데이터베이스 시스템에서 이 방법을 사용
  • 객체 식별자 사용 : 객체 데이터 모델
    • 객체 개념으로 보고, 객체의 고유 식별자인 oid(objectid)를 테이블에 저장하는 방법
    • 객체지향 언어의 상속, 캡슐화 등의 개념을 도입  

 

(5) 데이터베이스의 개념적 구조

✔️  3단계 데이터베이스 구조

3단계 데이터베이스 구조 : 데이터베이스를 보는 관점을 3단계로 분리한 것

외부 단계, 개념 단계, 내부 단계로 나뉨

 

스키마(schema) : 조직이나 구조를 의미

 

  • 외부 단계
    • 사용자가 보는 데이터
    • 일반 사용자나 응용 프로그래머가 접근하는 계층 
    • --> 본인에게 필요한 데이터만 필터링하여 볼 수 있음 
    • 전체 데이터베이스 중 하나의 논리적인 부분을 의미
    • 여러 개의 외부 스키마가 있을 수 있음
    • 외부 스키마는 서브 스키마라고도 부르며, 뷰(view)의 개념
  • 개념 단계
    • 전체 데이터
    • 전체 데이터베이스의 정의를 의미
    • 통합 조직별로 하나만 존재하며 DBA가 관리
    • 하나의 데이터베이스에는 하나의 개념 스키마가 있음
    • 개념 스키마는 저장 장치에 독립적으로 기술됨 (= 데이터가 하드디스크에 저장되는 방식은 신경쓰지 X)
    • 데이터와 관계, 제외사항, 무결성에 대한 내용이 포함
  • 내부 단계
    • DBMS가 보는 데이터
    • 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법을 표현한 것
    • 내부 스키마는 하나만 존재
    • 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함

 

DBMS는 매핑(mapping, 사상)을 통하여 각 단계 간 대응 관계를 정의

  • 외부/개념 매핑
    • 사용자의 외부 스키마와 개념 스키마 간의 매핑
    • 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킴
  • 개념/내부 매핑
    • 개념 스키마와 내부 스키마 간의 매핑
    • 개념 스키마의 데이터가 내부 스키마의 물리적 장치 중 어디에 어떤 방법으로 저장되는지 대응시킴

 

✔️ 데이터 독립성

데이터 독립성 : 하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김 --> 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 함

  • 논리적 데이터 독립성(logical data independence)
    • 외부 단계와 개념 단계 사이의 독립성
    • 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원
    • 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념
    • ex) 개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 외부 스키마에 영향이 없음
  • 물리적 데이터 독립성(physical data independence)
    • 개념 단계와 내부 단계 사이의 독립성
    • 저장 장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원
    • ex) 성능 개선을 위하여 물리적 저장 장치를 재구성해도 개념 스키마나 응용 프로그램 같은 외부 스키마에 영향이 없음
    • 물리적 독립성은 논리적 독립성보다 구현하기 쉬움