Supplementary Materials
Database System Concepts (7th Edition)
1. Introduction
1. 데이터베이스 시스템
DBS (Database System; 데이터베이스 시스템)
- 조직에 필요한 정보를 제공하는 전체 환경이다.
DBS의 구성
- 하드웨어
- DB
- DBMS
- 데이터 모델
- 응용 프로그램/사용자
vs. 파일 시스템
초기의 파일 시스템 방식에는 다음과 같은 문제가 있다.
- 응용 프로그램마다 별도의 파일을 관리하면 다음 문제가 발생한다.
- 데이터 중복성: 같은 데이터가 여러 파일에 반복 저장
- 데이터 불일치: 한 파일만 수정하면 파일마다 값이 달라짐
- 데이터 종속성: 파일 구조를 변경하면 프로그램도 수정해야 함
- 동시성 제어·보안·회복 기능 부족
- 응용 프로그램 개발과 유지보수가 어려움
DB/DBMS의 장점
- 데이터 중복성 해결
- 데이터 일관성 및 무결성 유지
- 데이터 독립성 확보
- 동시성 제어, 보안, 백업 및 회복 지원
- 데이터 표준화
- 응용 프로그램 개발 비용 감소
DB/DBMS의 단점
- 도입·교육·운영 비용이 큼
- 백업과 회복 방법이 복잡함
- 중앙 집중 관리로 인해 장애 발생 시 전체 업무가 중단될 수 있음
따라서 응용이 매우 단순하고 변경 가능성이 작으며, 여러 사용자가 동시에 접근할 필요가 없다면 DBMS를 사용하지 않는 편이 나을 수도 있다.
데이터 모델
2. 데이터
데이터와 정보
- 데이터(data): 현실에서 관찰·측정하여 수집한 사실이나 값
- 정보(information): 의사결정에 활용할 수 있도록 데이터를 처리한 의미 있는 결과
- 즉, 데이터는 원재료이고, 정보는 데이터를 해석·가공한 결과이다.
데이터의 형식
정형 데이터 (Structured Data)
- 고정된 구조를 가진다.
- 예: 관계형 데이터베이스의 테이블
반정형 데이터 (Semi-structured Data)
- 구조 정보가 데이터 안에 포함된다.
- 예: XML, JSON, HTML
비정형 데이터 (Unstructured Data)
- 정해진 구조가 없다.
- 예: 텍스트, 이미지, 신호, 음성, 영상 등
데이터베이스
DB (Database; 데이터베이스)
- 데이터의 집합
- 특정 조직의 여러 사용자가 공유할 수 있도록, 서로 연관된 운영 데이터(operational data)를 구조적으로 통합하여 저장한 것이다.
DB의 네 가지 핵심 성격
- 공유 데이터: 여러 사용자가 함께 소유하고 이용
- 통합 데이터: 중복과 중복으로 인한 불일치를 최소화
- 저장 데이터: 컴퓨터가 접근할 수 있는 매체에 저장
- 운영 데이터: 조직의 주요 업무 수행에 지속적으로 필요
DB의 특징
- 실시간 접근성(real time accessibility): 사용자의 요구에 즉시 응답
- 계속적인 변화(continuous change): 삽입·삭제·수정을 통해 최신 상태 유지
- 동시 공유(concurrent sharing): 여러 사용자와 프로그램이 동시에 접근
- 내용 기반 참조(reference by content): 물리적 위치가 아니라 데이터 값으로 검색
메타데이터
데이터 사전 (Data Dictionary), 시스템 카탈로그 (System Catalog)
- 데이터베이스의 스키마 정보를 저장한다.
- 테이블, 속성, 기본키, 무결성 조건, 제약 조건, 접근 권한 등의 메타데이터를 저장한다.
3. 구조
스키마와 인스턴스
| 개념 | 의미 | 프로그래밍 비유 |
|---|---|---|
| 물리 스키마 | 데이터가 실제로 저장되는 구조 | 내부 저장 방식 |
| 논리 스키마 | 데이터베이스의 전체 논리적 구조 | 자료형 |
| 인스턴스 | 특정 시점에 저장된 실제 데이터 | 변수의 현재 값 |
스키마 (schema), 내포 (intension)
- 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한다.
- 데이터베이스가 가질 수 있는 모든 가능한 상태의 틀이다.
- 구조 자체이므로 자주 변경되지 않는다.
인스턴스 (instance), 외연 (extension)
- 특정 시점에 실제로 저장되어 있는 데이터이다.
- 삽입·삭제·수정에 따라 계속 변화한다.
예
EMPLOYEE(EMPNO, EMPNAME, SALARY)는 스키마이다.- 그 테이블에 현재 저장된 직원 행들은 인스턴스이다.
ANSI/SPARC 3단계 아키텍처
ANSI (American National Standards Institute; 미국 국립 표준 협회) SPARC (Standards Planning And Requirements Committee; 표준 기획 및 요구사항 위원회)
데이터베이스를 세 가지 관점으로 나누어 복잡성을 줄이고 데이터 독립성을 확보하는 구조다. 데이터 독립성은 상위 단계의 스키마나 응용 프로그램에 영향을 주지 않고 하위 단계의 구조를 변경할 수 있는 성질이다.
| 단계 | 관점 | 스키마 수 | 내용 |
|---|---|---|---|
| 외부 단계 | 개별 사용자 | 여러 개 | 사용자에게 필요한 데이터만 보여주는 뷰 |
| 개념 단계 | 조직 전체 | 1개 | 전체 논리 구조, 관계, 제약조건, 보안 정책 |
| 내부 단계 | 저장 장치 | 1개 | 레코드 구조, 필드 크기, 접근 경로 등 물리 구조 |
사용자 질의는 보통 다음 방향으로 변환된다.
외부 스키마 → 개념 스키마 → 내부 스키마 → 저장 데이터
외부 단계 (External Level), 뷰 단계
외부 스키마 (External Schema), 서브 스키마
- 각 사용자가 어떻게 데이터베이스를 보는가를 기술한다. (개념 단계를 보는 관점)
- 동일한 개념 단계로부터 다수의 서로 다른 뷰가 제공될 수 있다.
개념 단계 (Conceptual Level), 논리적 단계
외부/개념 사상 (External/Conceptual Mapping)
- 외부 스키마와 개념 스키마 간의 대응 관계를 정의한다.
- 논리적 데이터 독립성(Logical Data Independence)을 제공한다.
- 개념 스키마가 수정되어도 외부 스키마에 영향을 주지 않음
- 예: 전체 테이블에 새로운 속성을 추가해도 기존 사용자 화면은 그대로 사용
- → 개념 구조 변경으로부터 사용자 뷰 보호
개념 스키마 (Conceptual Schema), 논리 스키마
- 데이터베이스의 논리적 구조(어떤 데이터가 저장되어 있으며, 어떤 관계가 존재하고, 어떤 무결성 제약조건이 명시되어 있는가)를 기술한다.
- 데이터베이스마다 오직 한 개의 개념 단계/개념 스키마가 존재한다.
내부 단계 (Internal Level), 물리적 단계
개념/내부 사상 (Conceptual/Internal Mapping)
- 개념 스키마와 내부 스키마 간의 대응 관계를 정의한다.
- 물리적 데이터 독립성(Physical Data Independence)을 제공한다.
- 내부 스키마가 수정되어도 개념·외부 스키마에 영향을 주지 않음
- 예: 파일 저장 방식을 변경하거나 인덱스를 생성·삭제해도 응용 프로그램은 그대로 사용
- → 저장 구조 변경으로부터 논리 구조와 프로그램 보호
내부 스키마 (Internal Schema), 물리 스키마
- 데이터베이스에 어떤 데이터가 어떻게 저장되어 있는가(인덱스, 해싱 등과 같은 접근 경로, 데이터 압축 등)를 기술한다.
- 이 단계에서는 효율성을 가장 중요하게 고려하며, 효율적인 데이터베이스를 제공하기 위한 저장 구조가 선택된다.
4. DBMS
DBMS (Database Management System; 데이터베이스 관리 시스템)
- 데이터베이스를 관리하는 시스템
- 데이터베이스를 정의·생성하고, 사용자의 질의를 처리하며, 데이터 접근과 공유를 관리하는 소프트웨어 패키지다.
- 데이터의 저장 방식과 접근 패턴에 따라 다양한 DBMS가 존재한다.
DBMS의 기본 기능
- 정의 기능: 데이터베이스의 스키마(구조) 정의
- 조작 기능: 데이터의 연산 (삽입·검색·수정·삭제)
- CRUD (Create, Read, Update, Delete)
- 제어 기능: 데이터의 일관성, 독립성, 무결성과 동시성 제어, 보안, 회복 관리
데이터베이스 언어
(1) DDL
DDL (Data Definition Language; 데이터 정의어)
-
스키마와 데이터 구조를 생성·변경·삭제한다.
CREATE TABLE: 테이블 생성ALTER TABLE: 테이블 구조 변경DROP TABLE: 테이블 삭제CREATE INDEX: 인덱스 생성TRUNCATE
-
DDL로 정의된 구조는 시스템 카탈로그에 기록된다.
(2) DML
DML (Data Manipulation Language; 데이터 조작어)
- 실제 데이터를 삽입·검색·수정·삭제한다.
INSERT ... INTO: 삽입SELECT ... FROM: 검색 - 데이터 질의어(DQL)UPDATE ... SET: 수정DELETE ... FROM: 삭제
(3) DCL
DCL (Data Control Language; 데이터 제어어)
- 무결성·보안·회복·동시성 제어를 위한 명령이다.
GRANT ... TO,REVOKE ... FROM: 사용자 권한 부여 및 취소COMMITROLLBACKSET TRANSACTION
TCL (Transaction Control Language; 트랜잭션 제어어)
- 예: COMMIT, ROLLBACK
인터페이스
DB와 응용 프로그램을 연결하는 표준 인터페이스이다.
ODBC (Open Database Connectivity)
- 여러 종류의 DBMS에 접근하기 위한 범용 API
JDBC (Java Database Connectivity)
- Java 프로그램에서 데이터베이스에 접근하기 위한 API
구성요소
DDL 컴파일러
- DDL 명령을 처리
- 테이블을 생성
- 테이블 명세를 시스템 카탈로그에 저장
질의 처리기
- DML 질의를 분석
- 가장 효율적인 실행 방법을 선택
- 실행 가능한 내부 코드로 변환
런타임 DB 관리기
- 디스크에 저장된 실제 데이터베이스에 접근
- 질의 처리기의 실행 요청을 수행
트랜잭션 관리기
- 동시성 제어: 여러 사용자의 동시 접근을 안전하게 처리
- 회복: 장애가 발생해도 데이터 일관성을 유지
5. 데이터베이스 사용자
오퍼레이터 (Operator)
- DBMS가 실행되는 컴퓨터 시스템과 전산실을 관리한다.
데이터베이스 설계자 (Database Designer)
- CASE(Computer-aided Software Engineering) 도구 등을 이용해 데이터베이스를 설계하고, 일관성을 높이기 위해 정규화를 수행한다.
데이터베이스 관리자 (DBA; Database Administrator)
- 데이터베이스 시스템의 설계·구현·운영·유지보수를 총괄한다.
- 스키마 생성과 변경
- 무결성 제약조건 정의
- 사용자 권한과 역할 관리
- 저장 구조와 접근 방법 정의
- 성능 감시와 분석
- 백업과 회복
- 표준화 시행
응용 프로그래머 (Application Programmer)
- 프로그래밍 언어와 SQL을 사용하여 사용자 인터페이스와 데이터 처리 로직을 개발한다.
최종 사용자 (End User)
- 데이터를 검색·삽입·삭제·수정하거나 보고서를 생성한다.