스키마
PostgreSQL의 스키마란 무엇인가요?
스키마는 데이터베이스 안의 네임스페이스로, 테이블, 뷰, 함수 및 기타 객체를 담습니다. search_path는 스키마로 한정되지 않은 이름을 어디서 찾을지 결정합니다.
PostgreSQL 데이터베이스에는 하나 이상의 스키마가 있고, 각 스키마에는 테이블과 기타 이름 있는 객체가 들어 있습니다. 같은 테이블 이름이 서로 다른 스키마에 존재할 수 있으며, 객체를 schema.table 형식으로 참조할 수 있습니다. 새로 만든 모든 데이터베이스에는 public이라는 스키마가 있습니다.
스키마는 관련 객체를 묶고, 여러 사용자나 애플리케이션이 이름 충돌 없이 하나의 데이터베이스를 공유할 수 있게 하며, 권한 관리를 더 쉽게 해 줍니다. 한정되지 않은 이름은 search_path를 통해 해석되며, 기본적으로 현재 사용자 이름과 같은 스키마를 먼저 찾고 그다음 public을 찾습니다. PostgreSQL 15 이상에서는 일반 사용자가 기본적으로 더 이상 public에 객체를 만들 수 없습니다.
예제
이 예제는 billing 스키마를 만들고, 그 안에 테이블을 생성한 뒤, 스키마 이름 없이 테이블을 사용할 수 있도록 search_path를 변경합니다.
CREATE SCHEMA billing;
CREATE TABLE billing.invoices (id int PRIMARY KEY);
SHOW search_path;
SET search_path TO billing, public;
SELECT count(*) FROM invoices;
RESET search_path;확장 없이 기본 PostgreSQL 16 또는 17에서 실행되는 일반 SQL입니다. 버려도 되는 빈 데이터베이스에서 실행하세요.
출처
PostgreSQL 공식 문서(영문)입니다.