목차
용어 정의
DB 시스템을 공부하기 전 용어를 정리한다.
- 데이터(Data)
알려진 사실(fact)로서 의미를 가지면서 기록될 수 있는 것
- 데이터베이스(DB; Database)
특정한 의미를 갖는 관련있는 데이터의 집합
- 데이터베이스 관리 시스템(DBMS; Database Management System)
데이터베이스의 생성과 관리를 담당하는 소프트웨어 패키지
- 데이터베이스 시스템(DBS; Database System)
데이터베이스(DB)와 데이터베이스 관리 시스템(DBMS)을 이용해 조직에 필요한 정보를 제공해주는 전체 시스템
- 시스템 데이터베이스(System Database)
데이터베이스 관리 시스템(DBMS)이 사용하기 위한 부가 데이터가 저장되어 있는 데이터베이스(DB)
데이터베이스 시스템과 시스템 데이터베이스는 다른 의미로 쓰이므로 주의해야 한다. 시스템 데이터베이스의 정확한 정의와 구성 요소는 밑에서 다룬다.
Database System(DBS)
데이터베이스 시스템의 정의는 위에 설명한 것처럼 '데이터베이스(DB)와 데이터베이스 관리 시스템(DBMS)을 이용해 조직에 필요한 정보를 제공해주는 전체 시스템'이다.
쉽게 말해 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템이다.
DBS의 구성 요소는 다음과 같다.
- 사용자
- 데이터 언어
- 데이터베이스 관리 시스템(DBMS)
- 데이터베이스(DB)

3단계 데이터베이스 구조
3단계 데이터베이스 구조란 하나의 데이터베이스를 관점에 따라 3단계로 나눈 것이다.
아래의 3단계로 나눈다.
- 외부 단계(External level) : 개별 사용자 관점
- 개념 단계(Conceptual level) : 조직 전체의 관점
- 내부 단계(Internal level) : 물리적인 저장 장치의 관점
각 단계별로 다른 추상화(abstraction) 제공이 특징이다.
내부 단계에서 외부 단계로 갈수록 추상화 레벨은 높아진다. 추상화 레벨이 높을수록 복잡한 내용을 숨기며 전체 DB의 구성을 알 필요가 없다.
1. 외부 단계(External level)
외부 단계에서는 DB를 개별 사용자 관점에서 이해하고 표현한다.
DB 하나에 외부 스키마(External Schema)가 여러개 존재할 수 있다.
- 외부 스키마(External Schema)
외부 단계에서 사용자에게 필요한 DB를 정의한 것으로 각 사용자가 생각하는 DB의 모습이다. 즉, 논리적 구조로 사용자마다 그 모습이 다르다.
서브 스키마(Sub-Schema)라고도 한다.
논리적 구조이고 각 사용자가 생각하는 모습이므로 DB 하나에 외부 스키마가 여러개 존재할 수 있는 것이다.
학교 DB를 생각해보면 전체 DB는 교수, 학생 관점의 데이터가 통합되어 있지만 학생은 학생이 접근할 수 있는 영역의 데이터(성적, 수강과목)만 확인한다. 이때 교수 관점에서의 데이터와 학생 관점에서의 데이터가 각각의 외부 스키마이다.
2. 개념 단계(Conceptual level)
개념 단계에서는 DB를 조직 전체의 관점에서 이해하고 표현한다.
DB 하나에 개념 스키마(Conceptual Schema)가 하나만 존재한다.
- 개념 스키마(Conceptual Schema)
개념 단계에서 DB 전체의 논리적 구조를 정의한 것으로 조직 전체의 관점에서 생각하는 DB의 모습이다.
전체 DB에 어떤 데이터가 저장되는지, 데이터들 간 어떤 관계 존재하고 어떤 제약조건이 존재하는지에 대한 정의, 데이터에 대한 보안 정책, 접근 권한에 대한 정의도 포함한다.
논리적 구조를 정의한 것이기 때문에 물리적 저장 장치에 어떻게 삽입되는지에 대한 처리는 하지 않는다. 물리적 구조와는 독립적이며, 신경쓰지 않는다.
3. 내부 단계(Internal level)
내부 단계에서는 DB를 저장 장치의 관점에서 이해하고 표현한다.
DB 하나에 내부 스키마(Internal Schema) 하나만 존재한다.
- 내부 스키마(Internal Schema)
전체 DB가 저장 장치에 실제로 저장되는 방법을 정의한 것이다.
레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의한다.
3단계 데이터베이스 구조 예시

