Schema
Schema (스키마)
📝 스키마란?
데이터베이스의 구조와 제약 조건에 관한 전반적인 명세
메타데이터의 집합
정의 내용:
- 데이터 개체 (Entity)
- 속성 (Attribute)
- 관계 (Relationship)
- 제약 조건
🔑 메타데이터란?
데이터에 대한 데이터
목적: 어떤 목적을 가지고 만들어진 데이터
🆚 스키마 vs ERD
ERD (Entity Relationship Diagram)
설계도
시점: 데이터베이스 생성 전
목적: 테이블 간 관계 설명
Schema
구현
시점: 데이터베이스 생성 시
생성: DBMS에서 생성
✅ 스키마의 특징
1. 데이터 사전에 저장
Data Dictionary: DBMS를 효율적으로 사용하기 위한 정보 요약
별칭: 메타데이터
2. 시간에 따라 불변
구조적 특성 유지
3. 인스턴스에 의해 규정
데이터 구조적 특성 의미
🏗️ 스키마의 3계층
사용자 관점에서 설계
DBMS 역할: 외부 → 개념 → 내부 스키마로 변환
1. 외부 스키마 (External Schema)
= 사용자 뷰 (View) = 서브 스키마 (Sub Schema)
정의: 사용자/응용프로그래머 입장의 논리적 구조
특징:
- 전체 DB의 한 논리적 부분
- 여러 개 존재 가능
- 하나를 여러 사용자가 공유 가능
- 서로 다른 관점 정의 허용
사용자:
- 일반 사용자: SQL 사용
- 응용 프로그래머: C, Java 등 사용
2. 개념 스키마 (Conceptual Schema)
= 전체적인 뷰 (View)
정의: DB의 전체적인 논리적 구조
특징:
- 조직 전체의 DB
- 하나만 존재
- 개체 간 관계와 제약 조건 표현
- 접근 권한, 보안, 무결성 규칙 정의
관점: 기관/조직체
관리: DBA (Database Administrator)
별칭: 단순히 "스키마"라고 하면 개념 스키마
3. 내부 스키마 (Internal Schema)
= 저장 스키마 (Storage Schema)
정의: 물리적 저장장치 입장의 DB 구조
특징:
- 물리적 저장장치와 밀접
- 레코드의 물리적 구조 정의
- 저장 데이터 항목의 표현 방법
- 내부 레코드의 물리적 순서
관점: 시스템 프로그래머/설계자
📊 3계층 구조도
┌─────────────────────────┐
│ 외부 스키마 (View 1) │ ← 사용자 1
├─────────────────────────┤
│ 외부 스키마 (View 2) │ ← 사용자 2
├─────────────────────────┤
│ 외부 스키마 (View 3) │ ← 사용자 3
└─────────────────────────┘
↓
┌─────────────────────────┐
│ 개념 스키마 (전체) │ ← DBA
└─────────────────────────┘
↓
┌─────────────────────────┐
│ 내부 스키마 (물리) │ ← 시스템
└─────────────────────────┘
❓ 면접 질문 예시
Q1. 스키마란 무엇인가요?
답변: 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합입니다. 데이터베이스를 구성하는 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등을 전반적으로 정의합니다.
Q2. 스키마와 ERD의 차이점은?
답변: ERD는 설계도이고 스키마는 구현입니다. ERD는 데이터베이스를 생성하기 전에 테이블 간 관계를 설명하는 다이어그램으로 설계 단계에서 작성합니다. 스키마는 ERD를 통해 데이터베이스를 생성할 때 DBMS에서 실제로 생성되는 것입니다.
Q3. 스키마의 3계층을 설명해주세요.
답변: 스키마는 외부, 개념, 내부 스키마로 구성됩니다. 외부 스키마는 사용자 입장의 논리적 구조로 여러 개 존재 가능하며, 개념 스키마는 조직 전체의 DB 구조로 하나만 존재하고 DBA가 관리하며, 내부 스키마는 물리적 저장장치 입장의 구조로 시스템 프로그래머가 관리합니다.
Q4. 외부 스키마의 역할은?
답변: 외부 스키마는 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것입니다. 전체 데이터베이스의 한 논리적 부분으로 서브 스키마라고도 하며, 하나의 데이터베이스에 여러 개 존재할 수 있고 같은 DB에 대해 서로 다른 관점을 정의할 수 있습니다.
Q5. 개념 스키마와 내부 스키마의 차이는?
답변: 개념 스키마는 데이터베이스의 전체적인 논리적 구조로 기관이나 조직체의 관점에서 정의하며 DBA가 관리합니다. 내부 스키마는 물리적 저장장치의 입장에서 본 구조로 실제 저장될 레코드의 물리적 구조, 저장 방법, 물리적 순서 등을 정의하며 시스템 프로그래머나 설계자가 관리합니다.
📚 원본 참고 자료
출처: 2023-CS-Study
- 링크: db_schema.md
- 내용: Schema, 3계층, ERD