PostgreSQL | PostgreSQLにおけるスキーマ(Schema)の説明

PostgreSQLとは,フリーでオープンソースのリレーショナルデータベースシステム(RDBMS)である.拡張性が非常に高く,複雑なデータ処理に強い.信頼性重視の業務におすすめとなる.

PostgreSQLを利用時にSchemaについての知識がなかったため,本記事ではSchemaについての説明を以下に記す.

実施環境

Windows11
PostgreSQL version 16.9

shelokuma tech blog | バージョン確認方法

スキーマ(Schema)の説明

Schemaの概要

PostgreSQLにおけるスキーマ (Schema)は,データベース内のオブジェクト (テーブル,ビュー,関数など)をグループ化・整理するための空間となる.

PostgreSQL server, Database, Schema, Tableなどの関係性は以下となる.

PostgreSQL Server
└── Database(複数作成可能)
    └── Schema(データベース内に複数作成可能)
        └── Table / View / Function(スキーマ内に定義)

PostgreSQL Serverには複数のDatabaseを作成することができ,その中に複数のSchemaを作成することができる.Schema内に作成したTable, View, Functionを作成することができる.Schemaが異なれば,同じTableでもコンフリクトせずに存在させることもできる.

Schemaの操作

psqlを起動させ,以下コマンドを実行することによって.myschemaという名前のschemaを作成する

# create schema myschema;

以下コマンドを実行することによって,Schemaの名前変更をすることができる.以下は"myschema"から"yourschema"に名前を変更することができる.

※アプリケーション側のコードやクエリで,"myschema.table_name"を利用している場合,要修正

# alter schema myschema rename to yourschema;

Public Schema

Public Schemaはデフォルトで作成されるSchemaとなる.新しいデータベースを作成すると必ずPublic Schemaが最初から存在する."search_path"の設定によって,Schema名の省略時の優先が決められる."search_path"のデフォルトは"public"となっている.

以下コマンドによって,"search_path"の設定を確認することができる.

# show search_path;

もしも,"search_path"の設定でSchemaがpublicの場合,以下コマンドは同じ意味となる.

# select * from mytable;

# select * from public.mytable;

Schemaの応用

国ごとに以下のようにSchemaを分ける.

Database: world_platform
├── Schema: japan
│   ├── users
│   ├── orders
│   └── products
├── Schema: usa
│   ├── users
│   ├── orders
│   └── products

参照

PostgreSQL

PostgreSQL | Documentation

PostgreSQL | Documentation version 16

以上