Intro
데이터베이스를 공부하다보면 꼭 마주치게 되는 단어가 있다. 그런데 이 단어는 매번 봐도 정확한 뜻이 체감되지 않아 혼란을 주곤 한다. 바로 스키마(schema)라는 단어이다.
대략적인 뜻이나 느낌은 알 것 같지만, 이를 학문적으로 사용할 때, RDBMS에서 사용할 때, 그리고 RDBMS마다 미묘하게 다른 의미로 사용되는 경우가 있어 헷갈리 때가 많다.
이번 포스팅에서는 스키마의 개념과 용어의 사용 현황을 명확히 짚어보고, 이러한 혼란을 해소해 보도록 하겠다.
스키마
스키마의 정의
스키마란 데이터베이스의 구조를 정의하는 청사진
이라고 할 수 있다. 즉, 데이터베이스 시스템 운영에 필요한 테이블, 인덱스, 뷰 등 데이터베이스 객체의 집합에 더해 제약조건 등 데이터를 담을 수 있는 구조를 포함하여 지칭한다.
정리하여 말하자면 스키마는 데이터의 실제 값이 아니라, 데이터베이스의 논리적인 설계를 나타내는 것이다.
데이터베이스와 스키마
구분 | 설명 |
---|---|
데이터베이스 | 데이터를 저장하고 관리하는 물리적 공간 또는 컨테이너 |
스키마 | 데이터베이스 내의 데이터 구조와 그 설계 |
RDBMS 에서의 스키마
RDBMS 상에서는 스키마라는 객체가 존재하며, 이는 테이블, 뷰 등의 데이터베이스 객체를 저장하기 위한 영역을 지칭한다.
RDBMS에 따라 이를 지칭하는 단어가 달라지는데, ORACLE 및 PostgreSQL에서 스키마는 데이터베이스 내의 별도 네임스페이스로 사용되며, 하나의 데이터베이스 안에 여러 개의 스키마가 존재할 수 있다.
이와 달리 MYSQL 계열에서는 스키마라는 단어와 데이터베이스라는 단어가 거의 동의어로 사용된다.
RDBMS | 스키마라는 용어의 사용 |
---|---|
ORACLE, POSTGRE | 스키마와 데이터베이스라는 용어는 분리하여 사용된다. |
MYSQL 계열 | 스키마와 데이터베이스라는 용어가 거의 동의어로 사용된다. |
스키마에 포함되는 사항들
스키마가 포함하는 사항들은 다음과 같다.
항목 | 설명 |
---|---|
테이블의 구조 | 컬럼 이름, 컬럼별 데이터타입 등 |
제약조건 | 기본 키, 외래 키, 유니크 조건, 도메인 |
뷰 | 특정 쿼리의 결과를 저장하여 재사용할 수 있는 논리적 테이블 |
인덱스 | 데이터 검색 속도를 높이기 위한 구조 |
트리거 | 특정 이벤트가 발생할 때 자동으로 실행되는 동작 |
프로시저 | 재사용 가능한 SQL 코드 블록 |
스키마의 어원
스키마(schema)는 그리스어 skhēma 에서 유래한 말로, 이는 "모양, 외관, 사물의 본질"
이라는 뜻을 가진 단어였다. 고대 그리스 철학에서는 스키마를 구체적인 사물의 형상이나 구조적 형태
를 뜻하는 단어로 사용하였다. 20세기 이후에는 심리학, 언어학, 컴퓨터 과학 등에서 데이터를 정리하거나 개념화하는 구조라는 뜻으로 사용하고 있다. 특히 데이터베이스 분야에서 스키마는 데이터를 논리적으로 구성하고 설명하는 프레임워크로 자리잡았다.