Schema

GreenBean·2021년 8월 15일
0
post-thumbnail

Schema

Schema란?

  • 스키마(Schema)란 데이터베이스의 구조와 제약 조건에 관해 전반적인 명세를 기술한 것을 말함
    • 개체의 특성을 나타내는 속성(Attribute)
    • 속성들의 집합으로 이루어진 개체(Entity)
    • 개체 사이에 존재하는 관계(Relation)에 대한 정의
    • 이 것들이 유지해야 할 제약 조건을 기술한 것이 바로 스키마
  • 즉, 데이터베이스 내에 어떤 구조로 데이터가 저장되는지를 나타내는 데이터베이스 구조를 스키마라고 칭함

Schema의 특징

  • 스키마는 데이터 사전(Data Dictionary)에 저장
    • 데이터 사전: 시스템 전체에서 나타나는 데이터 항목들에 대한 정보를 지정한 중앙 저장소로, 이 정보에는 항목을 참조하는 데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함
  • 현실 세계의 특정한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어지게 됨
  • 시간에 따라 불변인 특성을 가짐
  • 데이터의 구조적 특성을 의미
  • 인스턴스에 의해 규정

Schema의 분류

  • 스키마는 사용자의 관점에 따라 외부•개념•내부 스키마로 구분

1. 개념 스키마 = 전체적인 뷰

  • 조직체 전체를 관리하는 입장에서 DB를 정의한 것
    • 따라서 조직의 모든 응용시스템에서 필요로 하는 개체 관계, 그리고 제약조건들을 포함하고 있게 됨
    • DB를 효율적으로 관리하는데 필요한 접근 권한, 보안 정책, 무결성 규칙 등에 관한 사항들도 추가적으로 포함
  • 따라서 개념 스키마를 "스키마"라고 부르기도 하며, DB 전체를 기술한 것이기 때문에 1개 밖에 존재할 수 없음

개념 스키마의 특징

  • 데이터 베이스의 전체적인 논리적 구조
  • 데이터 베이스에 실제로 어떤 데이터가 저장되었으며 데이터 간의 관계는 어떻게 되는가?
  • 모든 응용프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스
  • 개체 간의 관계와 제약 조건 명시
  • 데이터베이스의 접근 권한 보안 및 무결성 규칙에 관한 명세를 정의
  • 단순한 스키마라고 하면 개념 스키마를 의미
  • 기관이나 조직체의 관점에서 데이터베이스를 정의
  • 데이터베이스 관리자(DBA)에 의해 구성
  • 데이터베이스당 하나만 존재

2. 내부 스키마

  • 물리적인 저장장치 입장에서 DB가 저장되는 방법을 기술한 것
  • 구체적으로 개념 스키마를 디스크 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것으로서 주된 내용은 실제로 저장될 내부 레코드 형식, 내부 레코드의 물리적 순서, 인덱스의 유•무 등에 관한 것
  • 그러나 DB는 내부 스키마에 의해서 곧바로 구현되는 것이 아니라 내부 스키마에 기술한 내용에 따라 운영체제의 파일 시스템에 의해 물리적 저장장치에 기록
  • 실무적으로 내부 스키마에 의해 DB의 실행 속도가 결정적으로 영향을 받기 때문에 DB의 구축 목적에 따라 내부 스키마를 결정해야 할 필요가 있음

내부 스키마의 특징

  • 데이터 베이스의 물리적 저장 구조를 정의
  • 디스크에는 어떤 구조로 저장할 것인가?
  • 데이터의 실제 저장 방법을 기술
  • 물리적인 저장 장치와 밀접한 계층
  • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마

3. 외부 스키마 = 서브 스키마 : 사용자 뷰

  • 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의

외부 스키마의 특징

  • 실세계에 존재하는 데이터들을 어떤 형식, 구조, 배치 화면을 통해 사용자에게 보여줄 것인가
  • 전체 데이터 베이스의 한 논리적 부분 -> 서브 스키마
  • 하나의 데이터베이스에는 여러 개의 외부 스키마가 존재 가능 & 하나의 외부 스키마를 여러 개의 응용프로그램이나 사용자가 공용 가능
  • 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용
  • 일반 사용자는 질의어를 이용 DB를 쉽게 이용
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글