1. 데이터베이스 시스템
- 목적: 사용자에게 데이터에 관한 추상적인 관점을 제공하는 것
- 독립성: 사용자는 데이터가 어떻게 저장되고 유지되는지에 대한 세부 사항을 알 수 없다.
- DBS = DB + DBMS + DL + DBA + 사용자 + DB 컴퓨터
2. 데이터의 관점
1) 데이터의 추상화
- 물리적 단계 - 장치
- 추상화의 최하위 단계
- 데이터가 실제로 어떻게 저장되는지 기술
- 논리적 단계
- 다음 상위 단계
- 어떤 데이터가 저장되었는지, 데이터들 사이에는 어떤 관계가 있는지를 기술
- 뷰 단계 - 사용자
- 추상화의 최상위 단계
- 전체 데이터베이스의 일부분만 기술(원하는 데이터만)
2) 인스턴스와 스키마
- 인스턴스(instance) - 내용
- 정적
- 어느 특정한 순간에 데이터베이스에 저장되어 있는 정보의 모임
- 스키마(schema) - 구조
3. 3단계 스키마
스키마는 데이터베이스의 구조(개체, 속성, 관계)에 대한 정의와 이에 대한 제약 조건 등을 기술한 것으로 컴파일 되어 데이터 사전에 저장한다.
1) ANSI/SPARC 3 Level Architecture
관계형 DBMS는 모두 2,3단계 스키마 아키텍처를 제공한다.
- 외부 스키마
- 사용자 논리 단계(user logical level)
- 여러 개 존재, 서브 스키마
- 개념 스키마
- 조직 논리 단계(community logical level)
- 모든 데이터 개체, 관계, 제약조건, 접근권한, 무결성 규칙, 보안 정책 등을 명세
- 한 개만 존재
- 내부 스키마
- 물리적 저장장치 관점에서 전체 데이터베이스가 저장되는 방법을 명세
예) 내부 레코드 형식, 인덱스 유무, 저장 데이터 표현 방법, 내부 레코드 물리적 순서 등
- 한 개만 존재
2) 3단계 간의 사상
- 사상(mapping)

4. 사용자
1) 일반 사용자(user)
- 비절차적 DML(질의어)을 통해 데이터베이스 접근 가능
2) 응용 프로그래머(application programmer)
- host 프로그래밍 언어에 DML을 삽입시켜 데이터베이스에 접근
3) 데이터베이스 관리자(DBA)
- DDL과 DCL을 통해 데이터베이스를 정의하고 제어하는 사람/그룹
- 역할
- 스키마 정의
- 저장 구조와 액세스 방법의 정의
- 스키마 및 물리 구조의 수정
- 데이터 액세스 권한의 인정
- 루틴 유지 및 관리
5. 데이터 언어
데이터 언어에는 DDL, DML, DCL이 있다.
1) DDL
정의
- 데이터 정의 언어(DDL: Data Definition Language)
- DBA가 사용
- 사용자에게는 보이지 않는 데이터베이스 스키마 구현 상의 세부 사항을 정의
- 스키마에 사용되는 개체 정의, 속성, 개체 간의 관계, 스키마 간에 존재하는 사상 명세 등을 표현
- DDL 결과는 메타 데이터(meta data)를 저장하는 데이터 사전(Data Dictionary)에 위치
제약 조건
- 도메인 제약조건
- Domain Constraints
- 가능한 값들의 도메인은 모든 속성들(정수형, 문자형 날짜 등)과 연관되어 있어야 한다.
- 참조 무결성 제약조건
- Refential Integrity Constraints
- 주어진 속성들의 집합에 대한 릴레이션의 한 값이 다른 릴레이션에 대한 속성 집합의 값으로 반드시 나타나야 할 경우가 있다. 참조 무결성이 위반되었을 때의 기본적인 절차는 위반을 유발시킨 동작을 거부하는 것이다.
- 엔티티 무결성 제약조건
- Entity Integrity Constraints
- 각 튜플을 구분하는 필드가 존재해야 한다. 보통 기본키로, 기본키 필드는 2개 이상의 튜플이 동일한 값을 가질 수 없고, null값을 가질 수 없다.
- 주장
- Assertions
- 데이터베이스가 항상 만족시켜주어야 하는 조건. 도메인 제약조건과 참조 무결성 제약조건은 주장의 특수한 형태이다.
- 권한
- Authorization
- 데이터베이스의 많은 데이터들에 대해 사용자들마다 접근을 다르게 하고 싶을 때의 차별
DSDL
- 데이터 저장 정의어(DSDL: Data Storage Definition Language)
- 내부 스키마(저장 구조와 액세스 방법) 명세
2) DML
정의
- 데이터 조작 언어(DML: Data Manipulation Language)
- 사용자가 적절한 데이터 모델로 구성된 데이터를 접근하거나 조작할 수 있도록 하는 언어
구분
- 절차적 데이터 조작어
- procedural
- 무슨(what) 데이터와 그 데이터를 어떻게(how) 접근하는지를 명세해야 되는 초급 데이터 언어
→ 한 번에 하나의 레코드 검색
- host 언어
- 내장 SQL, 저장 프로시저, 사용자 정의 함수
- 비절차적 데이터 조작어
- non-procedural
- 무슨(what) 데이터를 원하는지만 명세하는 고급 데이터 언어(선언적 언어)
→ 한번에 여러 개의 레코드 검색
- 임피던스 불일치: 분해 후 반복 방식으로 해결. 커서(cursor) 이용하여 데이터를 한 단위씩 읽기/쓰기
"임피던스 불일치"는 데이터베이스 시스템에서 데이터를 처리하는 방식이나 구조가 서로 다른 경우를 가리킨다. 예를 들어, 데이터를 처리하는 애플리케이션의 요구사항과 데이터베이스 시스템의 구조가 서로 일치하지 않는 경우 발생할 수 있다.
3) DCL
- 데이터 제어 언어(DCL: Data Control Language)
- 데이터를 보호하고 관리하는 목적으로 사용되는 언어
| 구분 | SQL 명령어 |
|---|
| DDL | CREATE, ALTER, DROP, RENAME, TRUNCATE |
| DML | SELECT, INSERT, UPDATE, DELETE |
| DCL | GRANT, REVOKE, DENY |
6. DBMS

