回答編集履歴

1

少し加筆

2021/12/11 03:25

投稿

退会済みユーザー
test CHANGED
@@ -33,3 +33,41 @@
33
33
  デフォルトの設定を与えるやり方はいくつもあるため、気になる場合には
34
34
 
35
35
  [第33章 libpq — C ライブラリ](https://www.postgresql.jp/document/13/html/libpq.html)の33.14. 環境変数 以降をチェックすると良いかもしれません。
36
+
37
+
38
+
39
+ データベースに保持されるデータはテーブルに格納されますが、
40
+
41
+ データベース内でスキーマという概念があり、スキーマの下にテーブル(やビュー)があります。
42
+
43
+ 何もしなくてもpublicというスキーマがあって、スキーマを指定しない場合はpublicが使われます。
44
+
45
+ [5.9. スキーマ](https://www.postgresql.jp/document/13/html/ddl-schemas.html)によると、
46
+
47
+ > スキーマの使用が好まれる理由はいくつかあります。
48
+
49
+ >
50
+
51
+ > ・1つのデータベースを多数のユーザが互いに干渉することなく使用できるようにするため。
52
+
53
+ > ・管理しやすくなるよう、データベースオブジェクトを論理グループに編成するため。
54
+
55
+ > ・サードパーティのアプリケーションを別々のスキーマに入れることにより、他のオブジェクトの名前と競合しないようにするため。
56
+
57
+ >
58
+
59
+ > スキーマは、入れ子にできないという点を除き、オペレーティングシステムのディレクトリと似ています。
60
+
61
+
62
+
63
+ という特徴があるので、使い方によってはデータベースが一つでもスキーマで分けておくことで
64
+
65
+ 同じ名前のテーブル(やビュー)が組める使い方が出来ます。
66
+
67
+ 便宜的に、データベースに接続するユーザー名(ロール)を使ってスキーマ名に流用するケースがあります。
68
+
69
+
70
+
71
+ データベースを分けてしまうと、複数のデータベースを横断するクエリーは成り立ちません。
72
+
73
+ 逆に言うと、データベースを分けてしまえば干渉することなく管理できるとも言えます。