본문 바로가기

데이터베이스

데이터베이스 설계 모호한 개념정리(스키마, 데이터 베이스 설계 과정)

 

#데베설 #스키마 #외부 스키마 #내부 스키마 # 개념 스키마

 

데이터베이스 설계 쪽에서 매번 공부하면 잊고, 또잊고 하며 혼란을 겪어 왔다. 이를 해결하기 위해 매번 망각하고 다시 리마인드하는데 매번 시간이 많이 걸려 나 자신이 알아들을 수 있는 쉬운 용어로 이를 정리하려고 한다. 

데이터베이스는 별개아닌 데이터의 집합니다. 즉 다수의 시스템, 프로그램, 인원이 사용할 목적으로 통합하여 관리되는 데이터의 집합이다. 


스키마란 구조의 구체적 정의(개요, 윤곽이란 의미)이다. 좀더 구체적으로 스키마란 데이터베이스에 저장되는 데이터 구조(개체와 속성)와 제약조건을 정의한 것이다. 간단하게 스키마=평면도, 데이터베이스=집, 테이블=방 이라고 생각하면 된다.


첫번째가 스키마에 대한 개념인데 스키마로는 총 외부, 개념, 내부 스키마가존재한다(데베설 p27).

외부스키마란 다양한 개별 사용자나 응용 프로그램이 필요로 하는 데이터 구조, 윤곽이다. 즉 개개인이 바라보는 DB의 구조이므로  외부스키마는 다수 존재한다.

개념 스키마란 한 조직 전체(DBA)가 바라보는 DB의 구조로 오직하나 존재한다. 전체 데이터베이스에 어떤 데이터가 저장되는지, 데이터들 간에는 어떤 관계가 존재하고 어떤 제약조건이 존재하는지에 대한 정의뿐만 아니라 데이터에 대한 보안정책이나 접근 권한에 대한 정의도 포함(데이터를 효과적으로 관리하기 위한 다양한 기능 개념)한다.

마지막으로 내부 스키마란 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의한것. 레코드 구조, 필드 크기, 레코드(레코드란 개체 인스턴스이다)  접근 경로 등 물리적인 저장 구조를 정의한다. 


아래 각각의 스키마가 어떻게 구현되는지를 보면 확실히 감이 잡힐 것이다. 

 

아... 드디어 이해가 간다. 외부스키마란 응용 프로그램, 사용자가 데이터베이스의 일부를 보는 관점이다. 또 중요한 것이 개념 스키마를 그냥 스키마라고 하는데 이것은 DBA의 아래 소개되는 역할과 관련지어 설명하겠다.연관된 이해력!!!

어떻게 사상(Mapping, Interface)은 DBMS의 궁극적인 목적인 데이터 독립성을 이루어 줄까? 데이터베이스의 궁극적 목적인 데이터 독립성(Dataa Independency)이란 용프로그램이 DB에 저장되는 데이터에 종속되지 않는 것이다. 

즉, 개념 스키마가 변경되었다고 해서 응용 프로그램이 바라보는 데이터베이스의 구조를 변경하지 않아도 된다는 말이다. 오직 외부/개념 사상만 수정하면 된다. 이로부터 데이터독립성이 확보된다.

개념 스키마에 새로운 개체나 속성의 추가와 같은 변화가 발생해도 외부/개념 사상만 수정해 주면 외부스키마(응용프로그램이 데이터베이스 일부를 보는 관점)에 아무런 영향을 주지 않고도 개념 스키마를 변경할 수 있으므로 데이터 독립성이 제공되는 것이다!!!

DBMS란 저장장치가 아니다!! DBMS란 데이터 관리의 복잡성을 해결하고 데이터를 추가, 삭제, 변경, 검색하고 백업, 복구, 보안등의 기능을 제공하는 소프트웨어이다!!! 즉, 일반프로그래밍 언어의 번역은 컴파일러가 하지만 SQL을 번역하는 것은 DBMS이다

 

 

 

