BE/Database

[DB] DB Schema (데이터베이스 스키마) 와 3단계 데이터 구조

Bans 2022. 7. 22. 03:35

이미지 출처 : https://en.itpedia.nl/2017/11/26/wat-is-een-database/

 


 

데이터베이스의 구조,

조금 더 근원적으로 말해보자면

 

데이터를 저장하는 서버(컴퓨터)가

그 서버의 물리적 공간 (흔히들 표현하는 HDD, SSD, 등등.. 물리적 저장장치)

에 저장하는 구조는..

이해하기 어렵다. 아니, 이해한다 해도 우리들이 적용하긴 어렵다. (DBA 의 존재 이유)

 

그래서 우리( 백엔드 개발자 )는 데이터베이스를

'Schema (스키마)' 를 통해 이해하고 적용하며 사용한다.

그렇다면 데이터베이스 스키마 (DB Schema) 란 무엇인가?

 

 

 

데이터의 '구조' 를 표현하고

자료간의 관계를 언어로 정리한 것 - 이라는 표현을 사용한다.

 

조금 어렵다..

참고한 다른 링크의 글을 가져와보았다.

 

출처 : (https://agilestarskim.github.io/posts/what-is-database-03)

 

 

스키마와 인스턴스라는 이야기를 나누어서, 실제 데이터의 예시와 비교하여 설명하고 있다.

 

즉, Schema 는 '구조와 제약조건'

Instance 는 '실제 저장값' 이라고 표현하고 있다.

 

 

이 스키마 (구조) 를 

1987년 처음 제안된 안시/스파크(ANSI/SPARC)모델 에서는, 크게 3가지로 나누고 있으며 이를

 

- 외부 스키마 (External Schema (or Level))
- 개념 스키마 (Conceptual Schema (or Level))
- 내부 스키마 (Internal Schema (or Level))

 

이라고 표현하고, 그 개념을 나누고 있다.

 

실제 서비스에서의 예시를 통해

이 세개의 스키마 (데이터 구조) 를 살펴보도록 하자.

 

출처 : https://agilestarskim.github.io/posts/what-is-database-03

 

외부 스키마 는 사용자 관점에서의 데이터 구조라고 표현한다.

어떤 사용자(혹은 프로그램)가 그 데이터를 사용하느냐에 따라, 같은 데이터여도 다르게 표현되며

원본에 영향을 주지 않는다.

 

위의 예시에서는, 하나의 고객 데이터로부터

'고객 분석팀' 에서 사용하는 스키마, '상품 배송팀' 에서 사용하는 스키마가 다른걸 볼 수 있다.

 

개념 스키마 는, 사용자와 데이터베이스 접근 개발자 (backend developer) 관점의 데이터 구조로,

실제로 어떤 데이터가 저장되어있으며, 그 데이터들의 관계, 의존성, 속성 등의 내용을 표현하고 있다.

 

내부 스키마 는, Database 설계자 (DBA) 관점에서의 구조라고 표현하며,

실제로 저장장치에 데이터가 어떤 구조로, 어떤 주소와 위치에 저장되는지를 표현하고 있다.

 


이제 우리는(나는) 이 스키마들 중

개념 스키마와 외부 스키마

를 앞으로 사용하며 접근하고 수정하고 씹고 뜯고 맛보고 즐기고 할 예정이다.

 

향후, 프로젝트 개발 과정에 돌입하기 전

프로젝트에 필요한 데이터를

정의하고, 데이터들관의 관계, 의존성, 속성 등의 내용을 표현하기 위해 (Conceptual Schema)

먼저 ERD ( Entity Relationship Diagram ) 를 그리는것부터 시작해보려 한다.

ERD 에 대한 내용은

다음 포스트로 이어가보도록 하겠다 ! 😎