스키마(Schema)

Kkd·2024년 12월 4일
0

매일메일 개념정리

목록 보기
16/93

스키마(Schema)

스키마는 데이터베이스에서 데이터의 구조와 제약조건을 정의하는 청사진입니다. 테이블, 열, 데이터 타입, 관계, 인덱스, 뷰 등 데이터베이스에 포함된 객체들의 정의를 포함합니다.
즉, 스키마는 데이터베이스의 설계도를 나타내며, 데이터가 저장되고 관리되는 방식을 규정합니다.


3단계 스키마 아키텍처(Three-Schema Architecture)

3단계 스키마 아키텍처는 ANSI/SPARC 모델로도 알려져 있으며, 데이터베이스의 구조를 논리적 관점에서 계층적으로 분리한 아키텍처입니다.
목적은 데이터베이스 설계의 독립성, 유연성, 이식성을 제공하는 것입니다.


1. 외부 스키마 (External Schema)

  • 정의:
    • 사용자 관점에서의 데이터베이스 뷰(View)입니다.
    • 각 사용자나 애플리케이션이 필요로 하는 데이터를 맞춤형으로 정의한 스키마입니다.
  • 특징:
    • 데이터베이스의 일부만 노출.
    • 사용자마다 다른 외부 스키마를 가질 수 있음.
    • 보안 및 권한 관리에 유리.
  • 예시:
    • 고객 애플리케이션은 이름, 주소 데이터를 보고, 관리자 애플리케이션은 모든 데이터에 접근.

2. 개념 스키마 (Conceptual Schema)

  • 정의:
    • 데이터베이스의 전체 구조를 정의하는 스키마입니다.
    • 모든 사용자와 애플리케이션이 공통으로 사용하는 데이터 모델입니다.
  • 특징:
    • 데이터의 논리적 구조(테이블, 속성, 관계 등)를 정의.
    • 데이터 제약조건(무결성, 참조 무결성 등) 포함.
    • 데이터 독립성 제공.
  • 예시:
    • 고객 테이블, 주문 테이블, 두 테이블 간의 관계.

3. 내부 스키마 (Internal Schema)

  • 정의:
    • 데이터베이스가 물리적으로 저장되는 방식을 정의합니다.
    • 데이터 파일 구조, 인덱스, 저장 경로 등을 포함.
  • 특징:
    • 데이터의 물리적 저장 방법 최적화.
    • 저장 장치의 성능을 고려한 설계.
    • 사용자는 내부 스키마를 직접 볼 수 없음.
  • 예시:
    • 데이터가 디스크에 어떻게 분할되어 저장되는지, B-Tree 인덱스를 사용하여 검색 속도를 높임.

3단계 스키마 간 관계

  1. 외부 스키마 ↔ 개념 스키마

    • 외부 스키마는 개념 스키마의 특정 부분을 참조하여 사용자 요구에 맞는 데이터를 보여줍니다.
    • 논리적 독립성 제공: 개념 스키마가 변경되어도 외부 스키마는 영향을 덜 받음.
  2. 개념 스키마 ↔ 내부 스키마

    • 개념 스키마는 내부 스키마에 저장되는 데이터를 논리적으로 정의합니다.
    • 물리적 독립성 제공: 내부 스키마가 변경되어도 개념 스키마는 영향을 받지 않음.


3단계 스키마 아키텍처의 장점

  1. 논리적 독립성:

    • 개념 스키마와 외부 스키마를 분리하여, 데이터 모델을 변경해도 사용자에게 영향을 최소화합니다.
  2. 물리적 독립성:

    • 내부 스키마와 개념 스키마를 분리하여, 저장 구조나 물리적 데이터 위치를 변경해도 데이터 구조에 영향을 미치지 않습니다.
  3. 보안성:

    • 외부 스키마를 통해 필요한 데이터만 노출하여 민감한 정보를 보호할 수 있습니다.

예시

1. 외부 스키마

  • 사용자 A는 "제품명"과 "가격"만 필요.
  • 사용자 B는 "제품명", "가격", "재고"를 필요로 함.

2. 개념 스키마

  • 제품 테이블(Product): 제품 ID, 제품명, 가격, 재고, 공급업체 ID 정의.

3. 내부 스키마

  • 제품 테이블은 디스크에 B+Tree 구조로 저장.
  • 인덱스를 이용하여 "제품명" 검색 최적화.

결론

3단계 스키마 아키텍처는 데이터베이스 설계에서 구조적 독립성을 제공하고, 효율적이고 유연한 데이터 관리를 가능하게 합니다. 이를 통해 다양한 사용자 요구와 물리적 데이터 저장소 간의 간극을 효과적으로 조율할 수 있습니다.

profile
🌱

0개의 댓글