Esquemas - Amazon Redshift

Esquemas

Um banco de dados contém um ou mais esquemas nomeados. Cada esquema em um banco de dados contém tabelas e outros tipos de objetos nomeados. Por padrão, um banco de dados tem um único esquema, chamado PUBLIC. Você pode usar esquemas para agrupar objetos de banco de dados sob um mesmo nome. Os esquemas são semelhantes a diretórios de sistema de arquivos, exceto pelo fato de que esquemas não podem ser aninhados.

É possível usar nomes de objeto de banco de dados idênticos em esquemas diferentes no mesmo banco de dados sem conflito. Por exemplo, MY_SCHEMA e YOUR_SCHEMA podem conter uma tabela chamada MYTABLE. Os usuários com as permissões necessáriss podem acessar objetos em vários esquemas em um banco de dados.

Por padrão, um objeto é criado dentro do primeiro esquema no caminho de pesquisa do banco de dados. Para obter informações, consulte Caminho de pesquisa posteriormente nesta seção.

Os esquemas podem ajudar em problemas de organização e simultaneidade em um ambiente de vários usuários das seguintes maneiras:

  • Para permitir que muitos desenvolvedores trabalhem no mesmo banco de dados sem interferência entre si.

  • Para organizar objetos de banco de dados em grupos lógicos para torná-los mais gerenciáveis.

  • Para permitir que as aplicações tenham a possibilidade de colocar objetos em esquemas separados, de maneira que os nomes não colidam com nomes de objetos usados por outros aplicativos.

Criar, alterar e excluir esquemas

Qualquer usuário pode criar esquemas e alterar ou descartar esquemas próprios.

Você pode realizar as seguintes ações:

  • Para criar um esquema, use o comando CREATE SCHEMA.

  • Para alterar o proprietário de um esquema, use o comando ALTER SCHEMA.

  • Para excluir um esquema e os objetos, use o comando DROP SCHEMA.

  • Para criar uma tabela dentro de um esquema, crie a tabela com o formato nome_do_esquema.nome_da_tabela.

Para exibir uma lista de todos os esquemas, consulte a tabela de catálogo do sistema PG_NAMESPACE:

select * from pg_namespace;

Para exibir uma lista de tabelas que pertençam a um esquema, consulte a tabela de catálogo do sistema PG_TABLE_DEF. Por exemplo, a consulta a seguir retorna uma lista de tabelas no esquema PG_CATALOG.

select distinct(tablename) from pg_table_def where schemaname = 'pg_catalog';

Caminho de pesquisa

O caminho de pesquisa é definido no parâmetro search_path com uma lista de nomes de esquema separados por vírgulas. O caminho de pesquisa especifica a ordem na qual os esquemas são pesquisados quando um objeto, como uma tabela ou uma função, é referenciado por um nome simples que não inclui um qualificador de esquema.

Se for criado sem especificar um esquema de destino, o objeto será adicionado ao primeiro esquema listado no caminho de pesquisa. Quando houver objetos com nomes idênticos em esquemas diferentes, um nome de objeto que não especificar um esquema irá se referir ao primeiro esquema no caminho de pesquisa que contenha um objeto com esse nome.

Para alterar o esquema padrão da sessão atual, use o comando SET.

Para obter mais informações, consulte a descrição search_path na Referência de configuração.

Permissões baseadas em esquemas

As permissões baseadas em esquema são determinadas pelo proprietário do esquema:

  • Por padrão, todos os usuários têm permissões CREATE e USAGE no esquema PUBLIC de um banco de dados. Para impedir que usuários criem objetos no esquema PUBLIC de um banco de dados, use o comando REVOKE para remover essa permissão.

  • A menos que recebam a permissão USAGE pelo proprietário do objeto, os usuários não podem acessar objetos em esquemas que não possuam.

  • Se tiverem concedido a permissão CREATE a um esquema criado por outro usuário, os usuários poderão criar objetos nesse esquema.