본문 바로가기
computer science/데이터베이스

[데이터베이스] 스키마

by 박연호의 개발 블로그 2020. 2. 8.

 

 이번 시간에는 DB의 구조를 이해하기 위해 필요한 개념인 스키마를 알아본 후, 데이터 베이스를 3단계로 나누어 구조를 살펴본다. 그리고 3단계 데이터베이스 구조에서 데이터 독립성의 개념을 실형하는 방법을 알아 보겠습니다.

 

스키마

 스키마(schema)는 DB에 저장되는 데이터 구조와 제약조건을 정의한 것입니다. 위의 그림에서 고객과 관련된 데이터민 고객번호(정수), 이름(최대 10자의 문자열), 나이(정수), 주소(최대 20자의 문자열)로 저장하기로 했다면 정해진 이 모든 내용이 스키마 입니다. 그리고 정의된 스키마에 따라 DB에 실제로 저장된 값이 인스턴스(instance) 입니다. 

 보통 스키마는 한번 정의되면 자주 변경되지 않지만 인스턴스는 계속 변하는 특성이 있습니다. 이는 한번 지어집 집의 구조는 잘 변하지 않지만 이사 등을 통해 사는 사람들이 계속 바뀐는 것과 같습니다.

 

3단계 데이터 베이스 구조

데이터를 DB에 저장하고 관리하기는 쉽지 않은 일이지만, DB의 여러 장점 때문에 많은 사용자가 데이터베이스를 이용합니다. 그런데 DB의 복잡한 내부 구조와 동작 방식을 모두 이해하고 있어야 한다면 일반 사용자에게 DB는 그림의 떡일 수 밖에 없습니다. 미국의 표준화 기관 ANSI/SPARC에서는 데이터 베이스의 복잡한 내부 구조를 감추고 일반 사용자가 DB를 쉽게 이해하고 사용할 수 있도록 3단계 DB구조를 제안하였습니다.

 

3단계 DB구조는 하나의 DB를 세 단계로 나누어 이해합니다. 

 

- 외부 단계(external level) : 개별 사용자 관점

- 개념단계(conceptual level) : 조직 전체의 관점

- 내부단계(internal level) : 물리적인 저장 장치의 관점

 

각 단계별로 다른 추상화를 제공하면 DB를 효과적으로 관리할 수 있습니다. 일반적으로 내부 단계에서 외부 단계로 갈수록 추상화 레벨이 높아집니다. 3단계 DB구조를 통해 모든 데이터가 어떻게 저장되고 유지되는지와 관련된 복잡한 내용을 숨기고 필요한 데이터만 단순화한 외부 단계의 관점을 일반 사용자들에게 제공할 수 있습니다.

 

 1. 외부단계 : 집주인 관점

 외부 단계에서는 개별 사용자 관점에서 DB를 이해하고 표현합니다. 하나의 DB를 여러 사용자들이 함께 사용하지만 각각의 사용자가 DB전체에 관심이 있는 것은 아닙니다. 예를 들어, 쇼핑몰을 운영하기 위해 필요한 DB에는 고객, 상품, 직원, 주문 등과 관련된 데이터 들이 존재하지만 고객 관리담당 직원은 DB에서 고객과 관련된 데이터만, 상품 관리담당 직원은 상품과 관련된 데이터에만 관심을 가집니다.

 

 외부 단계에서는 개별 사용자가 DB를 어떻게 보는가를 표현하므로 사용자마다 생각하는 DB의 구조가 다릅니다. 이처럼 외부 단계에서 사용자에게 필요한 DB를 정의한 것을 외부 스키마(external schema)라고 합니다. 

 

 위의 사진에서 유선이는 320호의 구조나 크기, 인테리어 등에 관심을 가질 뿐 명석이의 집에는 관심이 없는 것과 같습니다. 이렇게 유선이나 명석이 관점에서 아파트를 바라보는 것이 외부 단계입니다.

 

 

2. 개념단계 : 관리인 관점

 개념 단계에서는 DB를 이용하는 사용자들의 관점을 통합하여 DB를 조직 전체의 관점에서 이해하고 표현합니다. DBMS나 DB 관리자는 DB의 일부분이 아닌 전체 DB에 관심을 가지는데 개념 단계에서는 DBMS나 관리자의 관점에서 모든 사용자에게 필요한 데이터를 통합한 전체 DB의 논리적 구조를 정의합니다. 그리고 이를 개념 스키마(conceptual schema)라고 합니다.

 

개념 스키마는 전체 DB에 어떤 데이터가 저장되는지, 데이터들 간에는 어떤 관계가 존재하고 어떤 제약조건이 존재하는지에 대한 정의뿐만 아니라, 데이터에 대한 보안 정책이나 접근 권한에 대한 정의도 포함합니다. 

 

 DB하나에는 개념 스키마가 하나만 존재하고 각 사용자는 개념 스키마의 일부분을 사용합니다. 즉, 외부 스키마를 기초로 하여 사용자의 이용 목적에 맞게 만들어집니다. 일반 적인 스키마라고 하면 개념 스키마를 의미합니다.

 

 위의 사진에서  아파트 관리인은 어느 한 집에만 관심을 가지면 안됩니다. 아파트 전체를 문제없이 관리하려면 아파트 전체를 잘 알고 있어야 하는데, 이처럼 관리인 관점에서 전체 아파트를 바라보는 것이 개념 단계입니다.

 

 

3. 내부 단계 : 건설 업체 관점

 내부 단계에서는 DB를 디스크나 테이프 같은 저장 장치의 관점에서 이해하고 표현합니다. 내부 단계는 전체 DB가 저장 장치에 실제로 저장되는 방법을 정의하며 이를 내부 스키마(internal schema)라고 합니다.

 

 DB는 저장 장치에 파일 형태로 저장되는데 내부 스키마는 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의합니다. 내부 스키마는 DB의 개념 스키마에 대한 물리적인 저장 구조를 표현한 것으로 하나의 DB에 하나만 존재합니다.

 

 위의 사진에서 아파트 건설업체의 입장에서는 아파트 뼈대, 즉 철근 콘크리트 구조가 어떻게 생겼는지, 시멘트를 얼마나 사용했는지 등에 관심을 가집니다. 이처럼 아파트를 실제 건설하는 관점에서 전체 아파트를 바라보는 것이 내부 단계입니다.