[DB] 스키마 3단계 구조

안녕하세요. 꿀발자입니다. 데이터베이스를 설계할 때 DB 스키마 3단계 구조는 매우 중요한 개념입니다. 데이터의 독립성을 보장하고, 보다 효율적인 데이터 관리가 가능하도록 설계된 이 구조는 외부 스키마, 개념 스키마, 내부 스키마로 나뉩니다. 각각의 개념과 각 단계 별 특징을 쉽게 이해할 수 있도록 정리해보겠습니다. 데이터베이스 최적화를 고민하는 개발자라면 반드시 알아야 할 핵심 개념이니, 끝까지 함께해 주세요.

스키마(Schema)

스키마(Schema)는 크게 3단계로 구성됩니다. 이러한 3단계 스키마 구조(Three Schema Architecture)는 ANSI/SPARC(미국 표준 협회/표준 계획 및 요구 사항 위원회)가 제안한 데이터베이스 아키텍처 모델입니다. 이 모델을 통해 데이터 독립성을 보장하고, 데이터베이스 설계를 효율적으로 관리할 수 있습니다. ANSI/SPARC 3단계 스키마 구조 설명

스키마3구조

데이터베이스에서 스키마(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 쿼리는 동일하게 사용할 수 있습니다.

스키마 구조

Final Thoughts

DB 스키마의 3단계 구조는 데이터 독립성을 높이고, 관리와 보안, 효율성을 증가시키는 중요한 개념입니다. https://www.postgresql.org/docs/

  • 외부 스키마 사용자 관점 데이터를 정의
  • 개념 스키마 전체적인 데이터 논리적 구조 설계
  • 내부 스키마 데이터 물리적 저장 방식 최적화

데이터베이스를 설계할 때 이러한 체계를 이해하면 더욱 효율적으로 설계하고 시스템 유지보수가 용이하고 효율적으로 관리할 수 있습니다. oracle-database 스키마 설계 가이드

Leave a Comment