A small number of objects, like role, database, and tablespace
names, are defined at the cluster level and stored in the
pg_global tablespace. Inside the cluster are
multiple databases, which are isolated from each other but can access
cluster-level objects. Inside each database are multiple schemas,
which contain objects like tables and functions. So the full hierarchy
is: cluster, database, schema, table (or some other kind of object,
such as a function).
При подключении к серверу базы данных, клиент должен указать в параметрах подключения имя базы данных, с которой нужно соединиться. Одно соединение не может иметь доступ более чем к одной базе данных. Однако приложение не ограничено в количестве соединений к одной и той же или разным базам данных. Базы данных разделены физически и контроль доступа осуществляется на уровне соединения. В случае, когда один экземпляр сервера PostgreSQL обслуживает проекты или пользователей, которых необходимо изолировать друг от друга, рекомендуется размещать их в раздельных базах данных. В случае, когда проекты или пользователи взаимосвязаны и должны иметь возможность использовать общие ресурсы, они должны размещаться в одной базе данных, но, возможно, в раздельных схемах. Схемы — в чистом виде логическая структура, и кто к чему может получить доступ управляется системой привилегий. Более подробная информация по управлению схемами приведена в Разделе 5.8.
Базы данных создаются командой CREATE DATABASE (см. Раздел 23.2), а удаляются командой DROP DATABASE (см. Раздел 23.5). Список существующих баз данных можно посмотреть в системном каталоге pg_database, например,
SELECT datname FROM pg_database;
Метакоманда \l или ключ -l командной строки приложения psql также позволяют вывести список существующих баз данных.
Стандарт SQL называет базы данных «каталогами», но на практике у них нет отличий.