

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# スキーマ
<a name="r_Schemas_and_tables"></a>

データベースには、1 つ以上の名前付きスキーマが含まれています。データベース内の各スキーマには、テーブルや、その他の種類の名前付きオブジェクトが含まれています。デフォルトでは、データベースに、PUBLIC という名前の 1 つのスキーマが含まれています。スキーマを使用すると、共通の名前でデータベースオブジェクトをグループ化できます。スキーマは、ファイルシステムディレクトリに似ていますが、ネストできない点が異なります。

同じデータベース内の異なるスキーマ内で同一のデータベースオブジェクト名を使用でき、競合は生じません。例えば、MY\$1SCHEMA と YOUR\$1SCHEMA の両方に、MYTABLE という名前のテーブルを含めることができます。必要なアクセス許可が付与されたユーザーであれば、データベース内の複数のスキーマにわたりオブジェクトにアクセスできます。

デフォルトでは、オブジェクトは、データベースの検索パスに含まれる最初のスキーマ内に作成されます。詳細については、このセクションで後述する「[検索パス](#c_Search_path)」を参照してください。

スキーマは、組織において、またマルチユーザー環境での並行処理問題において以下のように有用です。
+ 多数のデベロッパーが相互に妨害せずに同じデータベース内で作業できる。
+ データベースオブジェクトの論理グループを編成して、より管理しやすくする。
+ アプリケーションで使用されるオブジェクトを専用のスキーマに入れる機能をアプリケーションに追加する。これにより、それらのオブジェクトの名前と、別のアプリケーションで使用されるオブジェクトの名前とが競合しなくなる。

## 検索パス
<a name="c_Search_path"></a>

検索パスは search\$1path パラメータで定義します。このパラメータに、スキーマ名をカンマで区切ってリストします。検索パスは、オブジェクト (テーブルや関数など) がスキーマ修飾子なしの簡潔な名前で参照されたときにスキーマを検索する順序を指定します。

ターゲットスキーマを指定せずにオブジェクトを作成した場合は、検索パスにリストされている最初のスキーマにオブジェクトが追加されます。同じ名前の複数のオブジェクトが異なるスキーマ内に存在する場合、スキーマが指定されていないオブジェクト名は、その名前のオブジェクトを含む検索パス内の最初のスキーマを参照します。

現行セッションのデフォルトスキーマを変更するには、[SET](r_SET.md) コマンドを使用します。

詳細については、「設定リファレンス」の「[search\$1path](r_search_path.md)」の説明を参照してください。

# スキーマの作成、変更、および削除
<a name="r_Schemas_and_tables-creating-altering-and-deleting-schemas"></a>

あらゆるユーザーがスキーマを作成でき、所有するスキーマを変更または削除できます。

以下のアクションを実行できます。
+ スキーマを作成するには、[CREATE SCHEMA](r_CREATE_SCHEMA.md) コマンドを使用します。
+ スキーマの所有者を変更するには、[ALTER SCHEMA](r_ALTER_SCHEMA.md) コマンドを使用します。
+ スキーマおよびそのオブジェクトを削除するには、[DROP SCHEMA](r_DROP_SCHEMA.md) コマンドを使用します。
+ スキーマ内にテーブルを作成するには、*schema\$1name.table\$1name* という形式でテーブルを作成します。

すべてのスキーマのリストを表示するには、PG\$1NAMESPACE システムカタログテーブルをクエリします。

```
select * from pg_namespace;
```

スキーマに属するテーブルのリストを表示するには、PG\$1TABLE\$1DEF システムカタログテーブルをクエリします。たとえば、次のクエリは PG\$1CATALOG スキーマのテーブルのリストを返します。

```
select distinct(tablename) from pg_table_def
where schemaname = 'pg_catalog';
```

# スキーマベースのアクセス許可。
<a name="r_Schemas_and_tables-schema-based-privileges"></a>

 スキーマベースのアクセス許可は、スキーマ所有者により以下のように決定されます。
+ デフォルトでは、データベースの PUBLIC スキーマに対して、すべてのユーザーが CREATE と USAGE のアクセス許可を持ちます。データベースの PUBLIC スキーマ内に、オブジェクトをユーザーが作成することを禁止するには、[REVOKE](r_REVOKE.md) コマンドを使用して、そのアクセス許可を削除します。
+ オブジェクトの所有者により USAGE のアクセス許可が付与されたユーザーでない限り、ユーザーは、自らが所有していないスキーマに含まれるオブジェクトにアクセスできません。
+ 別のユーザーが作成したスキーマに対する CREATE のアクセス許可が付与されたユーザーは、そのスキーマ内にオブジェクトを作成できます。