この章がいちばん大事です
この章では、PostgreSQLの登場人物をすべて紹介し、一枚の地図にまとめます。以降の章は、すべてこの地図のどこかを詳しく見ていくだけです。細かな用語を暗記する必要はありません。「何が、何の中に入っているか」の形だけ、頭に残してください。
登場人物1:サーバーとクライアント
第1章で「データベースは表を預かる専門の係」と説明しました。この係にあたるのが、PostgreSQLサーバーです。サーバーは1台のコンピューターの中で動き続けているプログラムで、お願い(問い合わせ)が来るのを待ち、受け取ると処理して結果を返します。
サーバーにお願いをする側をクライアントと呼びます。クライアントは人間ではなく、人間が使う道具(ソフトウェア)のことです。たとえば次のようなものがクライアントになります。
- psql(ピーエスキューエル):PostgreSQLに付属する、文字だけの画面で命令を打ち込む道具。もっとも基本的なクライアントです。
- pgAdmin や DBeaver:マウスで操作できる画面つきの道具。表の中身を一覧で眺めたり、クリックで操作したりできます。
- 業務システムそのもの:販売管理システムや会計システムは、裏側で自動的にサーバーにつないでデータを読み書きしています。利用者は意識しませんが、これも立派なクライアントです。
現場では「サーバー」が、①PostgreSQLというプログラムそのもの、②それが動いているコンピューター本体、の両方の意味で使われます。文脈で判断しますが、この教材では断りがない限り①の意味です。
登場人物2:サーバーの中の入れ子構造
サーバーの中は、ロシアのマトリョーシカ人形のような入れ子になっています。外側から順に見ていきましょう。
データベース(Database)
サーバーの中の、いちばん大きな区画です。1つのサーバーに複数のデータベースを作ることができ、たとえば「本番用」「テスト用」、あるいは「みなと文具用」「関連会社用」のように、互いに混ざってほしくない単位で分けます。クライアントがつなぐときに「どのデータベースか」を指定したのは、この区画を選ぶためです。
スキーマ(Schema)
データベースの中をさらに整理するための「引き出し」です。何も指定しなければ public という名前の引き出しが使われます。初心者のうちは「publicという引き出しが1つあって、そこに全部入っている」と思っていて差し支えありません。会社によっては「経理用」「人事用」のように引き出しを分けて使います。
テーブル(Table)
第1章で見た「行と列の表」です。得意先テーブル、請求書テーブルのように、1種類の情報につき1つのテーブルを作ります。データベースを学ぶとは、ほとんど「テーブルをどう作り、どう問い合わせるか」を学ぶことです。
行(Row)と列(Column)
テーブルの横一列が「行」で、1件のデータ(1社の得意先、1枚の請求書)を表します。縦一列が「列」で、項目(会社名、金額)を表します。英語でそれぞれ「レコード」「カラム」とも呼ばれ、現場ではこちらの呼び方も多く使われます。
地図を言葉で言い直す
ここまでを、現場でよく聞く言い回しに置き換えてみます。
- 「DBにつなぐ」= クライアントが接続情報を使ってサーバーのあるデータベースを開くこと。
- 「テーブルを見る」= あるデータベースのあるスキーマにあるテーブルの中身(行と列)を取り出すこと。
- 「本番と検証を分ける」= 同じサーバー、または別のサーバーに、別のデータベースを用意すること。
- 「5432番が開いていない」= サーバーの窓口番号(ポート)に通信が届かず、つなげない状態。
ここまで分かれば、PostgreSQLの全体像の半分は見えています。次の章からは、地図の中心にある「テーブル」をもう少し近くで見ていきます。
この章のまとめ
- PostgreSQLサーバーは動き続けて問い合わせを待つプログラム。お願いする側の道具がクライアント(psql、画面つきの道具、業務システム)。
- つなぐには「住所・窓口番号(5432)・データベース名・ユーザー名・パスワード」の5つの接続情報を使う。
- サーバーの中は「データベース → スキーマ → テーブル → 行と列」の入れ子。1つのサーバーに複数のデータベースを置ける。
確認クイズ
Q1次のうち「クライアント」にあたるものはどれですか。
Q2入れ子構造を外側から順に並べたものはどれですか。
Q3「本番用のデータとテスト用のデータを絶対に混ぜたくない」とき、どの単位で分けるのが基本ですか。