데이터베이스 시스템 = 데이터베이스 + DBMS(데이터베이스 관리 시스템) + 데이터 모델
데이터베이스 : 하드디스크에 저장된 데이터
DBMS : 주기억장치에 저장된 소프트웨어
데이터 모델 : 데이터가 저장되는 기법(논리적 개념)
데이터 정의어
CREATE, ALTER, DROP과 같이 DBMS에 저장된 테이블 구조를 정의
데이터 조작어
SELECT, INSERT, DELETE, UPDATE와 같이 데이터를 검색, 삽입, 삭제, 수정
데이터 제어어
GRANT, REVOKE와 같이 데이터의 사용 권한을 관리
이 중 가장 핵심은 query문, 즉 SELECT이다.
SELECT 뭐시기 FROM 테이블 이름 WHERE 조건;
일반 사용자
프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근
응용 프로그래머
일반 사용자가 사용할 수 있도록 프로그램을 개발하는 사람
SQL사용자
응용 프로그램으로 구현되어 있지 않은 업무를 SQL을 사용하여 처리
데이터베이스 관리자(DBA: Database Administrator)
데이터 설계, 구현, 유지보수의 전 과정을 담당
DML컴파일러 : SQL을 번역(SQL 사용자의 SQL질의에 대응)
DDL컴파일러 : SQL을 번역(DBA의 데이터베이스 스키마에 대응)
Embedded DML컴파일러 : 응용 프로그램에 삽입된(embedded) SQL을 번역
질의처리기 : 번역된 SQL을 처리하는 알고리즘
트랜잭션 관리자
트랜잭션 : 데이터베이스를 처리하는 프로그램의 단위
파일 관리자
버퍼 관리자
데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법
데이터들 간의 관계를 표현하는 방법
포인터 사용(계층, 네트워크 데이터 모델)
데이터 a에 데이터 b가 저장된 포인터 값을 저장하는 방법
데이터를 직접 찾아갈 수 있어서 프로그램 속도는 빠르다
포인터를 다루는 프로그래밍을 해야 하기 때문에 응용 프로그램 개발 속도 면에서 느리다
속성 값 사용(관계 데이터 모델)
객체식별자 사용(객체 데이터 모델)
데이터 a에 데이터 b의 고유 식별자인 오브젝트 아이디(oid)를 저장하는 방법
객체지향 언어의 상속, 캡슐화의 개념을 도입
최근에는 관계 데이터 모델을 기본으로 하고 객체 데이터 모델의 장점을 일부 수용한 객체-관계 데이터 모델로 데이터베이스 시스템이 발전 중이다.
외부단계
일반 사용자나 응용 프로그래머가 접근하는 계층
전체 데이터베이스 중에서 하나의 논리적인 부분
여러 개의 외부 스키마(서브 스키마/뷰)가 있을 수 있다
개념단계
전체 데이터베이스의 정의
통합 조직별로 하나만 존재하며 DBA가 관리한다
하나의 데이터베이스에는 하나의 개념 스키마만 있다
개념 스키마는 저장장치에 독립적으로 기술된다
데이터와 관계, 제약사항, 무결성에 대한 내용이 포함된다.
내부단계
물리적 저장장치(하드디스크)에 데이터베이스가 실제로 저장되는 방법(혹은 구조)
역시 하나의 데이터베이스에는 하나의 내부 스키마만 있다
DBMS는 매핑을 통하여 각 단계 간 대응 관계를 정의한다.
외부/개념 매핑
외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킨다
개념/내부 매핑
개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킨다
하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 하는 것
논리적 데이터 독립성(외부 단계와 개념 단계 사이의 독립성)
개념 스키마가 변견되어도 외부 스키마에는 영향을 미치지 않도록 지원
(=논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념)
ex) 개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없다
물리적 데이터 독립성(개념 단계와 내부 단계 사이의 독립성)
저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원
ex) 성능 개선을 위해 물리적 저장장치를 재구성할 경우 개념 스키마나 응용 프로그램 같은 외부 스키마에 영향이 없다
논리적 독립성보다 구현하기 쉽다