데이터베이스란?
데이터베이스(Database)는 조직에 필요한 데이터를 통합하여 저장하고, 여러 사용자가 공유하여 사용할 수 있도록 관리하는 데이터의 집합이다.
핵심 특성
1
2
3
4
5
6
7
8
9
10
11
12
| 1. 통합 데이터 (Integrated Data)
- 중복을 최소화한 데이터의 집합
- 완전한 중복 제거는 불가능하므로 "최소한의 통제된 중복" 허용
2. 저장 데이터 (Stored Data)
- 컴퓨터가 접근할 수 있는 저장 매체에 저장된 데이터
3. 공유 데이터 (Shared Data)
- 여러 사용자가 동시에 사용할 수 있는 데이터
4. 운영 데이터 (Operational Data)
- 조직의 기능을 수행하기 위해 반드시 필요한 데이터
|
파일 시스템 vs DBMS
파일 시스템의 문제점
1
2
3
4
5
6
7
8
| 파일 시스템 (File System)
├── 데이터 종속성: 파일 구조가 바뀌면 프로그램도 수정
├── 데이터 중복성: 같은 데이터가 여러 파일에 존재
│ ├── 일관성 (Consistency) 훼손
│ ├── 보안성 (Security) 관리 어려움
│ └── 경제성 (Economy) 저하 (저장 공간 낭비)
├── 동시 접근 제어 불가
└── 회복 기능 부재
|
DBMS의 장점
1
2
3
4
5
6
7
8
| DBMS (Database Management System)
├── 데이터 독립성: 프로그램과 데이터 분리
├── 데이터 중복 최소화: 통합 관리
├── 동시성 제어 (Concurrency Control)
├── 데이터 무결성 (Integrity) 보장
├── 보안 (Security) 관리
├── 백업과 회복 (Backup & Recovery)
└── 데이터 일관성 (Consistency) 유지
|
비교 요약
| 구분 | 파일 시스템 | DBMS |
|---|
| 데이터 중복 | 중복 허용 | 중복 최소화 |
| 데이터 독립성 | 낮음 | 높음 |
| 동시 접근 | 제한적 | 동시성 제어 지원 |
| 보안 | 파일 단위 | 레코드/필드 단위 |
| 회복 | 불가 | 트랜잭션 기반 회복 |
| 무결성 | 프로그램 의존 | DBMS 레벨에서 보장 |
| 비용 | 낮음 | 높음 (초기 도입) |
DBMS의 구성
DBMS의 주요 기능
1
2
3
4
5
6
7
8
9
10
11
| 1. 정의 기능 (Definition)
- 데이터의 타입, 구조, 제약 조건 정의
- DDL (Data Definition Language) 사용
2. 조작 기능 (Manipulation)
- 데이터의 검색, 삽입, 삭제, 수정
- DML (Data Manipulation Language) 사용
3. 제어 기능 (Control)
- 동시성 제어, 보안, 무결성, 회복
- DCL (Data Control Language) 사용
|
DBMS 사용자
1
2
3
4
5
6
7
8
9
| 1. 데이터베이스 관리자 (DBA)
- 스키마 정의, 접근 권한, 성능 모니터링
- 백업/회복 전략 수립
2. 응용 프로그래머
- DML을 사용하여 DB 접근 프로그램 작성
3. 최종 사용자 (End User)
- SQL 또는 응용 프로그램을 통해 DB 사용
|
3단계 스키마 구조 (ANSI/SPARC)
데이터베이스를 3개의 추상화 단계로 분리하여 데이터 독립성을 확보한다.
구조
1
2
3
4
5
6
7
8
9
10
11
| ┌─────────────────────────────────────────────┐
│ 외부 스키마 (External Schema) │
│ 사용자 뷰 1 사용자 뷰 2 사용자 뷰 3 │
│ (View) (View) (View) │
├─────────────── 논리적 독립성 ──────────────────┤
│ 개념 스키마 (Conceptual Schema) │
│ 전체 DB의 논리적 구조 (테이블, 관계, 제약 조건) │
├─────────────── 물리적 독립성 ──────────────────┤
│ 내부 스키마 (Internal Schema) │
│ 물리적 저장 구조 (인덱스, 해시, 파일 구조) │
└─────────────────────────────────────────────┘
|
각 스키마의 역할
1
2
3
4
5
6
7
8
9
10
11
12
13
| 1. 외부 스키마 (External Schema) = 사용자 뷰
- 개별 사용자/프로그래머가 보는 DB의 부분적 논리 구조
- 하나의 DB에 여러 외부 스키마 존재 가능
- View를 통해 구현
2. 개념 스키마 (Conceptual Schema) = 논리 스키마
- 조직 전체의 DB 구조를 기술
- 엔티티, 데이터 타입, 관계, 제약 조건, 접근 권한 정의
- 하나의 DB에 하나의 개념 스키마만 존재
3. 내부 스키마 (Internal Schema) = 물리 스키마
- 물리적 저장 장치에서의 실제 저장 방법
- 인덱스, 레코드 형식, 저장 순서, 압축 등
|
데이터 독립성
논리적 데이터 독립성
1
2
3
4
5
6
7
| 외부 스키마 ←→ 개념 스키마 사이의 독립성
- 개념 스키마가 변경되어도 외부 스키마는 영향받지 않음
- 예: 테이블에 컬럼 추가 → 기존 View는 변경 불필요
개념/외부 매핑 (Conceptual/External Mapping)
→ 외부 스키마의 각 항목이 개념 스키마의 어떤 부분에 대응되는지 정의
|
물리적 데이터 독립성
1
2
3
4
5
6
7
| 개념 스키마 ←→ 내부 스키마 사이의 독립성
- 내부 스키마가 변경되어도 개념 스키마는 영향받지 않음
- 예: 인덱스 추가/삭제 → 테이블 구조는 변경 불필요
개념/내부 매핑 (Conceptual/Internal Mapping)
→ 개념 스키마의 각 항목이 내부 스키마의 어떤 부분에 대응되는지 정의
|
독립성 비교
| 구분 | 논리적 독립성 | 물리적 독립성 |
|---|
| 매핑 | 외부-개념 | 개념-내부 |
| 변경 대상 | 개념 스키마 변경 | 내부 스키마 변경 |
| 영향 없는 대상 | 외부 스키마, 응용 프로그램 | 개념 스키마, 외부 스키마 |
| 구현 난이도 | 어려움 | 상대적으로 쉬움 |
| 예시 | 컬럼 추가/삭제 | 인덱스 변경, 저장 방식 변경 |
데이터 모델
데이터 모델의 분류
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 1. 개념적 데이터 모델 (Conceptual)
- 현실 세계를 추상화하여 표현
- ER 모델 (Entity-Relationship Model)
- 사용자의 관점
2. 논리적 데이터 모델 (Logical)
- DBMS에 의존하는 논리적 구조
├── 관계 데이터 모델 (Relational) → 테이블
├── 계층 데이터 모델 (Hierarchical) → 트리
├── 네트워크 데이터 모델 (Network) → 그래프
└── 객체지향 데이터 모델 (Object-Oriented)
3. 물리적 데이터 모델 (Physical)
- 실제 저장 장치에서의 데이터 표현
- 레코드 구조, 접근 경로 등
|
데이터 모델의 구성 요소
1
2
3
4
5
| 데이터 모델 = 구조 (Structure) + 연산 (Operation) + 제약 조건 (Constraint)
- 구조: 데이터의 정적 성질 (논리적 구조)
- 연산: 데이터의 동적 성질 (CRUD 등)
- 제약 조건: 데이터의 논리적 제약
|
데이터베이스 언어
SQL의 분류
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| -- DDL (Data Definition Language): 스키마 정의
CREATE TABLE Student (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
dept VARCHAR(30)
);
ALTER TABLE Student ADD COLUMN grade INT;
DROP TABLE Student;
-- DML (Data Manipulation Language): 데이터 조작
SELECT name FROM Student WHERE dept = 'CS';
INSERT INTO Student VALUES (1, '홍길동', 'CS');
UPDATE Student SET dept = 'EE' WHERE id = 1;
DELETE FROM Student WHERE id = 1;
-- DCL (Data Control Language): 권한 제어
GRANT SELECT ON Student TO user1;
REVOKE SELECT ON Student FROM user1;
-- TCL (Transaction Control Language): 트랜잭션 제어
COMMIT;
ROLLBACK;
SAVEPOINT sp1;
|
데이터베이스 시스템 아키텍처
중앙 집중식 vs 분산
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 1. 중앙 집중식 (Centralized)
- 하나의 서버에 DB 존재
- 관리 용이, 단일 장애점 (SPOF)
2. 클라이언트-서버 (Client-Server)
- 2-tier: 클라이언트 ←→ DB 서버
- 3-tier: 클라이언트 ←→ 응용 서버 ←→ DB 서버
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Client │←──→│ App │←──→│ DB │
│ (Web) │ │ Server │ │ Server │
└──────────┘ └──────────┘ └──────────┘
3. 분산 (Distributed)
- 여러 노드에 DB 분산 저장
- 가용성 높지만 일관성 유지 어려움
|
질의 처리 과정
1
2
3
4
5
6
7
8
9
10
11
| SQL 질의
↓
구문 분석 (Parsing)
↓
최적화 (Optimization)
↓
실행 계획 생성 (Execution Plan)
↓
실행 (Execution)
↓
결과 반환
|
핵심 정리
1
2
3
4
5
6
| 1. DB = 통합, 저장, 공유, 운영 데이터
2. DBMS = 정의 + 조작 + 제어 기능
3. 3단계 스키마 = 외부 / 개념 / 내부
4. 데이터 독립성 = 논리적 독립성 + 물리적 독립성
5. 파일 시스템 → DBMS: 중복 최소화, 독립성, 동시성, 무결성
6. 데이터 모델 = 구조 + 연산 + 제약 조건
|
면접 포인트
자주 나오는 질문
Q1. 데이터베이스와 파일 시스템의 차이는?
- 파일 시스템: 데이터 중복, 비일관성, 동시 접근 어려움
- DBMS: 중복 최소화, 일관성 유지, 동시성 제어, 보안, 회복 지원
- DBMS는 추가적인 오버헤드가 있지만, 데이터 무결성과 관리 효율성에서 우위
Q2. 3단계 스키마 구조와 데이터 독립성을 설명하라.
- 외부(사용자 뷰) → 개념(전체 논리) → 내부(물리 저장)
- 논리적 독립성: 개념 변경 → 외부 영향 없음
- 물리적 독립성: 내부 변경 → 개념 영향 없음
- 매핑(Mapping)을 통해 스키마 간 변환
Q3. 스키마와 인스턴스의 차이는?
- 스키마 (Schema): 데이터베이스의 구조 정의 (메타데이터). 자주 변경되지 않음
- 인스턴스 (Instance): 특정 시점에 DB에 저장된 실제 데이터. 수시로 변경
- 스키마 = 설계도, 인스턴스 = 현재 상태
Q4. DBA의 역할은?
- 스키마 정의 및 변경
- 접근 권한 관리 (보안)
- 무결성 제약 조건 관리
- 백업/회복 전략 수립
- 성능 모니터링 및 튜닝
Q5. 데이터 모델의 종류를 설명하라.
- 개념적 모델: ER 모델 (현실 세계 → 추상화)
- 논리적 모델: 관계형(테이블), 계층형(트리), 네트워크형(그래프)
- 물리적 모델: 실제 저장 구조 (레코드 형식, 접근 경로)
- 현재 가장 널리 사용되는 것은 관계형 데이터 모델 (RDBMS)