위 그림에서 외부 단계를 보면 고객 분석팀, 상품 배송팀 각 관점에서 필요한 데이터만 가진 외부 스키마를 확인할 수 있다.
또 개념 단계를 보면 고객 DB 전체에 대한 논리적 구조인 개념 스키마를 확인할 수 있다.
위 구조에서 고객 분석팀과 상품 배송팀은 내부 스키마를 이해할 필요가 없는 것을 알 수 있다.
3단계 데이터베이스 구조의 사상(Mapping)
위 구조 예시의 상품 배송팀의 고객 번호는 개념 스키마의 번호를 따라가고, 또 개념 스키마의 번호는 내부 스키마의 번호를 따라간다.
단계로 이야기하면,
외부 단계 고객번호는 개념 단계 번호와 연결되어 있고, 개념 단계 번호는 내부 단계 번호와 연결되어 있다.
이를 사상 또는 매핑이라고 한다. 사상보다는 매핑이라는 단어가 이해하기 쉬운 것 같아 앞으로는 매핑으로 칭한다.
매핑
3단계 데이터베이스 구조에서의 매핑은 스키마 사이의 대응 관계를 말한다. 미리 정의된 매핑 정보를 이용해 사용자가 원하는 데이터에 접근한다.
- 외부/개념 매핑
외부 스키마와 개념 스키마의 대응 관계이며, 응용 인터페이스(Application Interface)라고도 한다.
- 개념/내부 매핑
개념 스키마와 내부 스키마의 대응 관계이며, 저장 인터페이스(Storage Interface)라고도 한다.
3단계 데이터베이스 구조에서 스키마 간의 매핑

