난 SQL클라이언트로 DBeaver를 사용하는데 어느날 DBMS에 연결하려고 보니 Database/Schema가 보였다.
순간 Database = Schema 였었나? 싶은 생각이 들었다. Schema에 대해서는 정보처리기사에서도 나왔는데 그때는 뭔가 추상적인 느낌이었던것같기도 했는데.. 아리까리해서 찾아본 내용을 정리했다.
1. 실제 DBMS에서의 Schema 개념
DBMS에서 말하는 스키마는 보통 "데이터베이스 내부에서 논리적으로 객체를 묶는 단위"를 뜻한다. 각 데이터베이스마다 스키마를 약간씩 다르게 사용하고 있기는 하지만 묶어서 표현한다는 점에서 비슷하게 사용되고있는것같다. 아래는 몇가지 db의 공식문서에서 스키마와 관련된 부분을 가져왔다.
🔸 Oracle
Oracle문서
A database schema is a logical container for data structures, called schema objects. Each Oracle Database user account owns a single schema, which has the same name as the user.
해석: 데이터베이스 스키마는 스키마 객체라고 하는 데이터 구조의 논리적 컨테이너입니다. 각 Oracle Database 사용자 계정은 사용자와 동일한 이름을 가진 단일 스키마를 소유합니다.
🔸 MySQL
MySQL문서
CREATE DATABASE
creates a database with the given name. To use this statement, you need theCREATE
privilege for the database.CREATE SCHEMA
is a synonym forCREATE DATABASE
.
해석: CREATE DATABASE
는 주어진 이름으로 데이터베이스를 생성합니다. 이 명령문을 사용하려면 데이터베이스에 대한 CREATE
권한이 필요합니다. CREATE SCHEMA
는 CREATE DATABASE
의 동의어입니다.
🔸 PostgreSQL
PostgreSQL문서
A database contains one or more named schemas, which in turn contain tables. Schemas also contain other kinds of named objects, including data types, functions, and operators. Within one schema, two objects of the same type cannot have the same name. Furthermore, tables, sequences, indexes, views, materialized views, and foreign tables share the same namespace, so that, for example, an index and a table must have different names if they are in the same schema. The same object name can be used in different schemas without conflict
해석: 데이터베이스에는 하나 이상의 명명된 스키마가 포함되어 있으며, 이는 다시 테이블을 포함합니다. 스키마에는 데이터 유형, 함수 및 연산자를 포함한 다른 종류의 명명된 객체도 포함됩니다. 하나의 스키마 내에서 동일한 유형의 두 객체는 동일한 이름을 가질 수 없습니다. 또한 테이블, 시퀀스, 인덱스, 뷰, 구체화된 뷰 및 외래 테이블은 동일한 네임스페이스를 공유하므로 예를 들어 인덱스와 테이블은 동일한 스키마에 있는 경우 서로 다른 이름을 가져야 합니다. 동일한 객체 이름은 충돌 없이 다른 스키마에서 사용될 수 있습니다.
이렇듯 스키마에 대해서 조금씩 다르게 표현하기 때문에 본인이 사용하는 DBMS에 대해서 스키마의 정의를 알아보고 가는것도 좋을것같다.
2. 컴퓨터 과학 이론에서의 Database Schema (3계층 구조)
컴퓨터 과학에서 이야기하는 데이터베이스 스키마는 ANSI/SPARC 3계층 아키텍처 모델에서 유래한것으로 3단계로 나뉘며, 이는 데이터의 추상화 수준을 나눈 것이다.
구분 | 설명 | 예시 |
---|---|---|
외부 스키마 (External Schema) | 사용자 또는 응용 프로그램이 보는 데이터 뷰 | 사용자 A는 고객 테이블 중 이름과 이메일만 봄 |
개념 스키마 (Conceptual Schema) | DB 전체의 논리적 구조를 정의 | 전체 테이블, 관계, 제약조건 등 |
내부 스키마 (Internal Schema) | 데이터가 실제로 저장되는 물리적 구조 | 인덱스 구조, 데이터 파일 포맷 등 |
이러한 3계층 구조는 데이터 독립성(Data Independence) 을 위해 고안되었다고 한다. 예를 들어 물리적 저장 방식(내부 스키마)이 바뀌어도 논리적 구조(개념 스키마)는 영향을 받지 않아야 하고, 사용자의 뷰(외부 스키마)도 그대로 유지돼야 한다고한다.
✅ 정리: 같은 단어, 다른 의미
개념 | DBMS의 Schema | 데이터베이스 이론의 Schema |
---|---|---|
정의 | DB 내 객체를 논리적으로 묶는 단위 (이름 공간, 사용자와 연결됨) | DB의 구조를 계층화한 추상 모델 (External / Conceptual / Internal) |
사용 맥락 | Oracle, PostgreSQL, MySQL 등 DBMS | 데이터베이스 이론, 설계 원칙 |
실무에서 우리가 흔히 말하는 "스키마"는 대부분 DBMS의 개념이 아닐까 싶다. 하지만 데이터베이스 설계를 할 때는 3계층 모델의 스키마 개념을 명심해야겠다.
'데이터베이스' 카테고리의 다른 글
CUBRID 11.2에서 테이블 이름 만으로 다른 소유자 테이블에 접근 불가능 (1) | 2025.05.01 |
---|