스키마란
- 스키마 자체는 개요, 구조, 형식이라는 뜻을 가지고 있다
- DB에서의 스키마란 DB의 구조와 제약조건에 관해 전반적인 명세를 기술한 것을 말한다.
논리적 개념의 일반적인 데이터베이스 용어
MySQL에서의 스키마
- MySQL에서의 스키마는 테이블의 집합체로써의 데이터베이스를 스키마라고 얘기한다.
아래의 명령어는 동일하다.
CREATE DATABASE 'User_db';
CREATE SCHEMA 'User_db';
- 적법한 JSON 데이터의 형식을 기술한 문서를 JSON 스키마라고 합니다.
{
"title": "강아지 스키마",
"description": "이 스키마는 강아지에 관한 데이터를 검증하기 위해 작성된 스키마임.",
"type": "object",
"properties": {
"name": {"type": "string"},
"family": {"type": "string"},
"age": {"type": "integer"},
"weight": {"type": "number"},
"owner": {
"type": "object",
"properties": {
"ownerName": {"type": "string"},
"phone": {"type": "string"}
}
}
}
}
3층 스키마(3-Level Schema)
- 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 이들 간의 관계를 정의한 ANSI 표준
- 3단계 계층으로 분리해서 독립성을 확보한다
- 각 계층을 뷰(View)라고 하며, 일반적으로 스키마는 개념 스키마를 뜻한다.
구조
외부 스키마(external schema)
- 응용 프로그램이 접근하는 데이터베이스를 정의한다.
- 사용자 관점 또는 사용자 뷰를 표현한다.
- 하나의 데이터베이스에 대해 여러개가 존재할 수 있어서 다른 말로 서브 스키마로 라고도 한다.
- 유저를 생성해 접근을 제한한 것과 비슷하다.
GRANT ALL PRIVILEGES ON test.* TO userid@'%' IDENTIFIED BY 'password';
개념 스키마(conceptual schema)
- 설계자 관점, 사용자 전체 집단의 데이터베이스 구조이다.
- 통합 데이터베이스 구조이다.
- 전체 데이터베이스 내의 모든 데이터에 관한 규칙과 의미를 묘사한다.
내부 스키마(internal schema)
- 개발자, 시스템 설계자 관점의 스키마이다.
- 물리적으로 저장하는 데이터베이스의 구조이다.
- 데이터의 저장 구조, 레코드의 구조, 필드의 정의, 인덱스와 해시등을 의미한다.
- 내부 스키마에 기술한 내용에 따라 운영체제의 파일시스템에 의해 물리적 저장장치에 기록된다.
독립성
- 논리적 독립성
개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것
- 관리자 비밀번호가 바뀌더라도 사용자에게는 영향이 없음
- 물리적 독립성
내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것
- 저장장치가 변경되더라도 데이터베이스에는 영향이 없음