| 구분 | 설명 |
|---|
| 질의어 처리기 | 질의문을 파싱, 분석, 컴파일하여 코드 생성 후 런타임 데이터베이스 처리기를 호출하면서 이것을 실행할 수 있도록 만든다. |
| DDL 컴파일러 | DDL문을 해독하여 데이터 사전 내에 저장한다. |
| DML 예비 컴파일러 | 응용 프로그램에 삽입된 DML을 추출한다. |
| DML 컴파일러 | DML 명령어를 목적 코드로 변환한다. |
| 런타임 DB 처리기 | 데이터베이스 연산을 저장 데이터 관리자를 통해 디스크에 저장된 데이터베이스에 실행한다. |
| 저장 데이터 관리자 | 디스크에 있는 데이터베이스 접근을 제어한다. |
| 트랜잭션 관리자 | 시스템에 고장이 나더라도 데이터베이스가 일관성있는 상태를 유지하도록 보장한다.
동시에 실행되는 트랜잭션들이 충돌없이 실행됨을 보장한다. |
| 파일 관리자 | 디스크 공간의 할당과 디스크 상에 저장된 정보 표현을 위해 자료 구조를 관리한다. |
| 버퍼 관리자 | 버퍼 공간의 할당을 책임진다. |
7. 데이터 사전
- 데이터 사전(DD: Data Dictionary)
- 일반 질의어로 검색 가능, 갱신 불가능
저장 정보
- 릴레이션 이름
- 속성 이름, 속성의 도메인과 길이
- 속성 이름의 무결성 제약조건
- 뷰의 이름과 뷰에 대한 정의들
- 사용자 정보 유지
- 릴레이션에 대한 정적이고 설명적 정보 저장
- 릴레이션 튜플 수
- 릴레이션 저장 메서드
- 릴레이션 저장 구조, 위치
- 인덱스에 대한 정보
- 이름
- 인덱스된 릴레이션 이름
- 인덱스가 정의된 속성
- 인덱스 형태, 높이
- 트리거
데이터 디렉터리(Data Directory)
- 데이터 사전에 저장된 데이터를 실제로 접근하는데 필요한 정보를 관리•유지하는 시스템
데이터 사전은 사용자와 시스템이 공동으로 접근할 수 있지만, 디렉터리는 시스템만 접근할 수 있다.
참고
데이타베이스 시스템