본문 바로가기
데이타베이스

데이터베이스 구성 요소와 스키마 개념 정리(외부스키마, 개념스키마, 내부스키마)

by minimax95 2020. 5. 29.

이번 포스팅에서는 데이터 베이스의 구성요소와 스키마에 대해 알아보겠습니다.

 

데이터베이스를 각 요소로 분해해서 각 요소의 이름과 특징들을 먼저 살펴보도록 하겠습니다.

아래의 그림은 일반적인 데이터베이스 테이블인데 테이블을 요소로 구분하여 쉽게 이해할 수 있도록 구조화하였습니다.

속성(Attribute)은 데이터베이스를 구축하는 가장 작은 논리적 단위로 파일 시스템의 필드 개념에 해당합니다.

자체만으로는 정보를 표현할 수 없고 정보를 표현하는 단위인 개체나 관계의 특성을 설명하는 도구의 의미로 사용됩니다.

 

개체(Entity)는 정보를 나타내는 논리적 단위로서 파일 시스템의 레코드에 해당하며 튜플이라고 부르기도 합니다.

개체는 하나 이상의 속성을 조합하여 구성되며 개체 단독으로도 존재할 수 있고 모든 개체는 구별이 가능하다는 특성을 가지고 있습니다.

 

위 그림에서 '개체 타입'을 개체 스키마(Entity Schema)라고도 하며 개체 이름과 이 개체의 속성들로 구성하여 만든 논리적인 정의라 할 수 있습니다.

 

개체 인스턴스는 개체 어커런스(Entity Occurrence)라고도 하며 개체 타입의 연산에 의해 실질적인 개체 값이 들어가 있는 상태를 의미합니다.

 

개체 집합은 Entity Set으로 개체 인스턴스들의 집합을 말합니다.

 

데이터베이스에서 관계(Relationship)이란 용어도 많이 사용되는데,

이는 테이블 내 속성 간의 관계, 테이블과 테이블 간의 관계를 나타냅니다. 속성 관계(Attribute Relationship)는 개체(테이블)를 기술하기 위해 그 개체가 가지고 있는 성질이나 특징을 파악하여 속성으로 구성한 후 각 속성과 속성 사이의 관계를 말합니다. 또한 개체 관계는 개체와 개체 사이의 관계를 말하며 Inter-Entity Relationship이라고 합니다.

 

데이터베이스를 구조적으로 살펴보면 논리적 구조와 물리적 구조로 나눌 수 있습니다.

논리적 구조는 사용자나 응용 프로그래머가 데이터베이스를 바라보는 관점에서 데이터 배치 형태를 의미하는 것으로 논리적 레코드를 가지고 사용자나 응용 프로그래머의 구상에 따라 전개한 모양을 의미합니다.

물리적 구조는 데이터가 물리적 저장 장치에 저장된 형태를 의미하는 것으로 저장 레코드를 이용하여 실제 물리적 저장 장치 위에 구성된 모양을 의미합니다.

 

다음으로 스키마에 대해 알아보겠습니다. 

스키마는 데이터베이스의 전체적인 논리적 설계를 의미합니다. 즉, 데이터 객체, 이들의 속성, 속성 간의 관계, 데이터 관계들이 갖는 제약 조건에 관한 정의를 포괄하는 개념입니다.

스키마의 3층 구조를 살펴보면 외부 스키마, 개념 스키마, 내부 스키마가 있는데 이는 데이터베이스의 3단계와 유사한 개념으로 사용자의 관점과 물리적 데이터 베이스 사이의 관계를 나타냅니다.

외부 스키마(External Schema)는 응용 프로그래머나 사용자 그룹이 원하는 형태의 논리적 구조로 정의될 수 있으며 각각의 사용자 그룹이 요구하는 형태로 만들어져야 하기 때문에 여러 개의 외부 스키마로 세분화 될 수 있습니다.

개념 스키마(conceptual Schema)는 모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 개념으로 하나만 존재하며 데이터베이스 전체를 정의한 것이라 할 수 있습니다.

내부 스키마(Internal Schema)는 전체 데이터베이스의 물리적 저장 형태를 기술한 개념입니다.

이러한 스키마를 개념도로 표현하면 아래와 같습니다.

위 그림에서 보듯이 외부스키마는 사용자 및 응용프로그램 관점에서 데이터베이스를 접근할 수 있는 외형적 개념입니다. 이를 응용 인터페이스에서 Mapping(사상)을 통해 개념 스키마와 연동이 이루어집니다.

개념스키마는 다시 저장 인터페이스를 통해 내부 스키마로 세분화하여 물리적 저장장치까지 구조화됩니다.

그림의 우측에 표기해 놓은 외부단계, 개념단계, 내부단계는 데이터베이스의 3단계를 병행하여 나타낸 것 입니다.

외부 단계란 사용자의 관점에서 데이터베이스를 바라보는 관점으로 외부로 표현되는 인터페이스라 할 수 있고 개념 단계는 사용자와 물리적 데이터베이스 사이의 단계로서 데이터베이스 전체의 정보가 표현된 단계라 할 수 있습니다. 내부 단계는 실제 데이터베이스가 저장되는 저장소에 대한 물리적 형태까지 표현하는 단계로서 단 하나의 스키마로 존재합니다.

결국 스키마의 3층 구조와 데이터베이스의 3단계의 구조적 모형이 바로 위의 그림으로 표현될 수 있습니다.

이러한 스키마 개념을 이해하려면 위 이미지를 참고해서 구조적으로 개념을 정리한다면 보다 쉽게 이해가 가능할 것 같습니다.

 

MySQL의 Workbench를 열어보겠습니다.

Workbench에서는 스키마가 어떻게 구조화되어 표현되고 있는지 함께 살펴보면 좀더 쉽게 스키마의 개념이 이해될 수 있을 것입니다.

Workbench에서 스키마 탭을 열어보면 각 데이터베이스명이 트리형태로 나타납니다.

이전 포스팅에서 사용했던 testdb 데이터베이스도 보이고 기본으로 제공되는 데이터베이스명들이 보이는데 데이터베이스명에서 우클릭을 하면 스페너 모양의 아이콘이 나오고 이를 클릭하면 우측에서 보이는 데이터베이스-스키마 탭이 나옵니다. 데이터베이스 최상위에서 데이터베이스 스키마 이름과 문자셋 등을 설정할 수 있습니다. 데이터베이스 스키마는 데이터베이스의 전체 구조를 포괄하고 있고 Tables 내부에 정의되어 있는 여러 데이터 테이블들이 위에서 설명드린 개념 스키마와 저장 인터페이스를 통해 사상된 내부 스키마의 정의로 테이블이 생성되었음을 확인할 수 있습니다.

 

지금까지 데이터베이스 구성 요소와 스키마에 대해 살펴보았습니다.

다소 개념적인 내용이 많아서 어려웠지만 기본 개념을 잘 정리해 두면 실무에 많은 도움이 되리라 생각합니다.

감사합니다.

댓글