데이터 독립성(Data Independence)
데이터베이스를 3단계 구조로 나누고 단계별로 스키마를 유지하며 스키마 사이 대응 관계를 정의하는 목적은 바로 데이터의 독립성(Data Independence)을 실현하기 위함이다.
하위 스키마의 구조가 바뀌더라도 상위 스키마에서는 신경 쓸 필요가 없으며, 매핑 정보만 정확하게 수정해주면 된다.
위처럼 데이터 독립성이란 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성이다.
- 논리적 데이터 독립성
개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않는 것을 말한다.
개념 스키마가 변경되면 관련된 외부/개념 매핑만 정확하게 수정해주면 된다.
- 물리적 데이터 독립성
내부 스키마가 변경되어도 개념 스키마는 영향을 받지 않는 것을 말한다.
내부 스키마가 변경되면 관련된 개념/내부 매핑만 정확하게 수정해주면 된다.
시스템 데이터베이스(System Database)
데이터베이스 = 실제 Data + 부가 Data
DB에는 실제 데이터 외 저장된 데이터를 관리하기 위한 부가 데이터(실제 입력한 데이터가 아닌)도 포함된다.
부가 데이터에는 스키마(구조 정의)와 매핑 정보 등이 포함된다. 매핑 정보도 어딘가에는 저장되어 있어야 사용할 수 있다.
메타데이터(Metadata)는 다른 데이터를 설명해주는 데이터, 즉 데이터에 대한 데이터이다.
- 사용자 데이터베이스(User Database)
사용자가 실제로 이용하는 데이터가 저장되어 있는 일반 데이터베이스
- 시스템 데이터베이스(System Database)
데이터베이스 관리 시스템(DBMS)이 사용하기 위한 부가 데이터가 저장되어 있는 데이터베이스
데이터 사전(=시스템 카탈로그)(Data Dictionary, System Catalog)
DB에 저장되는 데이터에 관한 정보, 즉 메타데이터를 유지하는 시스템 데이터베이스이다.
위에서 말하는 메타데이터에는 스키마, 매핑 정보, 다양한 제약 조건 등이 포함된다.
DBMS가 스스로 생성하고 유지하며, 일반 사용자도 접근이 가능하지만 저장된 내용 검색만 가능하다.
데이터 디렉토리(Data Directory)
시스템 카탈로그에 있는 데이터에 실제로 접근하는데 필요한 위치 정보를 저장하는 시스템 데이터베이스이며 DBMS가 사용한다.
쉽게 말해 시스템 카탈로그의 데이터에 접근하기 위해 필요한 정보를 저장하고 있는 것이다.
시스템 카탈로그와는 다르게 일반 사용자의 접근은 허용하지 않는다.
데이터베이스 사용자
데이터베이스를 이용하기 위해 접근하는 모든 사람이며, 이용 목적에 따라 분류한다.
- 데이터베이스 관리자(DBA; Database Administrator)
- 최종 사용자(일반 사용자, End User)
- 응용 프로그래머(Application Programmer)
데이터베이스 관리자(DBA; Database Administrator)
DB 시스템을 운영, 관리하는 사람이다. 데이터 정의어와 데이터 제어어를 사용한다.
주요 업무:
- DB 구성 요소 선정
- DB 스키마 정의
- 물리적 저장 구조, 접근 방법 결정
- 무결성 유지를 위한 제약 조건 정의
- 보안 및 접근 권한 정책 결정
- 백업 및 회복 기법 정의
- 시스템 데이터베이스 관리
- 시스템 성능 감시 및 성능 분석
- DB 재구성
한마디로 DBMS의 모든 기능을 활용해 DB 시스템을 운영하는 사람이다.
최종 사용자(End User)
DB에 접근해 데이터를 조작(삽입, 삭제, 수정, 검색)하는 사람이다. 데이터 조작어를 사용한다.
최종 사용자는 캐주얼 사용자와 초보 사용자로 나누어진다.
- 캐주얼 사용자
데이터 조작어를 사용해 DBMS에 직접 요구, 설명한다.
- 초보 사용자
메뉴 또는 GUI 형태의 응용 프로그램을 통해 DB를 사용한다. 학교 페이지에 접속해 로그인 후 학점을 조회하는 것이 그 예이다.
응용 프래그래머(Application Programmer)
데이터 언어를 삽입해 응용 프로그램을 작성하는 사람이다. 주로 데이터 조작어를 사용한다.
DB 조회 후 조회한 데이터로 기능을 수행하는 프로그램을 작성하는 것이 그 예이다.
데이터 언어(Database Language)
사용자와 DBMS 간 통신 수단이 되는 언어이다. 사용 목적에 따라 분류한다.
- 데이터 정의어(DDL; Data Definition Language)
스키마(데이터 구조) 정의, 수정, 삭제를 위해 사용한다.
- 데이터 조작어(DML; Data Manipulation Language)
데이터(인스턴스)의 삽입, 삭제, 수정, 검색 요구를 위해 사용한다.
- 데이터 제어어(DCL; Data Control Language)
관리를 위해서 내부적으로 필요한 규칙, 기법 정의를 위해 사용한다.
데이터 정의어(DDL; Data Definition Language)
새로운 DB를 구축하기 위해 스키마를 정의하거나 기존 스키마의 정의를 수정 또는 삭제하기 위해 사용한다.
데이터 정의어로 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그(메타데이터를 유지하는 시스템 데이터베이스)에 저장한다.
데이터 조작어(DML; Data Manipulation Language)
데이터 삽입, 삭제, 수정, 검색 등의 처리를 요구하기 위해 사용한다. 절차적 데이터 조작어, 비절차적 데이터 조작어로 구분한다.
- 절차적 데이터 조작어(Procedural DML)
사용자가 어떤(what) 데이터를 원하고 그 데이터를 얻기 위해 어떻게(how) 처리해야 하는지도 설명한다. 원하는 데이터를 찾기 위한 절차를 하나하나 설명하는 것이다.
e.g. FORTRAN, COBOL, ALGOL, BASIC, C and Pascal
- 비절차적 데이터 조작어(non-procedural DML)
사용자가 어떤(what) 데이터를 원하는지만 설명한다. 원하는 데이터만 명시하며 어떻게 처리할 것인지는 DBMS에 위임한다.
원하는 데이터만 선언하는 것이므로 선언적 언어(Declarative Language)라고도 한다.
당연히 사용자 입장에서 편하며 일반적인 질의어라고 생각하면 된다.
e.g. SQL, PROLOG, LISP
쉽게 말하면 택시를 탔을 때
기사님, 마곡역으로 가주세요. -> 비절차적
기사님, 기어 D로 바꾸시고 엑셀 밟으시고 시속 50km 유지하면서 화곡역 거쳤다가 ~ 가주세요. -> 절차적
절차적, 비절차적 DML의 차이는 아래 사이트에서 자세히 확인할 수 있다.
Difference Between Procedural and non-procedural language
Difference between Procedural and Non-Procedural language - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
데이터 제어어(DCL; Data Control Language)
DB에 저장된 데이터를 여러 사용자가 무결성과 일관성을 유지하며 문제없이 공유할 수 있도록 내부적으로 필요한 규칙이나 기법을 정의하기 위해 사용한다.
- 무결성
정확하고 유효한 데이터만 유지
- 보안
허가받지 않은 사용자의 데이터 접근 차단, 허가된 사용자에 권한 부여
- 회복
장애가 발생해도 데이터 일관성 유지
- 동시성 제어
동시 공유 지원, 다중 사용자 환경을 지원하는 DB 시스템에서 필수적으로 지원해야 하는 기능
데이터베이스 관리 시스템(DBMS)
DB 관리와 사용자의 처리 요구를 해석하고 처리한다.
주요 구성 요소는 질의 처리기, 저장 데이터 관리자이다.
- 질의 처리기(Query Processor)
사용자의 데이터 처리 요구를 해석하여 처리한다.
DDL 컴파일러, DML 프리 컴파일러, DML 컴파일러, 런타임 DB 처리기, 트랜잭션 관리자 등을 포함한다.
- 저장 데이터 관리자(Stored Data Manager)
디스크에 저장된 사용자 DB와 시스템 카탈로그를 관리하고 DB에 실제로 접근하는 역할을 담당한다.
질의 처리기(Query Processor)
- DDL 컴파일러
DDL로 작성된 스키마의 정의를 해석한다.
저장 데이터 관리자의 도움을 받아 새로운 DB를 구축하고 스키마 정의를 시스템 카탈로그에 저장하며 기존 스키마의 수정, 삭제 요청도 처리하면서 변경된 내용을 시스템 카탈로그에 적용한다.
- DML 프리 컴파일러
응용 프로그램에 삽입된 DML 추출 후 DML 컴파일러에 전달한다.
- DML 컴파일러
DML로 작성된 데이터의 처리 요구를 분석해 런타임 DB 처리기가 이해할 수 있도록 해석한다.
- 런타임 DB 처리기
저장 데이터 관리자를 통해 DB에 접근하고 DML 컴파일러로부터 받은 데이터 처리 요구를 DB에서 실제로 수행한다.
- 트랜잭션 관리자
DB에 접근하는 과정에서 사용자의 접근 권한 유효성 검사, 제약 조건 위반 여부 확인, 회복, 병행과 관련된 작업을 수행한다.
DBMS 구성