시스템 카탈로그(System Catalogo), 데이터 사전(Data Dicationary)이란? DB에 저장되어 있는 모든 개체들에 대한 정의, 명세에 대한 정보를 수록하여 관리하는 시스템. 모든 스키마와 사상에 관한 정보도 시스템 카탈로그에 저장되어 관리된다. 시스템 카탈로그(데이터 사전)역시 하나의 DB로 데이터에 관한 데이터, 즉 메타 데이터이다.

메타 데이터 (Meta data)

- 데이터에 대한 데이터

- 스키마, 사상 정보, 다양한 제약조건 등을 저장

- 데이터베이스 관리 시스템이 스스로 생성하고 유지함

- 일반 사용자도 접근이 가능하지만 저장 내용만을 검색만 가능 -> 사용자가 메타데이터를 알 필요가 없음

 

데이터베이스 사용자

- 데이터베이스를 이용하기 위해 접근하는 모든 사람

- 이용 목적에 따라 사용자 구분

 

1) 데이터베이스 관리자 (DBA) - 정의, 제어

- 데이터베이스 시스템을 운영, 관리하는 사람

- 주로 데이터 정의어와 데이터 제어어를 사용

- 데이터 베이스 구성 요소 선정, 스키마 정의(여기서의 스키마는 개념 스키마이다!!! 일반적으로 스키마라고 하면 한 조직 전체가 바라보는 DB의 구조인 개념 스키마를 의미한다)

스키마라고 하면 개념 스키마를 의미한다.

2) 최종 사용자 (End user) -  사용

- 데이터베이스에 접근하여 데이터를 조작(삽입,삭제,수정,검색)하는 사람

- 캐쥬얼 사용자와 초보 사용자로 구분

 

3) 응용 프로그래머 (Application programmer) - 조작

- 데이터 언어를 삽입하여 응용 프로그램을 작성하는 사람

- 주로 데이터 조작어 사용

================================================================================

데이터베이스 설계(구축)에 대하여

 개념적 설계(개념적 모델링): 일반적으로 말하는 스키마인 개념적 스키마를 모델링하는 단계로 개념적 스키마를 모델링한다는 것은 ER다이어그램을 작성하고 트랜잭션을 모델링하는 단계이다. 

논리적 설계(논리적 모델링) : 구체적인 테이블의 구조와 제약조건 정의(릴레이션 스키마 정의), 트랜잭션 인터페이스 설계, 릴레이션 스키마(=논리적 스키마=테이블)평가 및 정제

(논리적 설계에서는 이전에는 보지 못했던 논리적 스키마가 등장한다. 별것 아니고 논리적 스키마는 릴레이션 스키마를 말한다(즉, 릴레이션 스키마는 개념적 스키마인 ER다이어그램을 테이블 구조로 바꾸는 것이다)

물리적 설계(물리적 모델링): 저장장치 관점에서 바라본 데이터 구조인 내부 스키마를 정의한다(복습. 내부 스키마란? 데이터베이스가 저장장치에 저장되는 방법을 정의한것). 뷰와 인덱스를 정의한다. 트랜잭션을 상세 설계한다.

 

개념적, 논리적 설계의 결과물로 도출되는 ER다이어그램과 릴레이션 스키마는 모두 컴퓨터 언어로 정의된 것이 아닌 사람이 이해하기 편하라고 작성된 결과물이다. 하지만 물리적 설계의 결과는 다르다. 물리적 설계의 결과물인 물리적 스키마는 저장 장치가 바라본 데이터베이스의구조로써 데이터베이스가 저장장치에 저장되는 방법을 정의한 것으로 저장장치에 어떠한 구조로 저장되는가를 실질적인 컴퓨터 언어로 정의한다. 즉, 물리적 설계의 결과물은 저장장치에 저장되는 데이터의 물리적 구조를 정의하는 것이다. 이 물리적 구조가 내부 스키마, 물리적 스키마이다. 

 

트랜잭션이란? 하나의 논리적 기능을 수행하기 위한 작업의 단위로 하나이상의 데이터 조작어(DML)로 구성된 명령문을 의미.

 

(데이터베이스 설계 과정에 대한 좋은 글. https://prinha.tistory.com/entry/Database-%EB%8B%A8%EA%B3%84%EB%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A4%EA%B3%84-%EA%B3%BC%EC%A0%95  )