| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- CrackMe 문제
- AWS 침해사고 사례 분석
- AWS
- TryHackMe
- 운영체제
- Database
- 악성코드 분석
- sql
- network
- 네트워크
- Amazon S3
- AWS 3 Tier Architecture
- reversing.kr
- reversing
- C
- 버퍼 오버플로우
- dreamhack
- python
- 리버싱
- 파일 시스템
- crackme
- terraform
- AWS 침해 사고 사례 분석
- 악성코드분석
- 프로그래머스
- programmers
- AWS 보안 아키텍처 분석
- AWS 사고 사례 분석
- 드림핵
- operating system
- Today
- Total
lhywk 님의 블로그
[DB] 데이터베이스 시스템의 구성, 데이터 모델, 개념적 구조 본문
1. 데이터베이스 시스템의 구성
데이터베이스 언어

사용자나 응용 프로그램이 DBMS와 소통하기 위해서는 정해진 언어가 필요하다. 이 언어는 역할에 따라 세 가지로 나뉜다.
데이터 정의어(DDL, Data Definition Language)는 데이터베이스의 구조를 정의하는 데 사용된다. 테이블을 만들거나 삭제하는 것처럼 데이터베이스의 틀 자체를 다루는 역할을 한다.
데이터 조작어(DML, Data Manipulation Language)는 데이터베이스에 저장된 데이터를 검색하거나 삽입, 수정, 삭제하는 데 사용된다. 실제 데이터를 다루는 작업은 대부분 이 언어를 통해 이루어진다.
데이터 제어어(DCL, Data Control Language)는 데이터베이스에 대한 접근 권한을 부여하거나 회수하는 데 사용된다. 보안과 권한 관리를 담당하는 언어이다.
DBMS의 핵심 기능
DBMS가 수행하는 기능은 크게 세 가지로 정리할 수 있다.
정의 기능은 데이터베이스의 구조를 정의하고 수정할 수 있게 해주는 기능이다. 어떤 데이터를 어떤 형태로 저장할지 결정하는 역할을 한다.
조작 기능은 사용자가 원하는 데이터를 검색하거나 데이터를 삽입, 삭제, 갱신할 수 있게 해주는 기능이다.
제어 기능은 데이터의 정확성과 안전성을 유지하기 위한 기능이다. 여러 사용자가 동시에 데이터에 접근해도 문제가 생기지 않도록 통제하고, 권한이 없는 사용자가 데이터에 접근하지 못하도록 막으며, 장애가 발생했을 때 데이터를 복구하는 역할까지 포함한다.
2. 데이터 모델
데이터 모델은 현실 세계의 데이터를 데이터베이스에 표현하기 위한 논리적인 구조를 의미한다. 데이터 모델은 보는 관점의 추상화 수준에 따라 세 가지로 나뉜다.
개념적 데이터 모델
개념적 데이터 모델은 현실 세계를 인간이 이해하기 쉬운 형태로 추상화한 모델이다. 데이터베이스를 설계하는 가장 초기 단계에서 사용되며, 개체(Entity)와 개체들 사이의 관계(Relationship)를 중심으로 표현한다. 이 모델을 대표하는 것이 E-R 모델(개체-관계 모델)이다.
논리적 데이터 모델
논리적 데이터 모델은 개념적 모델을 컴퓨터가 이해할 수 있는 구조로 변환한 모델이다. 데이터들이 컴퓨터에서 어떤 형태의 구조로 표현되는지를 다루며, 대표적으로 계층형 모델, 네트워크형 모델, 관계형 모델이 있다.
계층형 모델은 데이터를 트리 형태의 계층 구조로 표현한다. 부모와 자식 관계가 명확한 데이터를 표현하기에는 적합하지만, 복잡한 관계를 표현하기에는 유연성이 부족하다.
네트워크형 모델은 데이터를 그래프 구조로 표현해서 계층형 모델보다 복잡한 관계를 표현할 수 있다. 다만 구조가 복잡해질수록 다루기가 어려워진다는 한계가 있다.
관계형 모델은 데이터를 행과 열로 이루어진 테이블(릴레이션) 형태로 표현한다. 수학의 집합 이론에 기반하고 있어서 구조가 단순하고 이해하기 쉬우며, 오늘날 가장 널리 사용되는 데이터 모델이다.
물리적 데이터 모델
물리적 데이터 모델은 데이터가 저장 장치에 실제로 어떻게 저장되는지를 표현한 모델이다. 데이터의 물리적인 저장 방법, 저장 순서, 접근 경로 등을 다루며, 일반적으로 데이터베이스 설계의 가장 마지막 단계에서 고려된다.
아래 그림은 지금까지 설명한 데이터 모델의 분류를 정리한 것이다.

