스키마
데이터베이서 구조는 스키마로 구성된다. 스키마(Schema)란 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것이다. 스키마에 따라 저장된 데이터를 인스턴스라 부른다. 스키마는 자주 변경되지 않지만 인스턴스는 자주 변경된다.
3단계 데이터베이스 구조
미국의 표준화 기관인 ANSI/SPARC은 사용자와 데이터베이스의 복잡한 내부 구조를 분리할 수 있도록 3단계 데이터베이스 구조(3-level database architecture)를 제안했다. 3단계 데이터베이스 구조는 데이터베이스 구조를 3가지 단계별로 추상화한다.
- 외부 단계 (external level) : 데이터베이스 구조를 사용자(응용 프로그램) 입장에서 추상화한다. 추상화 되어진 데이터베이스 구조가 외부 스키마(View)이다. 외부 스키마란 개념 스키마의 일부분이다. 사용자는 조직 내 모든 데이터 구조를 알 필요 없이 자신과 관계있는 데이터의 구조만 알면 된다.
- 개념 단계 (conceptual level) : 데이터베이스 구조를 조직 전체의 입장에서 추상화한다. 추상화 되어진 데이터베이스 구조가 개념 스키마이다. 개념 스키마란 데이터의 논리적 구조와 제약 조건을 정의한 것이다. 개념 스키마는 DB에 저장되는 모든 데이터의 논리적 구조를 결정한다.
- 내부 단계 (internal level) : 데이터베이스 구조를 저장 장치의 입장에서 추상화한다. 추상화 되어진 데이터베이스 구조가 내부 스키마이다. 내부 스키마는 데이터의 물리적 구조와 제약 조건을 정의한 것이다. 내부 스키마는 DB에 저장되는 모든 데이터의 물리적 구조를 결정한다.
결국 외부, 개념, 내부 스키마는 같은 데이터베이스의 데이터 구조와 제약 조건을 정의한 것으로 내용이 같다. 단지 상위 단계의 스키마일수록 구체적인 구조가 감춰져 있을뿐이다. 왜 데이터베이스 구조를 3단계로 추상화할까? 아래의 2가지 이유 때문이다.
- 사용자 편의 증가 : 사용자(응용 프로그램)은 외부 스키마만 파악하면 DB를 쓸 수 있다. 상품 분석팀이 외부 스키마의 고객 번호 정보를 가져온다 해보자. 그럼 DBMS의 외부/개념 맵핑에 의해 개념 스키마의 고객번호로 대응되고 다시 DBMS의 개념/내부 맵핑에 의해 내부 스키마의 번호 필드로 대응된다. DBMS는 이 번호 필드의 정보를 제공함으로써 사용자는 내부 구조를 몰라도 데이터를 가져올 수 있다. 만약 추상화 되어 있지 않다면 사용자는 파일의 물리적인 구조를 파악하고 데이터를 가져와야한다. 상당히 번거로울 수 밖에 없다. 이것은 개념 스키마를 작성하는 DB 관리자에게도 해당된다.
- 데이터 독립성 : 데이터 독립성이 유지된다. 데이터 독립성이란 하위 단계의 스키마가 변경되어도 상위 단계의 스키마가 영향을 받지 않는 특성이다. 데이터 독립성을 통해 데이터베이스의 구조가 변경되도 아무런 영향이 없도록 한다. 데이터 독립성은 논리적 데이터 독립성과 물리적 데이터 독립성으로 나뉜다.
논리적 데이터 독립성은 개념 스키마가 변경되어도 외부 스키마가 변경되지 않는 특성이다. 위 그림에서 개념 스키마의 연락처 이름이 전화번호로 바뀌는 경우 외부 스키마의 연락처가 개념 스키마의 전화번호와 대응한다고 외부/개념 맵핑 정보만 수정하면 된다. 따라서 개념 스키마가 변경되어도 외부 스키마는 변하지 않는다.
물리적 데이터 독립성은 내부 스키마가 변경되어도 개념 스키마가 변경되지 않는 특성이다. 위 그림에서 내부스키마의 주소 필드와 연락처 필드의 위치를 바꾸어도 개념/내부 맵핑 정보만 적절히 수정하면 된다. 따라서 내부 스키마가 변경되어도 개념 스키마는 변하지 않는다.
데이터 사전 (시스템 데이터 베이스)
세 가지 종류(외부,개념,내부)의 스키마, 스키마 간의 맵핑 정보, 제약 조건 등의 데이터에 관한 데이터(data about data) 즉 메타데이터는 데이터 사전에 저장된다. 데이터 사전도 DB의 일종이기에 시스템 데이터베이스라 부르며 이와 구분해 사용자가 실제로 이용하는 데이터가 저장된 DB를 사용자 데이터베이스라 부른다. 데이터 사전은 DBMS에 의해 생성되고 유지되므로 사용자가 접근할 일은 거의 없으며 접근이 가능하긴 하지만 검색만 가능하다.
데이터 언어
DBMS에 전달하는 명령어를 데이터 언어라고 한다. 데이터 언어는 3가지로 구분된다.
- 데이터 정의어 (스키마를 정의하고 수정 또는 삭제를 지시)
- 데이터 조작어 (데이터의 삽입 · 삭제 · 수정 · 검색 등의 처리를 지시)
- 데이터 제어어 (무결성, 보안, 회복, 동시성을 보장하기 위해 필요한 규칙이나 기법을 정의)
DB 관리자(DBA)는 주로 데이터 정의어와 제어어를 사용해 DB 설계, 보안, 성능 분석 등의 DB 관리를 수행하며 응용 프로그래머는 주로 데이터 조작어를 사용해 DB로부터 데이터를 가져오거나 저장한다.
DBMS의 구성
DBMS의 주요 구성은 아래와 같다.
'Computer Science > DataBase' 카테고리의 다른 글
[데이터베이스 - 6] SQL (0) | 2022.09.29 |
---|---|
[데이터베이스 - 5] 관계 데이터 모델 (0) | 2022.09.29 |
[데이터베이스 - 4] 데이터베이스 설계 (0) | 2022.09.23 |
[데이터베이스 - 2] DBMS (0) | 2022.09.21 |
[데이터베이스 - 1] 데이터베이스란? (0) | 2022.09.20 |