안녕하세요. 꿀발자입니다. 데이터베이스를 설계할 때 DB 스키마 3단계 구조는 매우 중요한 개념입니다. 데이터의 독립성을 보장하고, 보다 효율적인 데이터 관리가 가능하도록 설계된 이 구조는 외부 스키마, 개념 스키마, 내부 스키마로 나뉩니다. 각각의 개념과 각 단계 별 특징을 쉽게 이해할 수 있도록 정리해보겠습니다. 데이터베이스 최적화를 고민하는 개발자라면 반드시 알아야 할 핵심 개념이니, 끝까지 함께해 주세요.
스키마(Schema)
스키마(Schema)는 크게 3단계로 구성됩니다. 이러한 3단계 스키마 구조(Three Schema Architecture)는 ANSI/SPARC(미국 표준 협회/표준 계획 및 요구 사항 위원회)가 제안한 데이터베이스 아키텍처 모델입니다. 이 모델을 통해 데이터 독립성을 보장하고, 데이터베이스 설계를 효율적으로 관리할 수 있습니다. ANSI/SPARC 3단계 스키마 구조 설명
![[DB] 스키마 3단계 구조 2 스키마3구조](https://honey-dev.com/wp-content/uploads/2025/03/스키마3구조.png)
데이터베이스에서 스키마(Schema)는 데이터베이스의 논리적 구조를 정의하는 청사진입니다. 데이터베이스가 어떤 개체(Entity)를 포함하고, 속성(Attribute)과 관계(Relationship)를 어떻게 설정할지, 어떤 제약 조건을 적용할지를 나타냅니다. DBMS(데이터베이스 관리 시스템)는 이 스키마를 기반으로 데이터를 저장하고 검색하며, 사용자의 명령을 수행합니다.
외부 스키마
사용자 관점
외부 스키마(External Schema)는 사용자가 직접 접근할 수 있는 데이터의 논리적 뷰를 정의하는 단계입니다. 이는 개별 사용자나 애플리케이션이 필요로 하는 데이터만을 볼 수 있도록 제한하는 역할을 합니다. 이 때문에 서브 스키마(Sub-Schema)라고도 하며, 하나의 데이터베이스에는 여러 개의 외부 스키마가 존재할 수 있습니다.
특징
사용자 또는 응용 프로그램이 바라보는 데이터의 논리적 구조
하나의 데이터베이스에 여러 개의 외부 스키마가 존재 가능
필요한 데이터만 보여주므로 보안성과 접근성이 향상됨
SQL, Java, Python 등의 프로그래밍 언어를 통해 접근 가능
예제
동일한 데이터라도 서로 다른 사용자는 다른 형식으로 볼 수 있어서 특정 사용자나 프로그램에 맞게 맞춤 설계 가능합니다.
예를 들어, 대학의 데이터베이스에서 교수는 학생 성적 정보를 확인할 수 있지만, 학생은 자신의 성적만 볼 수 있도록 설정하는 것이 외부 스키마의 한 예입니다.
CREATE VIEW Student_View AS SELECT student_id, name, grade FROM Students WHERE student_id = CURRENT_USER;
위 SQL 문을 통해 학생이 로그인하면 자신의 학번(student_id
)에 해당하는 데이터만 조회할 수 있습니다.
개념 스키마
전체적 관점
개념 스키마(Conceptual Schema)는 데이터베이스 전체 구조를 나타내는 중간 단계로, 논리적 구조와 데이터 간의 관계를 정의합니다. 이는 개발자가 데이터베이스를 설계하는 데 핵심적인 역할을 합니다.
특징
데이터베이스 전체의 논리적 구조를 정의
개체, 관계, 제약 조건, 접근 권한 등을 포함
중복을 최소화하고 데이터 일관성을 유지하는 역할
하나의 데이터베이스에 단 하나의 개념 스키마만 존재
예제
일반적으로 “스키마(Schema)”라고 하면 개념 스키마를 의미하는 경우가 많다. 이 스키마는 데이터가 어떻게 구성되고 연결되는지에 대한 명확한 정의를 제공하며, 개발자와 데이터베이스 관리자(DBA)가 주로 다루는 부분이다.
예를 들어, 대학의 DB에서 개념 스키마는 다음과 같은 테이블을 정의할 수 있습니다.
CREATE TABLE Students ( student_id INT PRIMARY KEY, name VARCHAR(100), major VARCHAR(50), grade FLOAT ); CREATE TABLE Professors ( professor_id INT PRIMARY KEY, name VARCHAR(100), department VARCHAR(50) );
위에 정의된 개념 스키마는 교수와 학생 간의 관계를 유지하고, 데이터 일관성을 보장합니다.
https://honey-dev.com/db-rdb-rdbms-3가지-쉽게-이해하기/
내부 스키마
물리적 관점
내부 스키마(Internal Schema)는 데이터베이스가 실제로 저장되는 물리적 구조를 정의하는 단계입니다. 이는 저장소의 최적화 및 성능 향상을 위해 데이터 파일이 어떻게 구성될지 결정합니다.
특징
개념 스키마를 실제 물리적 저장장치에 구현하는 역할
데이터의 물리적 저장 방식 정의 (파일, 인덱스 구조, 해시 테이블 등)
저장 장치(디스크, SSD 등)에 따라 최적화된 데이터 저장 방식 채택
데이터 검색과 처리 속도를 높이기 위한 인덱싱 및 압축 적용
시스템 프로그래머와 데이터베이스 설계자가 다루는 영역
예제
예를 들어, 데이터를 디스크에 저장할 때 B-트리(B-tree) 인덱스를 사용할 것인지, 해시(Hash) 기법을 사용할 것인지 등을 정의하는 것이 내부 스키마의 역할이다. 인덱스를 활용하여 데이터를 빠르게 검색할 수 있도록 내부 스키마를 설계할 수 있습니다.
CREATE INDEX idx_students ON Students(major);
이렇게 하면 전공(major)별 학생을 검색할 때 속도가 향상됩니다.
데이터 독립성
데이터베이스 스키마 3단계 구조의 가장 큰 장점은 데이터 독립성(Data Independence)을 제공한다. 즉, 데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이나 사용자에게 미치는 영향을 최소화할 수 있다.
구분 | 독립성 대상 | 변경 시 영향 |
논리적 독립성 | 외부 스키마 ↔ 개념 스키마 | 응용 프로그램 영향 없음 |
물리적 독립성 | 개념 스키마 ↔ 내부 스키마 | 데이터 저장 방식 변경 가능 (응용 프로그램 영향 없음) |
논리적 독립성
논리적 독립성(Logical Independence)은 외부 스키마와 개념 스키마 간의 독립성을 의미합니다. 즉, 개념 스키마가 변경되더라도 응용 프로그램(외부 스키마)은 영향을 받지 않습니다.
- 데이터 구조 변경 시 응용 프로그램 유지보수 최소화
- 사용자 맞춤형 데이터 뷰 유지 가능
예제
예를 들어, 데이터베이스에 새로운 속성을 추가하더라도 기존 애플리케이션이 정상적으로 작동합니다. 대학 데이터베이스에서 학생 테이블에 email 속성을 추가한다고 가정해 봅시다. 기존 프로그램에서 student_id, name, grade만 사용하고 있다면, email이 추가되더라도 기존 프로그램은 영향을 받지 않습니다.
ALTER TABLE Students ADD COLUMN email VARCHAR(100);
위와 같이 새로운 속성이 추가되었지만, 기존의 데이터 조회 및 처리 로직에는 영향을 주지 않습니다.
물리적 독립성
물리적 독립성(Physical Independence)은 개념 스키마와 내부 스키마 간의 독립성을 의미합니다. 즉, 데이터를 저장하는 물리적 방식이 변경되더라도 개념 스키마에는 영향을 주지 않습니다.
- 저장 방식(파일 구조, 인덱스, 파티셔닝 등)을 변경해 성능 최적화 가능
- 응용 프로그램과 데이터 구조의 분리하여 물리적 저장 방식 변경 시 애플리케이션의 데이터 모델 그대로 유지
예제
데이터 검색 속도를 높이기 위해 특정 속성에 인덱스를 추가한다고 가정해 봅시다.
CREATE INDEX idx_students_major ON Students(major);
이렇게 인덱스를 추가해도 응용 프로그램에서 데이터 조회하는 방식은 변하지 않습니다. 즉, SELECT * FROM Students WHERE major = 'Computer Science';
같은 기존 SQL 쿼리는 동일하게 사용할 수 있습니다.
![[DB] 스키마 3단계 구조 3 스키마 구조](https://honey-dev.com/wp-content/uploads/2025/03/스키마-구조.png)
Final Thoughts
DB 스키마의 3단계 구조는 데이터 독립성을 높이고, 관리와 보안, 효율성을 증가시키는 중요한 개념입니다. https://www.postgresql.org/docs/
- 외부 스키마 사용자 관점 데이터를 정의
- 개념 스키마 전체적인 데이터 논리적 구조 설계
- 내부 스키마 데이터 물리적 저장 방식 최적화
데이터베이스를 설계할 때 이러한 체계를 이해하면 더욱 효율적으로 설계하고 시스템 유지보수가 용이하고 효율적으로 관리할 수 있습니다. oracle-database 스키마 설계 가이드