3. 데이터베이스의 개념적 구조
데이터베이스는 사용자, 설계자, 실제 저장 장치라는 서로 다른 입장을 동시에 만족시켜야 한다. 이를 위해 데이터베이스는 흔히 3단계 구조(Three-Schema Architecture)라고 불리는 구조로 설계된다. 이 구조는 외부 단계, 개념 단계, 내부 단계라는 세 가지 추상화 수준으로 나뉜다.

외부 단계
외부 단계(External Level)는 개별 사용자의 관점에서 데이터베이스를 바라보는 단계이다. 이 단계에서 정의되는 것이 외부 스키마(External Schema)인데, 사용자나 응용 프로그램이 필요로 하는 데이터베이스의 일부분만을 정의한 것이다. 같은 데이터베이스라도 사용자에 따라 필요한 데이터가 다르기 때문에, 하나의 데이터베이스에 대해 여러 개의 외부 스키마가 존재할 수 있다. 예를 들어 급여 담당자는 직원의 급여 정보가 포함된 외부 스키마를 사용하고, 인사 담당자는 직원의 인사 평가 정보가 포함된 외부 스키마를 사용하는 식이다.
개념 단계
개념 단계(Conceptual Level)는 데이터베이스를 조직 전체의 관점에서 바라보는 단계이다. 이 단계에서 정의되는 개념 스키마(Conceptual Schema)는 데이터베이스에 어떤 데이터가 저장되는지, 데이터들 사이에 어떤 관계가 있는지, 어떤 제약조건이 있는지를 종합적으로 정의한다. 하나의 데이터베이스에는 단 하나의 개념 스키마만 존재한다. 보통 데이터베이스라고 말할 때 가장 일반적으로 가리키는 대상이 바로 이 개념 스키마이다.
내부 단계
내부 단계(Internal Level)는 데이터가 실제로 저장 장치에 어떻게 저장되는지를 다루는 단계이다. 이 단계에서 정의되는 내부 스키마(Internal Schema)는 데이터의 저장 구조, 레코드의 형식, 인덱스의 존재 여부 같은 물리적인 저장 방법을 정의한다.
아래 그림은 이 3단계 구조 전체를 정리해서 보여준다.

사상(Mapping)
3단계 구조에서 중요한 것은 각 단계가 완전히 독립적으로 분리되어 있지 않고, 사상(Mapping)이라는 연결 고리로 이어져 있다는 점이다.
외부/개념 사상은 외부 스키마와 개념 스키마 사이의 대응 관계를 정의한다. 개념 스키마가 일부 수정되어도 외부 스키마와의 사상만 적절히 조정해주면, 외부 스키마를 사용하는 응용 프로그램은 영향을 받지 않을 수 있다.
개념/내부 사상은 개념 스키마와 내부 스키마 사이의 대응 관계를 정의한다. 데이터의 물리적인 저장 방식이 바뀌어도, 개념 스키마와의 사상만 조정해주면 개념 스키마 자체는 그대로 유지될 수 있다.
데이터 독립성
이 사상이라는 개념이 중요한 이유는 데이터 독립성(Data Independence)이 실현되기 때문이다. 데이터 독립성은 한 단계의 스키마가 변경되어도 다른 단계의 스키마에는 영향을 주지 않는 특성을 의미하며, 두 가지로 나뉜다.
논리적 데이터 독립성은 개념 스키마가 변경되어도 외부 스키마와 그에 기반한 응용 프로그램은 영향을 받지 않는 것을 의미한다.
물리적 데이터 독립성은 내부 스키마, 즉 데이터의 물리적인 저장 구조가 변경되어도 개념 스키마는 영향을 받지 않는 것을 의미한다.
이러한 데이터 독립성이 보장되기 때문에, 데이터베이스를 사용하는 입장에서는 내부적인 저장 구조나 다른 사용자의 관점이 어떻게 바뀌든 신경 쓰지 않고 자신에게 필요한 데이터만 다룰 수 있게 된다.
'Database' 카테고리의 다른 글
| [DB] 관계대수 - 셀렉션, 프로젝션, 집합연산, 조인, 디비전 (0) | 2026.06.18 |
|---|---|
| [DB] 키와 무결성 제약조건 (0) | 2026.06.18 |
| [DB] 릴레이션, 스키마와 인스턴스, 관계 데이터 모델 (0) | 2026.06.18 |
| [DB] 파일 시스템과 DBMS (0) | 2026.06.18 |
| [DB] Database (0) | 2026.06.18 |