回答編集履歴
1
少し加筆
answer
CHANGED
@@ -15,4 +15,23 @@
|
|
15
15
|
指定を省くことで、たまたまそのシェル上でデフォルトとされているもの、
|
16
16
|
ローカルホスト、5432ポート、デフォルトのデータベース、シェル上のユーザー名をつかってつなごうとします。
|
17
17
|
デフォルトの設定を与えるやり方はいくつもあるため、気になる場合には
|
18
|
-
[第33章 libpq — C ライブラリ](https://www.postgresql.jp/document/13/html/libpq.html)の33.14. 環境変数 以降をチェックすると良いかもしれません。
|
18
|
+
[第33章 libpq — C ライブラリ](https://www.postgresql.jp/document/13/html/libpq.html)の33.14. 環境変数 以降をチェックすると良いかもしれません。
|
19
|
+
|
20
|
+
データベースに保持されるデータはテーブルに格納されますが、
|
21
|
+
データベース内でスキーマという概念があり、スキーマの下にテーブル(やビュー)があります。
|
22
|
+
何もしなくてもpublicというスキーマがあって、スキーマを指定しない場合はpublicが使われます。
|
23
|
+
[5.9. スキーマ](https://www.postgresql.jp/document/13/html/ddl-schemas.html)によると、
|
24
|
+
> スキーマの使用が好まれる理由はいくつかあります。
|
25
|
+
>
|
26
|
+
> ・1つのデータベースを多数のユーザが互いに干渉することなく使用できるようにするため。
|
27
|
+
> ・管理しやすくなるよう、データベースオブジェクトを論理グループに編成するため。
|
28
|
+
> ・サードパーティのアプリケーションを別々のスキーマに入れることにより、他のオブジェクトの名前と競合しないようにするため。
|
29
|
+
>
|
30
|
+
> スキーマは、入れ子にできないという点を除き、オペレーティングシステムのディレクトリと似ています。
|
31
|
+
|
32
|
+
という特徴があるので、使い方によってはデータベースが一つでもスキーマで分けておくことで
|
33
|
+
同じ名前のテーブル(やビュー)が組める使い方が出来ます。
|
34
|
+
便宜的に、データベースに接続するユーザー名(ロール)を使ってスキーマ名に流用するケースがあります。
|
35
|
+
|
36
|
+
データベースを分けてしまうと、複数のデータベースを横断するクエリーは成り立ちません。
|
37
|
+
逆に言うと、データベースを分けてしまえば干渉することなく管理できるとも言えます。
|