스키마 (뜻 : 계획, 도식)
- 데이터베이스의 구조(개체, 속성, 관계)와 제약 조건에 대한 정의이다. 메타 데이터라고도 한다.
- 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하고,
데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경 할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다. - 한마디로 DBMS는 스키마를 참조하여 사용자의 명령을 수행하는 것이다.
즉, 데이터베이스 어떻게 설계할지에 대한 계획 즉, 구조와 제약 조건을 정하는 것이다.
구체적으로 데이터는 어떤 것들로 구성하며, 데이터들은 어떤 테이블에 저장되며, 여러 테이블들을 어떤 관계를 가지고 있는지를 계획한다.
※ 참고
scheme과 schema는 거의 같은 의미지만 scheme은 구체적이고 확정된 계획, schema는 대략적인 계획이나 도식을 의미한다.
아래는 데이터베이스 구조를 보여주는 이미지인데, 이와 같이 데이터베이스는 여러 스키마로 이뤄져 있다.
스키마는 아래와 같이 여러 테이블의 구조를 설계한 것이다.
스키마 특징
- 스키마는 데이터 사전(Data Dictionary)에 저장되며, 다른 이름으로 메타데이터라고도 한다.
- 스키마는 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어진다.
- 스키마는 시간에 따라 불변인 특성을 갖는다.
- 스키마는 데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.
* 데이터 사전은 데이터베이스 전반에 대한 정보를 제공하는 테이블 및 뷰들의 집합이다.
* 인스턴스는 스키마에 대한 실제 데이터를 의미하며, 인스턴스들이 모여 데이터베이스의 상태가 된다.
스키마 3계층
외부(서브) 스키마(External Schema) = 사용자 뷰
- 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.
- 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Sub Schema)라고도 한다.
- 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며 하나의 외부 스키마를 여러개의 응용 프로그램이나 사용자가 공용할 수도 있다.
- 예를 들어 네이버 데이터베이스는 네이버 메일 스키마, 네이버 카페 스키마,네이버 블로그 스키마 등이 존재할 것이다.
- 또한 사용자는 데이터베이스에서 데이터를 사용하는 사람이므로 응용 프로그래머라고 볼 수 있다.
- 사용자는 어떤 데이터가 필요한지를 결정하기 때문에 쿼리를 이용해서 데이터를 조작할 수 있다.
- 즉, 응용 프로그래머는 외부 스키마를 통해 구조를 확인하고 DML을 사용해서 데이터를 이용한다.
개념 스키마(Conceptual Schema) = 전체적인 뷰
- 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
- 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
- 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것으로, 단순히 스키마(Schema)라고 하면 개념 스키마를 의미한다.
- 데이터베이스 관리자(DBA)에 의해서 구성된다.
- 즉, DBA는 개념 스키마를 통해서 전체적인 구조의 개념를 확인하고 DDL과 DCL을 사용해서 구조를 설계한다.
내부 스키마(Internal Schema) = 저장 스키마(Storage Schema)
- 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다.
- 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타낸다.
- 데이터의 내부 즉, 데이터의 필드 이름이 무엇이고, 해당 필드는 몇 Byte이며 인덱스가 있는지 등을 정의한다.
- 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.
또다른 정의
스키마는 3계층 스키마로 나누어져 구성되어있고, 이 각각의 스키마는 결국 데이터베이스의 구조와 제약조건에 대한 전반적인 명세를 기술한 것을 의미한다. 3계층으로 스키마를 나눈 이유는 관점에 따라서 분류한 것이다.
- 외부스키마
- 개인의 입장, '서브스키마'라고도 한다, 사용자 뷰를 가리킨다.
- 하나의 외부스키마는 여럿이 공유 가능하며, 하나의 DB시스템에 여러 개의 외부스키마가 존재 가능
- 내부스키마
- 시스템 프로그래머나 설계자의 관점에서 바라보는 스키마,
- 데이터베이스의 물리적 구조를 가리킴(= 실제 저장방법을 기술하는 물리적인 저장장치와 관련됨)
- 개념스키마
- 조직 전체의 입장, 전체적인 뷰를 가리킨다.
- 개체간의 관계와 제약조건을 나타내고,
- 데이터베이스의 접근권한/보안/무결성 규칙에 대한 명세를 정의함,
일반적으로 '스키마'라는 내부스키마를 가리킴, 내부스키마는 DBA가 만듦, 데이터베이스의 전체적인 구조로써 하나만 존재해야 함
참고