PostgreSQLにおけるデータベース、スキーマ、テーブルの関係
PostgreSQL ではデータベースとテーブルの他にスキーマと呼ばれるものが存在します。ここでは PostgreSQL におけるデータベース、スキーマ、そしてテーブルの関係について簡単に解説します。
(Last modified: )
PostgreSQLにおけるデータベース、スキーマ、テーブルの関係
PostgreSQL におけるデータベース、スキーマ、そしてテーブルの関係について簡単に解説します。
データベース
PostgreSQL では複数のデータベースを管理することができます。インストールした直後などはテンプレート用のデータベースである template0 と template1 、そして postgres という名前のデータベースが作成されます。(これらデータベースが集まったものもデータベースクラスタと呼んでいます)。
データベースは作成する権限があれば新規で追加することができます。
スキーマ
PostgreSQLにおいて実際のデータはテーブルに格納されます。テーブルは目的に応じて複数作成することができ、それをまとめているのがデータベースですが、さらに PostgreSQL ではデータベースの中にスキーマと呼ばれるものがあります。
スキーマはデータベースに作成されるテーブルや関数といったオブジェクトをグループ化するものです。スキーマが異なれば同じデータベース内であっても同じテーブル名でテーブルを作成することができます。データベースを作成すると、自動的に public と呼ばれる特別なスキーマが作成されます。
public スキーマはデフォルトですべてのロールにアクセス権限と CREATE 権限が与えられており、 public スキーマの中にどのロールでもテーブルを作成することができます。
public スキーマとは別に任意のスキーマをデータベースの中に作成することができます。他のデータベースシステムではユーザー名と同じ名前のスキーマ名を持つスキーマしか作成できないものもありますが、 PostgreSQL では任意の名前のスキーマを作成することができます。
テーブル
テーブルはスキーマの中に作成します。スキーマが異なれば同じテーブル名のテーブルでも作成することができます。またスキーマ毎にテーブルなどのオブジェクトを作成できる権限を設定することができます。
CREATE TABLE コマンドでテーブルを作成する場合など、テーブル名にスキーマを省略した場合はデフォルトでは public スキーマに対してテーブルが作成されます(ロール名と同じスキーマが作成されていた場合は異なります)。
-- --
PostgreSQL におけるデータベースとテーブルとスキーマとの関係について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。