■スキーマとは
PostgreSQLにおける「スキーマ」とは、データベース内のオブジェクト(テーブル、ビュー、関数など)をグループ化するための論理構造です。異なるユーザーやアプリケーションが同じデータベース内で同じ名称を用いても衝突することなく利用できるように、スキーマを使用することで独自の名前空間を持つことができます。

■publicスキーマとは
PostgreSQLでは「public」というスキーマがデフォルトで存在します。オブジェクトの作成や参照時にスキーマ名を省略するとデフォルトでこのpublicスキーマを参照する仕組みになっています。
スキーマを参照する順序は「検索パス(サーチパス)」と呼ばれデフォルトでは「”$user”, public」の順となっています。(検索パスについては後述します)
■スキーマの作成
「CREATE SCHEMA スキーマ名;」で作成します。結果は「\dn」で確認します。(参考:https://note2self.blog/2024/08/28/psql%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89/)
CREATE SCHEMA xxxxx;
■スキーマの削除
スキーマの削除にはスキーマ内のオブジェクトを削除しておく必要があります。ですが「CASCADE」オプションをつけることでスキーマ削除時にオブジェクトも同時に削除させることもできます。
DROP SCHEMA xxxxx CASCADE;
■検索パスとは
本来、特定のオブジェクトにアクセスするには「スキーマ名.オブジェクト名」という記法で特定する必要があります。しかしPostgreSQLではどのスキーマを参照するかを決定する仕組みがあります。これが検索パスです。例えば検索パスに「APP01」が含まれていると、以下の指定ができます。
SELECT * FROM APP01.商品マスタ; --検索パスが未設定
SELECT * FROM 商品マスタ; --検索パスが設定済
上述しましたが、デフォルトでは「”$user”, public」と定義されているため、ユーザ名と同名のスキーマ、もしくはpublicスキーマ以外のスキーマで定義している場合はオブジェクトが見つけられません。検索パスを確認し、設定変更するには以下を実行します。
SHOW SEARCH_PATH; --検索パスの確認

検索パスに設定を追加するには以下を実行します。(以下では「APP01」を追加しています)
SET SEARCH_PATH TO APP01,public; --検索パスの追加
コメントを残す