1. DBMS의 정의와 궁극적인 목적
1) DBMS의 정의
- DB 관리자와 DB 사용자 및 응용 프로그램과 DB 사이의 중재자로서, 데이터베이스에 대한 모든 접근을 처리해주는 소프트웨어 시스템이다.
- DB의 정의와 조작, 제어 기능을 제공하며, 여러 사용자와 응용 프로그램이 DB를 공용할 수 있도록 관리해 주는 소프트웨어 시스템이다.
2) DB의 궁극적인 목적
- 응용 프로그램이 데이터에 종속되지 않는 데이터 독립성(Data Independency)을 제공하는 것이다.
- 즉, DB의 구조를 변경해도 응용 프로그램에 영향을 주지 않고, 반대로 응용 프로그램을 변경해도 DB에 영향을 주지 않도록 하는 것이 목적이다.
2. DBMS의 필수 기능
1) 데이터 정의(Definition) 기능
- 다양한 응용 프로그램과 DB가 서로 인터페이스 할 수 있는 수단을 제공한다.
- 하나의 저장된 DB를 기초로 여러 사용자와 응용 프로그램의 다양한 데이터 요구를 지원할 수 있도록 DB구조를 정의하는 기능을 제공한다.
2) 데이터 조작(Manipulation) 기능
- 사용자와 DB 간의 인터페이스를 위한 수단을 제공한다.
- DB에 저장된 데이터의 검색, 삽입, 삭제, 갱신 등과 같은 DB 연산을 처리하는 기능을 제공한다.
3) 데이터 제어(Control) 기능
- 공용으로 관리되는 DB의 내용을 정확하고 안전하게 유지할 수 있도록, 다음 3가지 제어 기능을 제공한다.
a) 데이터의 삽입, 삭제 등 DB 변경 시에 데이터의 무결성 및 일관성 유지 가능
b) 권한이 부여된 사용자만 허용된 데이터에 접근할 수 있도록 접근 권한 검사 기능
c) 여러 사용자가 DB에 동시에 접근할 수 있도록 동시성(Concurrency) 제어 기능
3. 데이터 모델링의 3단계
- DBMS의 구현을 위한 추상적인 설계 표준으로서, DB에 대한 여러 사용자의 관점과 DB가 실제로 표현되는 방식(즉, 물리적 관점)을 분리시킬 수 있도록, DB 구조를 크게 외부 단계, 개념 단계, 내부 단계라는 3개 단계로 구분하였다. [ANSI/SPARC 3단계 구조]
1) 외부 스키마(External Schema)
- 사용자 개개인의 관점에서 정의한 DB 스키마
- 여러 개 존재함
- 서브스키마(Subschema)라고도 칭함
2) 개념 스키마 (Conceptual Schema)
- 범 기관적인 관점에서 정의한 DB 스키마
- 모든 외부 스키마가 요구하는 전체적인 DB 구조와 제약 조건을 포함함
- 단 하나만 존재함
- 그냥 스키마(Schema)라고도 칭함
3) 내부 스키마 (Internal Schema)
- 저장 장치 관점에서 정의한 DB 스키마
- 개념 스키마에 대한 저장 구조를 정의한 것
- 단 하나만 존재함
4. 데이터 독립성
1) 데이터 독립성(Data Independency)이란?
- 응용 프로그램이 데이터에 종속되지 않는 것을 의미한다.
- 즉, DB의 논리적 구조나 물리적 구조가 변경되어도 응용 프로그램에 영향을 주지 않는 것을 의미하며, 논리적 데이터 독립성과 물리적 데이터 독립성으로 구분할 수 있다.
2) 논리적 데이터 독립성 (Logical Data Independency)
- 응용 프로그램에 영향을 주지 않고 DB의 논리적 구조(개념 스키마)를 변경할 수 있는 것을 의미한다.
- 외부/개념 단계 간의 사상에 의해 보장된다.
3) 물리적 데이터 독립성(Physical Data Independency)
- 응용 프로그램이나 DB의 논리적 구조에 영향을 주지 않고 DB의 물리적 구조(파일 편성, 데이터 접근 방법 등)를 변경할 수 있는 것을 의미한다.
- 개념/내부 단계 간의 사상에 의해 보장된다.
5. 무결성 제약 조건
DB에 저장된 데이터의 정확성과 일관성 유지를 위해서 DB가 항상 만족해야 하는 조건
무결성 제약 조건 정의 방법
- 묵시적 정의
- 릴레이션을 정의할 때 기본 키와 외래 키를 정의하면, 개체 무결성과 참조 무결성이 묵시적으로 정의된다.
- 명시적 정의
- 개체 무결성과 참조 무결성 이외에, 데이터의 정확성과 일관성 유지를 위해서 특정 속성이 만족해야 하는 무결성 제약 조건(NOT NULL, UNIQUE, CHECK 등)은 명시적으로 정의해야 한다.