안녕하세요. 꿀발자입니다. 데이터베이스를 설계할 때 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 스키마 설계 가이드