데이터베이스 - 스키마
스키마(Schema)
데이터베이스에서 스키마(Schema)는 관계형 데이터베이스 내에서 데이터가 어떻게 구성되는지 정의하는 것으로 테이블 이름, 필드, 데이터 유형 및 엔티티 간의 관계와 같은 논리적 제약 조건이 포함된 논리적인 데이터베이스를 의미한다.
이러한 스키마를 표현하는 프로세스를 데이터 모델링이라고 하며 데이터베이스의 뼈대를 구축하는데 중요한 메타데이터를 담고 있다.
스키마의 3 계층
스키마는 하나의 데이터베이스를 사용자의 관점에 따라 3 계층으로 구분할 수 있다.
각 계층에 대해서 하나씩 살펴보자.
- 외부 스키마(External Schema)
외부 스키마는 같은 데이터베이스에 대해서 서로 다른 관점을 정의한 것을 의미한다.
외부 스키마의 또 다른 의미로는 프로그래머나 사용자의 입장에서 데이터베이스의 모습을 정의한 서브 스키마 혹은 사용자 뷰라고도 한다.
공동구매 사이트를 예로 들면 사용자가 원하는 상품의 상세 정보를 보거나, 카테고리를 통해서 상품을 검색하거나, 공동 구매가 가능한 상품 리스트를 보는 등 사용자가 원하는 데이터에 따라 보이는 뷰가 달라지는 것이다.
이러한 외부 스키마는 사용자에 따라 다르게 출력되기 때문에 하나의 데이터베이스에는 여러 개의 외부 스키마가 존재할 수 있다.
사용자가 어떤 작업을 하는지에 따라서 외부 스키마가 달라질 수 있는데 일반 사용자는 데이터 검색, 조회와 같은 작업에 따라서 달라질 수 있고, 프로그래머는 C, JAVA 등 어떤 언어를 통해서 DB에 접근하는지에 따라 외부 스키마가 달라질 수 있다.
- 개념 스키마(Conceptual Schema)
개념 스키마는 모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 데이터베이스 전체 구조를 논리적으로 정의한 것으로 내부 스키마를 추상화한 스키마를 의미한다.
이러한 개념 스키마가 표현하는 데이터베이스의 구조에는 데이터 개체, 관계, 제약조건, 접근권한, 무결성 규칙등이 있다.
외부 스키마에서 예시로 들었던 공동 구매를 다시 보면 상품이라는 테이블에 대한 정보가 개념 스키마에 들어 있는 것이다.
위 그림을 통해서 알 수 있는 것은 외부 스키마와 맵핑을 통해 개념 스키마 연동이 이루어지게 되고, 내부 스키마와 분리되어 있는 것을 알 수 있다.
- 내부 스키마(Internal Schema)
내부 스키마는 사용자 관점이 아닌 컴퓨터 관점에서의 정의이다.
내부 스키마는 디스크 또는 물리적 저장 장치에 데이터의 물리적인 저장을 표현한 것으로 실제 물리적 저장 구조 및 액세스 경로 등이 있다.
예를 들면 앞서 살펴봤던 상품 데이터가 실제 데이터베이스에 저장될 때 어떤 자료구조로 저장되는지 혹은 어떤 데이터 스토리지를 사용하는지, 어떤 경로에 저장되는지와 같은 정의가 있다.
내부 스키마는 DB의 전체적인 구조로써 단 하나만 존재할 수 있으며, 개념 스키마와 매핑을 통해서 연동이 이루어진다.
스키마를 사용하는 이유
- 데이터베이스 관리
관계형 모델이 제대로 구성되지 않고 제대로 문서화되지 않으면 유지 관리가 더 어려워져 사용자와 회사 모두에 문제가 발생한다.
따라서 스키마를 통해 데이터베이스에 대한 논리적인 정보를 담아 관리하게 되면 관리하는 측면에서 훨씬 좋아진다.
- 데이터의 독립성
스키마의 3 계층을 통해서 각 스키마는 독립된 상태로 구분된다. 따라서 스키마 간의 매핑 정보만 바꿔주면 스키마가 변경되어도 스키마의 독립된 상태가 유지되는데 이러한 성질을 데이터 독립성이라 한다.
독립성에는 크게 논리적 독립성과 물리적 독립성이 있는데 하나씩 살펴보면 아래와 같다.
- 논리적 독립성: 개념 스키마가 변경되어도, 외부 스키마에 영향을 주지 않는 독립성
- 물리적 독립성: 내부 스키마가 변경되어도 개념 스키마, 외부 스키마에 영향을 주지 않는 독립성
참고 자료
https://www.hedleyonline.com/ko/blog/%EC%8A%A4%ED%82%A4%EB%A7%88/