基本的な拡張の概念を紹介しましたので、実際にカタログが どのように設計されているか見てみたいと思います。今は このセクションを飛ばしても構いませんが、 ここで与えられる情報なしで後のセクションを 理解するのは難しくなるため、 後の参照用にこのセクションはマークしておいて下さい。 全てのシステムカタログはpg_で始まる 名前を持っています。 次のテーブルはエンドユーザに役立つかもしれない情報を 持っています。(他にも沢山のシステムカタログがありますが、 それらに直接問い合わせることはほとんどないはずです。)
Table 12-1. Postgres システムカタログ
カタログ名 | 説明 |
---|---|
pg_database | データベース |
pg_class | テーブル |
pg_attribute | テーブルカラム |
pg_index | 副インデックス |
pg_proc | プロシージャ (C と SQL の両方) |
pg_type | 型 (基本と複合の両方) |
pg_operator | 演算子 |
pg_aggregate | 集約と集約関数 |
pg_am | アクセスメソッド |
pg_amop | アクセスメソッド演算子 |
pg_amproc | アクセスメソッドサポート関数 |
pg_opclass | アクセスメソッド演算子クラス |
参照マニュアルはこれらのカタログとそのカラムのもっと詳しい説明 をしています。しかしFigure 12-1が主要な実体 とそれらの関係をシステムカタログの中で表しています。(他の実体を 参照しない実体は主キーの一部でない限り表されていません。) この表は、実際にカタログの中身を見てそれらがお互いどう関係している かを見るまでは理解しづらいものです。今は、この表で理解するべき 項目は以下です:
あとに続くいくつかのセクションでは、システムを拡張するのに 必要な情報を示すシステムカタログの様々な結合問い合わせ を紹介します。この表を見ることでこれらの結合問い合わせ (しばしば三面あるいは四面結合です)は理解しやすくなるでしょう。 なぜなら問い合わせで使われるカラムは他のテーブルの外部キー になることがわかるからです。
多くの機能(テーブル、コラム、関数、型、アクセスメソッド、等) はこの概要にぎっしりと綜合されています。単純なcreateコマンド がこれらのカタログの多くを変更するかもしれません。
型とプロシージャはこの概要の中心です。
Note: ここではプロシージャとfunction はほぼ同じ意味で使われています。
明白な意味を持つカラムや関係はありますが、そうではないもの (特にアクセスメソッドと関係するもの)も沢山あります。 pg_am、 pg_amop、 pg_amproc、 pg_operator そして pg_opclass の関係は特に理解しづらいので、基本的な 拡張について説明した後で(インデックスの型と演算子を連結させる セクションで)詳しく説明します。