システムカタログとは、リレーショナルデータベースの管理システムがテーブルや列の情報などのメタデータの概要と内部的な情報を格納する場所です。PostgreSQL のシステムカタログは通常のテーブルで作成されています。テーブルを削除したり再作成したり、列の追加および値の挿入や更新をすることは可能ですが、これらの行為によりデータベースシステムを著しく破壊してしまう可能性があります。通常は手作業でシステムカタログを変更してはならず、その代わりとして SQL コマンドを使用します。(たとえば CREATE DATABASE で pg_database カタログに行を挿入し、ディスク上に実際のデータベースを作成します。) しかし、アクセスメソッドにインデックスを追加するときのような特に難易度の高い操作のときなどは例外があります。
ほとんどのシステムカタログはデータベースを作成するときにテンプレートデータベースからコピーされるため、データベースに固有のものとなります。 ごく一部のシステムカタログが、インストレーション内のすべてのデータベースにわたって物理的に共有されます。これらについては、個々のカタログの説明に記録されています。
Table 3-1. システムカタログ
| カタログ名 | 用途 |
|---|---|
| pg_aggregate | 集約関数 |
| pg_am | インデックスアクセスメソッド |
| pg_amop | アクセスメソッド演算子 |
| pg_amproc | アクセスメソッドサポートプロシージャ |
| pg_attrdef | 列のデフォルト値 |
| pg_attribute | テーブルの列("属性", "フィールド") |
| pg_cast | キャスト(データ型変換) |
| pg_class | テーブル、インデックス、シーケンス("リレーション") |
| pg_constraint | チェック制約、一意性/主キー制約、外部キー制約 |
| pg_conversion | 変換情報のコード化 |
| pg_database | このデータベースクラスタにあるデータベース |
| pg_depend | データベースオブジェクト間の依存関係 |
| pg_description | データベースオブジェクトの説明やコメント |
| pg_group | データベースユーザーのグループ |
| pg_index | 追加インデックス情報 |
| pg_inherits | テーブル継承階層 |
| pg_language | 関数記述言語 |
| pg_largeobject | ラージオブジェクト |
| pg_listener | 非同期通知 |
| pg_namespace | 名前空間 (スキーマ) |
| pg_opclass | インデックスアクセスメソッド演算子クラス |
| pg_operator | 演算子 |
| pg_proc | 関数とプロシージャ |
| pg_rewrite | 問い合わせ書き換えルール |
| pg_shadow | データベースユーザ |
| pg_statistic | オプティマイザ統計値 |
| pg_trigger | トリガ |
| pg_type | データ型 |
各カタログのより詳細な解説を以下に示します。