DB란? 스키마란?

이번 Posting에서는 DB에 대해서 정리를 하도록하겠습니다.

1. DB

 일단 DB란 무엇일까요??

"DB는 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임"

뭐 풀어보자면 응용 시스템이란 여러가지 요소들이 있겠죠? 웹이라던가 여러가지 프로그램들을 말하는 것이겠죠~ 

운영 데이터란 응용 시스템 예로 웹을 생각해보면 여러가지 뿌려줘야할 것이 많은데 그것을 말하는 것이겠죠? 대충 아래와 같은 그림 이겠죠 ㅎㅎㅎㅎ


2. DB 스키마

 학교에서 DB 수업을 듣다 보면 DB 스키마, 스키마 이렇게 말하는 정작 제대로 알려주진 않습니다. 자 스키마는 뭘까요? 

"데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조이다"

뭔 말이냐...... 간단하게 말하면 "전체적인 데이터베이스 구조"를 나타내는데,
좀 자세히 말하면 

"개체의 특성을 나타내는 속성과 속성들의 집합으로 이루어진 개체, 
개체 사이에 존재하는 관계에 대한 정의와 이들이 유지 해야할 제약조건"

들을 기술한 것입니다.  이 스키마는 또 외부, 개념, 내부 스키마로 나뉩니다.
아니 그냥 쓰면 되지 왜 나누는 겁니까? 라고 생각하실겁니다.

그 이유는 코딩과 유사하다고 생각합니다. 저희가 코딩을 하기위해 컴파일러를 사용하는 이유를 다들 알고 계실 겁니다. 저희가 기계어로 직접 코딩을 할 수 없는 것과 같이 DB에서도 저희가 이해할 수 있는 스킴과 컴퓨터에 저장되는 스킴이 따로 있기 때문이지요.  아래와 같이 말이죠.

1. 구조에 관해서 이용자가 보았을 때의 논리 구조
2. 컴퓨터가 보았을 때의 물리 구조
3. 전체적인 데이터 구조

외부 스키마
  한 마디로 말하면

"프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것"

 입니다. 위에서 말한데로 논리적 구조를 나타내는데 다음과 같은 모델이 있습니다.

  • 계층형 모델
  • 네트워크형 모델
  • 관계형 모델
  • 객체형 모델
  • 객체-관계형 모델

현재의 시점에서는 객체-관계형 모델을 사용하기 때문에 일반적으로 외부 스킴이라고 하면 객체-관계형 모델을 가리킨다고 봐도 무방합니다.

개념 스키마

"모든 응용 시스템과 사용자들이 필요로하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것"

DB당 한 개를 갖고 있으며, 데이터 베이스에 실제로 어떤 데이터가 저장되었으며 데이터 간의 관계는 어떻게 되는가에 대한 정보를 가지고 있다. 기관이나 조직체의 관점에서 DB를 정의 함.

내부 스키마

"전체 데이터베이스의 물리적 저장 형태를 기술하는 것"

실제로 저장될 내부레코드 형식, 내부레코드의 물리적 순서, 인텍스의 유/무 등에 관한것입니다. 
  • 디스크에 어떤 구조로 저장할 것인가?
  • 데이터의 실제 방법을 기술
  • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스킴



외부스키마: 각 사용자의 관점

사용자1은 ABC가 필요. 스키마 ABC
사용자2은 DEF가 필요. 스키마 DEF
사용자3은 AEX가 필요. 스키마 AEX
사용자n은 XYZ가 필요. 스키마 XYZ

개념스키마: 전체 관점 필요. 스키마 ABCDEFXYZ

내부스키마: 내부 관점 필요.

ABCDEFXYZ를 물리적으로 ABCDEF와 XYZ로 나누고 각각을 다른 디스크 배열에 저장.

(출처: http://www.databaser.net)

이렇게 스킴을 나누었을 때 가장 큰 장점은 캡슐화가 된다는 것이다. 즉 외부, 개념, 내부는 서로 영향을 끼지치 않는다는 의미이다.

마지막으로 DB 스킴은 자주 변경되지 않는 특징으로 내포라고 부르고, DB의 상태는 외연이라고 부른다.

이 블로그의 인기 게시물

웹툰 무료로 볼 수 있는 사이트

BackJoon 1011, Fly me to the alpha centauri, 규칙 찾기 문제

BaekJoon 14501, 퇴사 dp or dfs