Skip to content

Latest commit

 

History

History
64 lines (38 loc) · 4.2 KB

스키마란?.md

File metadata and controls

64 lines (38 loc) · 4.2 KB

들어가기 전에

누군가 나에게 스키마가 무엇이냐고 물어본다면 알긴 아는데 대답은 못하겠는데? 라는 식으로 대답을 했던 것 같다. 이거는 그냥 잘 모르기 때문에 대답을 못하는 것도 있는 거 같고, 스키마라는게 하나의 어떤 것이라고 정의하기도 애매하기 때문에 그런 것 같다.


일단 먼저 스키마는 일반적으로 사람들이 정리한 내용을 말하기 전에 내가 간단히 말하자면 2가지로 나눠보고 싶다.

  • 릴레이션의 스키마(schema)

    • 테이블의 스키마는 테이블의 속성에 대한 정보를 갖는다. 어떤 테이블에 어떤 속성이 있고 어떤 타입으로 정의되어 있고 이러한 정보들을 담고 있다.
    • 따라서 릴레이션의 스키마는 프로그래밍 언어에서는 형 정의(type definition)에 해당한다.
    • 주키는 무엇이고, 외래키는 무엇이고 등등의 정보를 표현할 수 있다.
  • 스키마 다이어그램

    • 스키마는 데이터베이스의 전체적인 구조라고 할 수 있다. 따라서 테이블간의 관계는 어떻고 테이블 속성은 무엇이고, 주키, 외래키는 어떤 것인지 한 눈에 볼 수 있다.
      title

내가 생각할 때는 크게 이렇게 정리할 수 있을 것 같은데 이제 좀 더 다른 내용을 참고 해서 정리해보려 한다.


스키마란?

  1. 스키마는 데이터베이스의 구조제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. (메타데이터란?)
  2. 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.
  3. 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나눠진다.

schema


외부 스키마(External Schema) = 사용자 뷰(View)

  • 사용자나 프로그래머가 본인의 입장에서 필요로 하는 데이터베이스의 논리적 구조로 정의한 것이다.
  • 예를 들면, 학과 정보를 나타내는 곳에서 일반 사람이 볼 때와 교수님이 볼 때의 정보의 차이가 있을 것이다.
  • 위와 같이 외부 스키마는 사용자의 관점에 따라 달라질 수 있다.

개념 스키마(Conceptual Schema) = 전체적인 뷰(View)

  • 개념 스키마는 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
  • 개념 스키마는 개체간의 관계제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.

내부 스키마(Internal Schema) = 저장 스키마(Storage Schema)

  • 내부 스키마는 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다.
  • 내부스키마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타낸다.
  • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.

스키마 정리

  • 내부 스키마에서는 말 그대로 물리적 저장장치에 어떻게 저장할 것이고 로우 레벨의 관점에서 DBA가 관리하는 것이라 생각이 든다.
  • 개념 스키마에서는 ERD처럼 전체적인 데이터베이스의 구조를 나타내는 것이라고 생각하면 될 것같다.
  • 외부 스키마에서는 사용자의 정보(JWT, 세션, 쿠키), 인증, 인가 등등을 따져서 상황에 맞게 사용자에 맞게 정보를 쿼리를 작성하여 정보를 보여주는 단계라고 생각한다.