[DB]Schema란?


MongoDB에 대해서 공부하던 중 Schema-less란 개념이 불쑥 나왔습니다. 헌데 Schema가 무엇인지도 모르는 저이기 때문에 Schema가 무엇인지 부터 공부해볼 예정입니다.


Schema

스키마데이터 베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것 입니다.

자세히 말하자면

개체의 특성을 나타내는 속성(Attribute),

속성들의 집합으로 이루어진 개체(Entity),

개체 사이에 존재하는 관계(Relation)에 대한 정의와

이들이 유지해야 할 제약조건들을 기술한 것입니다.

즉, DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 합니다.

특징

  1. 스키마는 데이터 사전(Data Dictionary)에 저장됩니다.

  2. 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어지게 됩니다.

  3. 시간에 따라 불변인 특성을 갖습니다.

  4. 데이터의 구조적인 특성을 의미합니다.

  5. 인스턴스에 의해 규정됩니다.

스키마는 사용자의 관점에 따라서 외부, 개념, 내부 스키마로 구분하게 됩니다.


1. 개념 스키마

개념 스키마는 조직체 전체를 관장하는 입장에서 DB를 정의한 것입니다.

따라서 조직의 모든 응용시스템에서 필요로하는 개체 관계, 그리고 제약 조건들을 포함하고 있게 됩니다.

DB를 효율적으로 관리하는데 필요한 접근권한, 보안정책, 무결성 규칙등에 관한 사항들도 추가적으로 포함됩니다.

따라서 개념스키마를 ‘스키마’라고 칭하기도 하며, DB전체를 기술한 것이기 때문에 한 개만 존재합니다.

**<특징>**

  • 데이터 베이스의 전체적인 논리구조

  • 데이터 베이스에 실제로 어떤 데이터가 저장되어있으며 데이터간의 관계는 어떻게 되는가

  • 개체간의 관계와 제약조건 명시

  • 단순한 스키마라고 하면 개념 스키마를 의미

2. 내부 스키마

내부 스키마는 물리적인 저장장치 입장에서 DB가 저장되는 방법을 기술한 것입니다.

구체적으로 개념 스키마를 디스크 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것으로서 주된 내용은 실제로 저장될 내부 레코드 형식, 내부 레코드의 물리적 순서, 인덱스의 유/무 등에 관한 것입니다.

실무적으로 내부스키마에 의해 DB의 실행속도가 영향을 받기 때문에 DB의 구축 목적에 따라 내부 스키마를 결정해야 합니다.

**<특징>**

  • 데이터 베이스의 물리적 저장 구조를 정의

  • 데이터의 실제 저장 방법을 기술

3. 외부 스키마 = 서브스키마 - 사용자 뷰

외부 스키마는 사용자나 응용프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의한 것입니다.

**<특징>**

  • 현실에 존재하는 데이터들을 어떤 형식, 구조, 배치 화면을 통해 사용자에게 보여줄 것인가

  • 전체 데이터 베이스의 한 논리적 부분 -> 서브 스키마

  • 하나의 데이터베이스에는 여러 개의 외부스키마가 존재가능 & 하나의 외부스키마를 여러 개의 응용프로그램이나 사용자가 공용 가능

출처: https://jwprogramming.tistory.com/47 [개발자를 꿈꾸는 프로그래머]