본문 바로가기

전공지식/데이터베이스

[데이터베이스] 스키마의 개념 & 특징

0. 개요


스키마란 어떻게보면 굉장히 기본적인 개념으로 많이 사용되었음에도 불구하고 스키마가 뭐냐고 하는 질문에 그동안 제대로 질문을 하지 못했다. 그래서 이번 기회에 스키마가 무엇인가에 대해 정리하면 좋을 것이라 생각해서 이렇게 정리하게 되었다.


1. 스키마란?


컴퓨터 과학에서 데이터베이스 스키마(database schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조이다. 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하며, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다.

스키마는 3층 구조로 되어있다.

  • 외부 스키마(External Schema) : 프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것
  • 개념 스키마(Conceptual Schema) : 모든 응용 시스템과 사용자들이 필요로하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것
  • 내부 스키마(Internal Schema) : 전체 데이터베이스의 물리적 저장 형태를 기술하는 것

- wikipedia 발췌 -


처음에 이 글만 읽었을 때는 스키마가 확실하게 와닿지 않았다. 예를 들어 ORACLE이나 MySQL을 사용할 때 Workbench나 SQL Developer를 사용할 때 좌측에 나오는 테이블 등을 묶는 하나의 묶음을 스키마라고도 종종 들어왔기 때문에 혼동이 왔다. 그러던 중 그림을 하나 찾게 되었고, 이 그림을 통해 스키마가 무엇인지에 대해 이해하는데 도움이 되었다.


[그림 1. 스키마의 예]


스키마는 3계층 스키마로 나누어져 구성되어있고, 이 각각의 스키마는 결국 데이터베이스의 구조와 제약조건에 대한 전반적인 명세를 기술한 것을 의미한다. 3계층으로 스키마를 나눈 이유는 관점에 따라서 분류한 것이다.


 - 외부스키마 : 개인의 입장, '서브스키마'라고도 한다, 사용자 뷰를 가리킨다. 

                    하나의 외부스키마는 여럿이 공유 가능하며, 

                    하나의 DB시스템에 여러 개의 외부스키마가 존재 가능


 - 내부스키마 : 시스템 프로그래머나 설계자의 관점에서 바라보는 스키마,

                    데이터베이스의 물리적 구조를 가리킴(= 실제 저장방법을 기술하는 물리적인 저장장치와 관련됨) 


 - 개념스키마 : 조직 전체의 입장, 전체적인 뷰를 가리킨다.

                    개체간의 관계와 제약조건을 나타내고, 

                    데이터베이스의 접근권한/보안/무결성 규칙에 대한 명세를 정의함, 


   일반적으로 '스키마'라는 내부스키마를 가리킴, 

   내부스키마는 DBA가 만듦, 데이터베이스의 전체적인 구조로써 하나만 존재해야 함