데이터베이스에서 데이터 구조와 그 표현볍, 자료 간의 관계를 형식 언어로 정의한 것이다.
데이터베이스 전체 또는 일부의 논리적인 구조를 표현하는 것으로 데이터베이스에서 어떤 구조로 저장되는지를 나타낸다.
스키마를 저장하는 곳은 데이터 사전(data dictionary)으로 모델링 과정을 통해 만들어진다.
데이터베이스 스키마는 스키마 3계층에 따라 외부, 개념, 내부 스키마로 나뉜다.
외부 스키마(external schema): 사용자 관점의 스키마. 사용자 또는 프로그램 입장에서의 논리적 구조로 여러 개가 존재한다.
=== 사용자 뷰(View)
개념 스키마(conceptual schema): 사용자와 데이터베이스(DB) 관리자 관점의 스키마. 데이터베이스에 실제로 어떤 데이터가 저장되었으며, 데이터 간의 관계는 어떻게 되는지를 정의하는 스키마로 전체 관점으로 한 개만 존재하며 접근 권한, 보안 및 무결성 등에 관한 정의를 포함한다.
=== 전체적인 뷰(View)
내부 스키마(internal schema): 저장 장치와 데이터베이스(DB) 설계자 및 개발자 관점의 스키마. 개념 스키마를 물리적 저장 장치에 구현하는 방법을 정의하는 데 사용하고 물리적 구조 및 내부 레코드의 물리적 순서 등을 표현한다.
=== 스키마 저장(Schema store)
DB의 논리적 구조나 물리적 구조가 변경되어도 응용 프로그램과 데이터가 서로 영향을 미치지 않고 종속되지 않도록 다음과 같은 데이터 독립성을 보장한다.
논리적 독립성: 외부 스키마와 개념 스키마 사이의 독립성. 응용 프로그램에 영향을 주지 않고 DB의 논리적 구조(개념 스키마)를 변경할 수 있다.
물리적 독립성: 개념 스키마와 내부 스키마 사이의 독립성. 응용 프로그램이나 DB의 논리적 구조에 영향을 주지 않고 DB의 물리적 구조(내부 스키마)를 변경하고 관리할 수 있다.
아무 생각 없이 설계했던 스키마가 이러한 특징들이 있었다는 걸 알고 모르면서 노력을 안 한 내가 싫어졌다.. 열심히 해야지!
참조: http://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=040542-2