데이터베이스 시스템 아키텍쳐
중앙 집중식 DB 시스템(Centralized Database System)
DB 시스템이 하나의 컴퓨터 시스템에서 운영된다.
분산 DB 시스템(Distributed Database System)
네트워크로 연결된 여러 사이트에 DB 자체가 분산되어 있으며, DB 시스템도 여러 컴퓨터 시스템에서 운영된다.
사용자는 다른 사이트에 저장된 각 DB를 접근할 수 있다.
클라이언트-서버 DB 시스템(Client-Server Database System)
PC 또는 워크스테이션처럼 자체 컴퓨팅 능력을 가진 클라이언트를 통해 DB 서버를 접근한다.
DB가 하나의 DB 서버에 저장되어 있으며 DB 시스템의 기능이 서버와 클라이언트에 분산된다.
서버는 DB를 저장하고 DBMS를 운영하면서 여러 클라이언트에서 온 질의를 최적화하며 권한 검사, 동시성 제어, 회복 기능, DB의 무결성 유지, DB 접근 관리를 수행한다.
클라이언트는 사용자 인터페이스를 관리하고 응용들을 수행한다.
- 2-tier model
DB 서버와 클라이언트가 직접 연결된다.
- 3-tier model
DB 서버와 클라이언트 사이 응용 서버가 추가된다.
아래 강의를 듣고 작성한 글입니다.
데이터베이스설계
본 교과에서는 데이터베이스의 기본 개념과 DBMS 운용 능력등을 익히고 데이터베이스의 논리적 모델링 기법을 이용한 데이터베이스 설계를 목표로 한다.
www.kocw.net
'DB' 카테고리의 다른 글
| DB | 개념적 데이터 모델링 (0) | 2023.08.06 |
|---|---|
| DB | 데이터 모델링, 개체-관계 모델(E-R Model) (0) | 2023.02.26 |
| DB | SQL 기초 연습 (2) (0) | 2022.08.26 |
| DB | SQL 기초 연습 (1) (0) | 2022.08.17 |
| DB | MySQL 정리 (0) | 2022.08.15 |