Schema
개요
스키마(Schema)
는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 정의한 메타데이터(Metadata)
의 집합이다. 여기서 메타데이터란 '데이터에 대한 데이터'로, '어떤 목적을 가지고 만들어진 데이터'로 정의된다.
스키마는 개체의 특성을 나타내는 속성(Attribute)과 속성들의 집합으로 이루어진 개체(Entity), 각 개체 사이에 존재하는 관계(Relationship)에 대한 정의 및 이들이 유지해야 할 제약 조건을 기술한 것이다.
스키마의 구성 요소를 간단히 다시 정리해 보자.
- 개체(Entity)
- 데이터로 표현하려고 하는 객체로서, 하나 이상의 속성으로 구성
- ER 다이어그램에서 '네모'로 표현됨
- 예 : 학생 / 과목
- 속성(Attribute)
- 각 개체가 갖는 속성(특징)
- ER 다이어그램에서 '원'으로 표현됨
- 예 : 홍길동, 장보고 / 국어, 영어
- 관계(Relationship)
- 각 개체와 개체 사이의 연관성
- ER 다이어그램에서 '마름모'로 표현됨
- 예 : 학생과 과목 간의 '수강'이라는 관계
스키마의 특징
스키마는 다음과 같은 몇 가지 특징을 가진다.
- 스키마는
데이터 사전(Data dictionary)
에 저장된다.
※ 데이터 사전(Data dictionary) : 데이터 항목들에 대한 정보를 제공하는 테이블 및 뷰들의 집합으로, 대부분 읽기 전용으로 제공됨
- 스키마는 현실 세계의 특정한 부분의 표현으로서
특정 데이터 모델
을 이용해 만들어진다.
- 스키마는 시간의 흐름에도 불변하는 특성을 가진다.
- 스키마는 데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.
3-Level Schema
스키마는 사용자의 관점에 따라 외부 스키마
, 개념 스키마
, 내부 스키마
로 나뉜다.
외부 스키마(External schema)
외부 스키마는 사용자나 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것으로, 실세계에 존재하는 데이터들을 어떠한 형식과 구조, 배치 화면 등을 통해 사용자에게 보여줄 것인지를 정의하는 Multiple user's view이다.
외부 스키마는 다음과 같은 특징을 가진다.
- 하나의 DB 시스템에는 여러 개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램 혹은 사용자가 공유할 수 있다.
- 동일한 DB에 대해서도 서로 다른 관점을 정의할 수 있도록 허용한다.
개념 스키마(Conceptual schema)
데이터베이스의 전체적인 논리적 구조를 정의한 것으로, 데이터베이스에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타내는 Community view of DB이다.
개념 스키마는 다음과 같은 특징을 가진다.
- 모든 응용 프로그램이나 응용 시스템에서 필요로 하는 객체 간의 관계 및 무결성 제약 조건들을 포함한다.
※ 무결성 제약 조건 : 데이터베이스의 정확성과일관성을 보장하기 위하여 저장, 삭제, 수정 등을 제약하는 조건
- 데이터베이스의 전체 조직에 대한 '논리적인 구조'로서, '물리적인 구현'은 고려되지 않은 단계이다.
- 각 데이터베이스에는 하나의 개념 스키마만 존재한다.
- DBA에 의해 구성되어 데이터베이스 파일에 저장되는 데이터의 형태를 나타낸다.
내부 스키마(Internal schema)
물리적 저장 장치의 입장에서 본 데이터베이스의 구조로서, 데이터의 물리적 저장 구조를 나타내는 Physical representation이다.
내부 스키마는 다음과 같은 특징을 지닌다.
- 개념 스키마를 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것이다.
- 실질적인 데이터의 저장 구조나 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다.
- 시스템 프로그래머 혹은 시스템 설계자가 보는 관점의 스키마이다.
3계층 스키마를 사용하는 이유
3계층 스키마는 사용자와 설계자, 개발자의 관점에 따라 데이터베이스를 기술하고 관계를 정의한 것으로, 이는 데이터의 독립성을 확보하기 위한 방법이라 할 수 있다.
3계층 스키마를 사용하는 것은 다음과 같은 장점이 있다.
- 데이터의 복잡도 감소
- 데이터의 중복 제거
- 사용자 요구사항 변경에 따른 대응력 향상
- 관리 및 유지 보수 비용 절감
다만 설정 및 유지 관리가 다소 어렵고 데이터베이스의 구조가 복잡해진다는 단점도 존재한다.
data independence
데이터베이스를 3단계 스키마 구조로 나눔으로써 데이터의 독립성을 확보할 수 있다고 하였다. 여기서 데이터의 독립성은 두 가지로 다시 구분할 수 있다.
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않는다.
- 물리적 독립성 : 내부 스키마가 변경되어도 외부 스키마 및 개념 스키마는 영향을 받지 않는다.
Schema vs Database
흔히 스키마와 데이터베이스라는 용어를 혼용하기도 한다. 사실 엄밀히는 두 단어의 의미는 조금 차이가 있는데, DBMS별로 스키마의 의미가 다르게 사용되어 사용자 간 혼동을 일으키기도 한다. DBMS 벤더에 따라 스키마를 어떻게 정의하는지 간단히 정리하면 다음과 같다.
- Oracle
오라클에서 스키마는 사용자가 생성한 모든 오브젝트, 즉 테이블과 인덱스, 프로시저 등을 통칭한다. 반면 데이터베이스는 실제 물리적인 데이터베이스를 의미한다.
- MySQL, MariaDB
데이터베이스와 스키마를 같은 의미로 사용한다. 즉, 테이블 등 오브젝트들의 집합을 의미한다.
- PostgreSQL
MySQL에서 말하는 데이터베이스를 PostgreSQL에서는 '스키마'로 지칭한다. 그리고 PostgreSQL에서의 데이터베이스는 스키마의 상위 개념에 해당한다. 따라서 PostgreSQL의 경우 MySQL과 달리 데이터베이스가 다르면 물리적으로 완전히 분리된 것으로 간주한다.
- MSSQL
PostgreSQL과 마찬가지로 스키마가 데이터베이스의 하위 요소에 해당하나, 같은 서버의 데이터베이스를 완전히 문리하지는 않는다는 차이가 있다.
참고 자료