PostgreSQL | 스키마(Schema) | 데이터베이스, 스키마, 테이블의 관계

PostgreSQL에서는 데이터베이스와 테이블과는 다른 스키마라는 것이 존재한다. 여기에서는 PostgreSQL의 데이터베이스 스키마 및 테이블의 관계에 대해 간략하게 설명한다.

PostgreSQL의 데이터베이스 스키마, 테이블의 관계

PostgreSQL의 데이터베이스 스키마 및 테이블의 관계에 대해 간략하게 설명한다.

데이터베이스

PostgreSQL에서는 여러 데이터베이스를 관리할 수 있다. 설치한 직후는 템플릿 데이터베이스인 template0와 template1, 그리고 postgres라는 데이터베이스가 만들어진다. (이러한 데이터베이스가 모와서 데이터베이스 클러스터라고 부른다).

데이터베이스는 작성 권한이 있으면 신규로 추가 할 수 있다.

스키마

PostgreSQL에서 실제 데이터는 테이블에 저장된다. 테이블은 목적에 따라 여러 개 만들 수 있고 그것을 정리된 것이 데이터베이스이며, 거기에 PostgreSQL에서는 데이터베이스에 스키마라는 것이 있다.

스키마는 데이터베이스에 작성되는 테이블이나 함수 등의 개체를 그룹화하는 것이다. 스키마가 다르면 동일한 데이터베이스에도 동일한 테이블 이름으로 테이블을 만들 수 있다. 데이터베이스를 작성하면 자동으로 public라는 특별한 스키마가 작성된다.

public 스키마는 기본적으로 모든 역할에 권한과 CREATE 권한이 부여되며, public 스키마에 어떤 역할도 테이블을 만들 수 있다.

public 스키마와는 별도로 스키마를 데이터베이스에 만들 수 있다. 다른 데이터베이스 시스템에서는 사용자 이름과 동일한 이름의 스키마 이름을 가진 스키마만 작성할 수 없는 것도 있지만, PostgreSQL에서는 모든 이름의 스키마를 만들 수 있다.

테이블

테이블은 스키마에 작성한다. 스키마가 다르면 같은 테이블 이름의 테이블도 만들 수 있다. 또한 스키마마다 테이블 등의 오브젝트를 작성할 수있는 권한을 설정할 수 있다.

CREATE TABLE 명령으로 테이블을 만들 경우 테이블 이름에 스키마를 생략하면 기본적으로 public 스키마에 테이블이 만들어 진다. (역할 이름과 같은 스키마가 생성 된 경우는 제외)

여기까지 PostgreSQL의 데이터베이스와 테이블 및 스키마와의 관계에 대해 알아보았다.