데이터베이스 스키마와 데이터 독립성 이해하기

데이터베이스 스키마의 외부·개념·내부 관점과 사상, 데이터 독립성, DDL·DML, 시스템별 구현 방식을 설계와 관리 관점에서 정리합니다.

2026-08-14 · 최초 발행 2025-08-10

데이터 구조를 정하는 스키마

스키마는 데이터베이스의 구조와 제약조건을 기술하는 명세다. 데이터 개체(Entity), 속성(Attribute), 관계(Relationship), 그리고 데이터를 조작할 때 값이 따라야 할 제약조건을 함께 정의한다.

데이터베이스에서 스키마는 사용자에게 보이는 형태부터 실제 저장 방식까지 서로 다른 관점을 분리한다. 이 구분은 ANSI/SPARC 아키텍처 모델에 기반하며, 변경이 다른 계층으로 번지는 일을 줄이는 토대가 된다.

사용자 관점과 저장 구조 사이의 계층

외부 스키마(External Schema)는 사용자 또는 응용 프로그램이 필요로 하는 데이터의 논리적 구조다. 하나의 데이터베이스라도 사용자마다 필요한 정보가 다르므로 여러 외부 스키마를 둘 수 있으며, 서브 스키마(Sub-schema)라고도 한다.

대학 데이터베이스를 예로 들면 학사관리 담당자는 학생의 학번, 이름, 학과, 성적 정보를 볼 수 있다. 같은 데이터베이스라도 경리부서는 학번, 이름, 등록금 납부 정보만 필요로 할 수 있다.

개념 스키마(Conceptual Schema)는 조직 전체 관점에서 데이터베이스를 통합해 기술한다. 모든 사용자가 필요로 하는 데이터를 포괄하며, 개체 간 관계와 제약조건, 접근 권한, 보안, 무결성 규칙을 포함한다. 개념 스키마는 하나만 존재한다.

대학 데이터베이스의 개념 스키마에는 학생, 교수, 과목, 학과, 건물 등의 개체와 관계가 포함될 수 있다. 이러한 구조는 ER 다이어그램(Entity-Relationship Diagram)으로 표현할 수 있다.

registersteachesincludesSTUDENTstringstudent_idstringnamestringdepartmentdatebirth_dateENROLLMENTstringenrollment_idstringstudent_idstringcourse_idstringsemesterstringgradePROFESSORstringprofessor_idstringnamestringdepartmentintsalaryCOURSEstringcourse_idstringtitlestringdepartmentintcredits

내부 스키마(Internal Schema)는 물리적 저장 구조를 다룬다. 실제 저장장치에 데이터를 어떻게 배치할지, 레코드 구조와 필드 크기, 인덱싱, 압축 방법 등을 정의하며 시스템 성능과 직접 연결된다. 내부 스키마 역시 하나만 존재한다.

예를 들어 학생 테이블은 B-Tree 인덱스를 사용해 저장할 수 있고, 성적 데이터에는 압축 알고리즘을 적용해 저장 공간을 최적화할 수 있다. 자주 접근하는 교수 정보는 메모리 캐시에 유지할 수 있다.

계층을 연결하는 사상

서로 다른 스키마 간의 대응 관계를 사상(Mapping)이라고 한다. 사상은 계층 분리가 데이터 독립성으로 이어지도록 연결하는 역할을 맡는다.

외부 스키마 1외부/개념 사상외부 스키마 2외부 스키마 3개념 스키마개념/내부 사상내부 스키마저장 데이터

외부/개념 사상(External/Conceptual Mapping)은 외부 스키마와 개념 스키마를 연결한다. 사용자가 보는 데이터와 전체 데이터베이스 사이의 관계를 정의하며, 사용자 관점과 조직 전체의 데이터 구조가 만나는 인터페이스가 된다.

개념/내부 사상(Conceptual/Internal Mapping)은 개념 스키마와 내부 스키마 사이의 대응 관계다. 논리적 구조를 물리적 저장 구조에 연결하므로, 물리적 저장 방식이 바뀌어도 개념 스키마가 영향을 받지 않도록 한다.

변경을 분리하는 데이터 독립성

논리적 데이터 독립성(Logical Independence)은 개념 스키마가 바뀌어도 외부 스키마에 영향을 주지 않는 성질이다. 새로운 테이블을 추가하거나 기존 테이블에 속성을 추가하는 등 전체 데이터베이스의 논리 구조가 변경되어도 응용 프로그램에 영향이 가지 않도록 한다.

물리적 데이터 독립성(Physical Independence)은 내부 스키마가 바뀌어도 개념 스키마에 영향을 주지 않는 성질이다. 저장 매체, 인덱싱 방법, 접근 경로, 파일 구조를 변경하더라도 논리적 구조는 유지된다.

설계에서 함께 결정해야 할 범위

스키마를 체계적으로 설계하면 동일 데이터의 중복 저장을 줄이고 데이터 불일치를 방지할 수 있다. 접근 권한을 정의해 보안을 강화하고, 시스템 변경이 기존 애플리케이션에 미치는 영향을 최소화하는 기반도 마련한다. 쿼리 처리와 자원 활용 측면에서는 성능 최적화의 기준점이 된다.

스키마는 정적인 산출물로 끝나지 않는다. 개념 스키마와 내부 스키마를 정의할 때는 DDL(Data Definition Language)을 사용하며, CREATE, ALTER, DROP 등의 명령어가 이에 해당한다.

CREATE TABLE Student (
  student_id VARCHAR(10) PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  department VARCHAR(30),
  gpa DECIMAL(3,2)
);

데이터를 검색·삽입·삭제·수정하는 DML(Data Manipulation Language)에는 SELECT, INSERT, UPDATE, DELETE 등이 있다.

SELECT name, department FROM Student WHERE gpa > 3.5;

변경 이력과 마이그레이션 스크립트를 관리하고, Flyway나 Liquibase 같은 데이터베이스 형상 관리 도구를 사용하는 일도 스키마 관리에 포함된다.

데이터베이스 유형별 구현 방식

관계형 데이터베이스(RDBMS)는 테이블, 뷰, 인덱스, 프로시저 등으로 스키마를 구성한다. 정규화는 데이터 중복을 최소화하는 방식이며, Oracle, MySQL, PostgreSQL, SQL Server가 이에 해당한다.

NoSQL 데이터베이스는 스키마 없음(Schemaless) 또는 유연한 스키마(Schema-flexible) 접근을 취할 수 있다. 문서(Document), 키-값(Key-Value), 컬럼 패밀리(Column Family), 그래프(Graph) 등 모델도 다양하며 MongoDB, Cassandra, Redis, Neo4j가 예시다.

데이터 웨어하우스는 분석에 맞춰 스타 스키마나 스노우플레이크 스키마를 사용한다. 차원 테이블(Dimension Table)과 팩트 테이블(Fact Table)로 구성하며 Amazon Redshift, Google BigQuery, Snowflake가 예시다.

스키마는 데이터베이스의 설계도이자 청사진이다. 외부·개념·내부 계층과 데이터 독립성을 이해하면 논리 구조와 저장 구조의 변경을 분리하면서, 안정적인 데이터 기반 시스템을 설계할 수 있다.

데이터베이스스키마데이터 독립성DDL데이터 모델링