Cada instância em execução do servidor PostgreSQL gerencia um ou mais bancos de dados. Os bancos de dados são, portanto, o nível hierárquico mais alto da organização dos objetos SQL ("objetos de banco de dados"). Este capítulo descreve as propriedades dos bancos de dados, e como são criados, gerenciados e removidos.
Um banco de dados é uma coleção nomeada de objetos SQL ("objetos de banco de dados"). Geralmente, todos os objetos de banco de dados (tabelas, funções, etc.) pertencem a um e somente um banco de dados (Mas existem alguns poucos catálogos do sistema como, por exemplo, pg_database, que pertencem a todo o agrupamento e podem ser acessados por todos os bancos de dados do agrupamento). Mais precisamente, um banco de dados é uma coleção de esquemas, e os esquemas contêm as tabelas, funções, etc. Portanto, a hierarquia completa é: servidor, banco de dados, esquema, tabela (ou outro tipo de objeto em vez de tabela, como uma função). [1] [2] [3] [4] [5]
Para se conectar ao servidor de banco de dados, o cliente deve especificar no pedido de conexão o nome do banco de dados que deseja se conectar. Não é possível acessar mais de um banco de dados por conexão (Mas não há restrição quanto ao número de conexões que um aplicativo pode abrir no mesmo ou em outros bancos de dados). Os bancos de dados são fisicamente separados, e o controle de acesso é gerenciado no nível de conexão. Se uma instância do servidor PostgreSQL é usada para abrigar projetos e usuários que devem estar separados e, em sua maioria, desconhecendo um ao outro, é recomendável colocá-los em bancos de dados separados. Se os projetos ou os usuários estão inter-relacionados, devendo um poder utilizar os recursos do outro, devem ser colocados no mesmo banco de dados, mas possivelmente em esquemas separados. Os esquemas são estruturas puramente lógicas, e quem pode acessar o que é gerenciado pelo sistema de privilégios. Podem ser encontradas informações adicionais sobre o gerenciamento de esquemas na Seção 5.8.
Os bancos de dados são criados através do comando CREATE DATABASE (consulte a Seção 18.2), e removidos pelo comando DROP DATABASE (consulte a Seção 18.5). Para conhecer o conjunto de bancos de dados existentes, deve ser examinado o catálogo do sistema pg_database como, por exemplo:
SELECT datname FROM pg_database;
O meta-comando \l e a opção da linha de comando -l do aplicativo psql são úteis para listar os bancos de dados existentes.
Nota: O padrão SQL chama os bancos de dados de "catálogos", mas na prática não há diferença.
[1] |
Um catálogo é uma coleção nomeada de esquemas-SQL, descritores de servidores remotos e descritores de empacotadores de dados remotos em um ambiente-SQL. Os mecanismos para criar e remover os catálogos são definidos pela implementação. Um esquema-SQL, geralmente referido simplesmente como esquema, é uma coleção nomeada, persistente, de descritores. Qualquer objeto cujo descritor está em algum esquema-SQL é conhecido como um objeto do esquema-SQL. (ISO-ANSI Working Draft) Framework (SQL/Framework), August 2003, ISO/IEC JTC 1/SC 32, 25-jul-2003, ISO/IEC 9075-1:2003 (E) (N. do T.) |
[2] |
Oracle — Esquema é uma coleção de objetos de banco de dados. O esquema pertence ao usuário do banco de dados e possui o mesmo nome do usuário. Os objetos do esquema são estruturas lógicas que fazem referência direta aos dados do banco de dados. Os objetos do esquema incluem estruturas como tabelas, visões e índices (Não existe relacionamento entre espaço de tabelas e esquema; objetos do mesmo esquema podem estar em espaços de tabelas diferentes, e espaços de tabelas podem conter objetos de esquemas diferentes). Oracle® Database Concepts 10g Release 1 (10.1) Part Number B10743-01 (N. do T.) |
[3] |
SQL Server — O comportamento dos esquemas mudou no SQL Server 2005. Os esquemas não são mais equivalentes a usuários do banco de dados; agora cada esquema é um espaço de nomes distinto que existe independentemente do usuário de banco de dados que o criou. Em outras palavras, o esquema é simplesmente um recipiente (container) de objetos. O esquema pode pertencer a qualquer usuário, e sua posse é transferível. É utilizado um esquema padrão para resolver os nomes dos securables referenciados sem o nome inteiramente qualificado. No SQL Server 2000, a resolução de nomes verifica primeiro o esquema pertencente ao usuário de banco de dados que está fazendo a chamada, seguida do esquema pertencente ao dbo. No SQL Server 2005, cada usuário possui um esquema padrão. O esquema padrão pode ser definido e alterado utilizando a opção DEFAULT_SCHEMA dos comandos CREATE USER e ALTER USER. Se DEFAULT_SCHEMA for deixado sem definição, o usuário do banco de dados terá dbo como seu esquema padrão. SQL Server 2005 Books Online — User-Schema Separation (N. do T.) |
[4] |
SQL Server — A menos que seja especificada outra maneira, todas as referências Transact-SQL ao nome de um objeto de banco de dados podem ser um nome de quatro partes com a seguinte forma: nome_do_servidor.[nome_do_banco_de_dados].[nome_do_esquema].nome_do_objeto | nome_do_banco_de_dados.[nome_do_esquema].nome_do_objeto | nome_do_esquema.nome_do_objeto | nome_do_objeto SQL Server 2005 Books Online — Transact-SQL Syntax Conventions (N. do T.) |
[5] |
DB2 — Esquema é uma coleção de objetos com nome; fornece uma maneira de agrupar os objetos logicamente. Esquema também é um qualificador de nomes; fornece uma maneira de utilizar o mesmo nome natural para vários objetos, e de evitar referências ambíguas a estes objetos; por exemplo, os nomes de esquema 'INTERNA' e 'EXTERNA' fazem com que seja fácil distinguir duas tabelas VENDAS diferentes (INTERNA.VENDAS, EXTERNA.VENDAS). Os esquemas também permitem que vários aplicativos armazenem dados no mesmo banco de dados, sem ocorrência de colisões no espaço de nomes. DB2 Version 9 for Linux, UNIX, and Windows (N. do T.) |