1 minute read

스키마란 무엇인가?

  • 오라클에서 스키마란 스키마 오브젝트들의 집합
  • 스키마오브젝트는 테이블, 뷰, 인덱스와 같은 구조를 포함하는 논리적인 데이터 저장 구조를 가진 객체
  • 하나의 스키마는 데이터베이스 사용자에의해 소유

다시 말하면 -스키마란 임의의 사용자가 생성한 모든 데이터베이스 객체(object))들을 말하며, 스키마 이름은 그 사용자(user)의 이름과 같으므로(스키마(schema) ≒ 오너(owner))

ex) ‘user1’이라는 사용자가 테이블, 인덱스, 뷰등 여러 객체를 생성했다면, 그 객체의 소유자는 ‘user1’이 되며 이 객체 모두를 가리켜 user1스키마라고 한다.

참고
오라클 시스템 정보를 갖고 있는 데이터 딕셔너리들 대부분은 소유자가 SYS였다. 따라서 데이터 딕셔너리들은 SYS 스키마라고 할 수 있는 것이다.

DBMS별 스키마란?

오라클

: 오라클에서 스키마는 사용자(USER)가 생성한 모든 오브젝트(테이블, 인덱스, 프로시저 등)를 의미합니다. 사용자와 스키마가 같다고 보는 사람도 있는데, 엄밀히 말해서 다르다고 봐야 되겠죠. 그래서 스키마에 각각의 사용자에게 선택적인 권한을 줍니다.  오라클에서 데이터베이스는 실제 물리적인 데이터베이스를 의미합니다.

요약
Orable, DB2 나 다른 엔터프라이즈 급 DB에서는 차이가 있습니다. 보통 schema는 tables의 집합이고 database는 schemas의 집합입니다.

Mysql/MariaDB

: 데이터베이스와 스키마가 같은 의미로 테이블 등의 오브젝트 집합입니다.

PostgreSQL

: Mysql의 데이터베이스가 PostgreSQL의 스키마입니다. 데이터베이스는 스키마의 상위 개념입니다. 그래서 PostgreSQL는 Mysql과 다르게 데이터베이스가 다르면 완전히 물리적인 분리로 보게 됩니다. 그래서 dblink가 아닌 일반적으로는 다른 데이터베이스의 테이블을 조회 및 조인 등을 할 수 없습니다. 다른 스키마끼리는 가능하고요.

MSSQL(SQL Server)

: MSSQL도 스키마가 데이터베이스의 하위에 속합니다. PostgreSQL과 차이는 같은 서버의 데이터베이스를 완전히 분리하지 않는다. 그래서 다른 데이터베이스의 테이블을 조회 및 조인 가능하다. SELECT * FROM DB명.스키마명.테이블명

Leave a comment