DB 전체를 정의할 Meta 정보가 필요
- DB이름은?
- 테이블은 몇개고 각각의 이름은?
- 컬럼은 몇개고 각각의 컬럼 명은?
- 각 데이터는 어떤 자료형을 쓰는가?
등등 ...
-> Database Schema
스키마 -> 관점
DB는 사용자가 다양함 -> 관점이 다양하게 존재 -> 필요에 따라 제공해줘야함
-> 관점에 따라 스키마를 3개로 나눔
스키마 종류
사용자(일반사용자, DBA, 개발자 등)가 많음
-> 시점이 달라지니 전체적으로 설명하는 메타정보(스키마)도 달라져야함
-> 스키마의 종류 다양해짐
-> 개념 스키마, 외부 스키마, 내부 스키마
외부 스키마
개인(사용자) 입장에서 필요한 스키마
- 쪼개진 스키마(서브 스키마)라고도 하며 사용자뷰를 의미
- 예를 들어, 동물원에서 사자만 보고 싶은 경우
은행 계좌 정보 조회 시 본인 부분의 서브 스키마만 바라봄
개념 스키마
외부 사용자들 요구를 충족시키기 위한 전체적 DB 구조
- 데이터베이스의 전체적인 논리적 구조, DB관계/조건/보안 등 정의
- 고수준 데이터 표현(ERD, DDL 사용해서 표현)
- 예를들어, 동물원의 전체적인 명세가 필요한 경우
내부 스키마
프로그래머나 설계자에게 필요한 스키마
- DB 물리적 구조를 가리킴(메모리에 저장 Data Type, Save Path, Security,...)
- 얘네는 서브스키마가 아닌 DB에 관심이 있을거임
물리적으로 접근해서 구현해야하기 때문 -> 내부 스키마를 통해 봄