데이터베이스의 구조,
조금 더 근원적으로 말해보자면
데이터를 저장하는 서버(컴퓨터)가
그 서버의 물리적 공간 (흔히들 표현하는 HDD, SSD, 등등.. 물리적 저장장치)
에 저장하는 구조는..
이해하기 어렵다. 아니, 이해한다 해도 우리들이 적용하긴 어렵다. (DBA 의 존재 이유)
그래서 우리( 백엔드 개발자 )는 데이터베이스를
'Schema (스키마)' 를 통해 이해하고 적용하며 사용한다.
그렇다면 데이터베이스 스키마 (DB Schema) 란 무엇인가?
데이터의 '구조' 를 표현하고
자료간의 관계를 언어로 정리한 것 - 이라는 표현을 사용한다.
조금 어렵다..
참고한 다른 링크의 글을 가져와보았다.
스키마와 인스턴스라는 이야기를 나누어서, 실제 데이터의 예시와 비교하여 설명하고 있다.
즉, Schema 는 '구조와 제약조건'
Instance 는 '실제 저장값' 이라고 표현하고 있다.
이 스키마 (구조) 를
1987년 처음 제안된 안시/스파크(ANSI/SPARC)모델 에서는, 크게 3가지로 나누고 있으며 이를
- 외부 스키마 (External Schema (or Level))
- 개념 스키마 (Conceptual Schema (or Level))
- 내부 스키마 (Internal Schema (or Level))
이라고 표현하고, 그 개념을 나누고 있다.
실제 서비스에서의 예시를 통해
이 세개의 스키마 (데이터 구조) 를 살펴보도록 하자.
외부 스키마 는 사용자 관점에서의 데이터 구조라고 표현한다.
어떤 사용자(혹은 프로그램)가 그 데이터를 사용하느냐에 따라, 같은 데이터여도 다르게 표현되며
원본에 영향을 주지 않는다.
위의 예시에서는, 하나의 고객 데이터로부터
'고객 분석팀' 에서 사용하는 스키마, '상품 배송팀' 에서 사용하는 스키마가 다른걸 볼 수 있다.
개념 스키마 는, 사용자와 데이터베이스 접근 개발자 (backend developer) 관점의 데이터 구조로,
실제로 어떤 데이터가 저장되어있으며, 그 데이터들의 관계, 의존성, 속성 등의 내용을 표현하고 있다.
내부 스키마 는, Database 설계자 (DBA) 관점에서의 구조라고 표현하며,
실제로 저장장치에 데이터가 어떤 구조로, 어떤 주소와 위치에 저장되는지를 표현하고 있다.
이제 우리는(나는) 이 스키마들 중
개념 스키마와 외부 스키마
를 앞으로 사용하며 접근하고 수정하고 씹고 뜯고 맛보고 즐기고 할 예정이다.
향후, 프로젝트 개발 과정에 돌입하기 전
프로젝트에 필요한 데이터를
정의하고, 데이터들관의 관계, 의존성, 속성 등의 내용을 표현하기 위해 (Conceptual Schema)
먼저 ERD ( Entity Relationship Diagram ) 를 그리는것부터 시작해보려 한다.
ERD 에 대한 내용은
다음 포스트로 이어가보도록 하겠다 ! 😎
'BE > Database' 카테고리의 다른 글
[MySQL] 사용자 비밀번호 변경, 사용자 추가, 권한 추가 및 확인 (0) | 2022.09.09 |
---|---|
[DB] About ORM - ORM이란? ( TypeORM 은 뭐지? ) (0) | 2022.07.15 |