用語集のすべての用語

スキーマ

PostgreSQL のスキーマとは?

スキーマは、データベース内でテーブル、ビュー、関数などのオブジェクトを格納する名前空間です。修飾されていない名前をどこで探すかは search_path で決まります。

PostgreSQL のデータベースには 1 つ以上のスキーマがあり、各スキーマにはテーブルなどの名前付きオブジェクトが含まれます。同じテーブル名を異なるスキーマに存在させることができ、オブジェクトは schema.table の形式で参照できます。新しいデータベースにはすべて public という名前のスキーマがあります。

スキーマは関連するオブジェクトをまとめ、複数のユーザーやアプリケーションが名前の衝突なしに 1 つのデータベースを共有できるようにし、権限の管理も容易にします。修飾されていない名前は 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 公式ドキュメント(英語)。

関連用語