Escolar Documentos
Profissional Documentos
Cultura Documentos
Apresentação
Na aula passada iniciamos nosso estudo da organização lógica e física do
PostgreSql vendo a organização de seus diretórios, os tipos de arquivos que os
compõem e os databases.
Nesta aula continuaremos vendo os esquemas, para que servem e como
ajudam a organizar os dados dos bancos de dados.
Iremos ainda aprender a cria-los, eliminá-los e alterá-los tanto através da
linha de comando quanto do PgAdmin4.
Objetivos
1
Conteúdo online
1. ESQUEMAS (schemas)
Conforme vimos na aula anterior um servidor PostgreSql pode ser dividido em vários
bancos de dados (database). Estes por sua vez podem ser divididos em Esquemas
para facilitar a organização dos dados.
A importância desta possibilidade deriva do fato que ao realizar uma conexão ao
servidor um cliente do SGBD somente pode acessar os dados apenas do banco de
dados especificado no pedido de conexão. Portanto a possibilidade de criar
esquemas e dividir os dados entre eles permite que dados de diferente aspectos
possam ser acessados na mesma conexão. É como se pegássemos banco de
dados grande e o dividíssemos em banco menores e mais específicos, por exemplo
no banco de dados de uma empresa poderíamos ter o esquema da contabilidade, do
setor de compras, do setor de vendas , etc...
Um banco de dados deve possuir pelo menos um esquema, gerado quando da
criação do banco e denominado normalmente public, podendo possuir vários
identificados pelos seus nomes.
Caixa de Atenção
O esquema public é normalmente criado em um novo banco de dados devido a
existir modelo padrão template1
Neste esquema qualquer usuário pode acessar e criar objetos.
Este esquema não é obrigatório e pode ser eliminado, mas você terá que criar outro
esquema no banco de dados senão não conseguira criar tabelas ou outros objetos
Fim Caixa de Atenção
Os esquemas por sua vez possuem objetos de banco de dados como as tabelas, as
funções, os tipos de dados etc. O nome destes objetos deve ser único dentro de um
mesmo esquema mas pode se repetir em esquemas diferentes, por exemplo se
temos o esquema vendas e o esquema contabilidade os dois podem possuir um
tabela cliente, isto não irá gerar nenhum tipo de conflito. O mesmo ocorre
Caixa de Atenção
2
Ao se criar ou referenciar um objeto em um comando Sql, se não for informado o
esquema do mesmo ele, normalmente é criado ou procurado no esquema public, a
não ser que o parâmetro search_path especificar um comportamento diferente.
Fim Caixa de Atenção
Observe ainda que o nome do esquema é único dentro de um banco de dados, mas
pode se repetir em banco diferentes
2. Criação de esquema
O comando que criar um esquema é o CREATE SCHEMA.
O nome pode ser qualquer um não existente naquele banco de dados
Por exemplo:
CREATE SCHEMA aula_esquema;
Sua sintaxe é:
3
CREATE SCHEMA nome_do_esquema [ AUTHORIZATION nome_do_usuário ]
[ elemento_do_esquema [ ... ] ]
CREATE SCHEMA AUTHORIZATION nome_do_usuário [ elemento_do_esquema
[ ... ] ]
Onde:
nome_do_esquema
Define o nome do esquema que será criado. Observe que o nome não pode
começar por pg_, porque estes nomes são reservados para os esquemas do
sistema.
nome_do_usuário
O nome do usuário que será o dono do esquema. Se for omitido, tem como padrão o
usuário que está executando o comando.
elemento_do_esquema
Um comando SQL definindo um objeto a ser criado no esquema.
Por exemplo para criar o esquema aula2_esquema com a tabela aula o comando
seria
Create Schema aula2_esquema Create Table aula (mat integer, nome varchar(20));
4
- O comando funcionou pois não deu erro mas obviamente não retornou dados pois
a tabelas está vazia
- Tivemos que qualificar o nome da tabela, colocando antes o nome do esquema e
os separando por um ponto, é a forma que temos que utilizar para referenciar um
objeto de um esquema, pois o comportamento padrã-o é buscar apenas no
esquema public.
5
Na configuração padrão este comando retorna:
Onde:
$user – determina que o primeiro local a ser procurado é o esquema com o mesmo
nome do usuário. Se não existir passa para o próximo da lista
Public - determina que deve ser procurado no public..
Caixa de Atenção
O primeiro esquema que for encontrado, entre os listados no caminho de procura, é
o local padrão para a criação dos novos objetos. Por isso, por padrão, eles são
criados no public.
Fim Caixa de Atenção
Observe o seguinte quando voce comanda \dt ele somente lista as tabelas do public
devido ao search_path estar configurado para $user e public.
E quando voce tentar dar um select na tabela aula sem qualificar com o esquema
ele não encontra a tabela.
6
Vamos verificar o caminho de procura
Note que agora não temos $user, mas o public continua sendo o padrão pois foi
listado primeiro no comando SET search_path TO public, aula2_esquema;
Se tivéssemos listado aula2_esquema primeiro ele seria o local de criação padrão
para todos os novos objetos do banco de dados
Agora se repetirmos os comando \dt e Select a tabela aula seria encontrada
4. Alteração de esquema
Voce pode alterar o proprietário do esquema ou o seu nome com o comando ALTER
SCHEMA
Cuja Sintase é:
ALTER SCHEMA nome RENAME TO novo_nome
ALTER SCHEMA nome OWNER TO novo_dono
7
Onde:
Note que tabela aula saiu da listagem de tabelas e deu erro no select.
Porque isso ocorreu?
Vamos ver o caminho de procura
5. Eliminação de esquema
Voce pode eliminar um esquema com o comando DROP SCHEMA
8
Cuja Sintase é:
Vejamos um exemplo
9
DROP SCHEMA aula3_esquema CASCADE;
Agora funcionou.
Note que o servidor informou que apagou a tabela também.
10
Fig1 Esquemas no PG_Admin4
Na figura vemos que existe apenas o esquema public.
Após esta escolha aparece a janela da fig3 onde devemos escolher o owner e o
nome do esquema na aba general
11
Fig3 Criando Esquemas no PG_Admin4
12
Fig5 Criando Esquemas no PG_Admin4
Para ver os objetos existentes no esquema basta clicar no > antes no nome do
esquema (Fig8)
13
Fig8 Esquemas no PG_Admin4
Aparece então a janela de criação onde na aba general voce de digitar o nome da
tabela (Fig 10)
14
Fig10 Criando Tabelas no Esquema
A seguir na aba columns voce deve definir as colunas da tabela clicando no + (fig11)
15
A aba Sql mostra o comando que será executado (Fig 12)
16
Fig14 Esquemas no PG_Admin4
Observe que agora voce tem acesso aos metadados da tabela aula, suas colunas,
constraints, etc.
17
Aparece então a janela de propriedades onde na aba general voce pode escolher o
novo nome ou o novo proprietário, no caso estamos mudando o nome de
aula_esquema para aula1_esquema (Fig16)
18
Fig18 Esquemas no PG_Admin4
19
Fig21 Esquemas no PG_Admin4
O erro ocorre porque em esquema dois temos objetos, no caso a tabela aula, temos
dois caminhos então primeiro dropar a tabela ou então escolher DROP CASCADE
no menu (Fig22)
20
Fig23 Esquemas no PG_Admin4
7. Modelos de utilização
A grande utilização dos esquemas é permitir uma melhor organização dos dados do
banco de dados, facilitando assim sua gerência e consulta.
Existem alguns modelos que podemos utilizar para a criação de esquemas , vamos
a eles:
• Usar apenas o esquema public – Implica em não se criar nenhum outro esquema,
todos os usuários acessam apenas o public. É recomendado, particularmente,
quando apenas um usuário ou poucos usuários colaborativos existem no banco de
dados.
• Criar um esquema para cada usuário – É criado um esquema para cada usuário do
banco de dados com o seu nome. Particularmente útil para usuários de aplicação
que acessam apenas os seus dados. Como o caminha de busca começa com $user
cada uma acessará e manipulará seus dados no próprio esquema por padrão. Neste
caso deve ser revogado o acesso ao public ou, melhor ainda, remover este
esquema.
•Criar esquemas para objetos compartilhados – Quando existem objetos
compartilhados entre várias aplicações ( tabelas, funções, etc.) estes devem se
colocados em esquemas próprios. Devem também ser concedidos privilégios de
acesso aos usuários que iram utiliza-los, desta forma eles poderão referencia-los
através da qualificação de seus nomes com o nome do esquema ou estes esquema
podem ser incluídos no caminho de busca.
21
Atividades
Atividade 1:
Acessando o SGBD criado na aws crie um esquema chamado atividade 1 e confirme
a sua criação
Gabarito comentado
Voce deve logar como superusuario do banco de dados e dar o comando
Create schema atividade1 ;
Atividade2:
Na linha de comando altere o nome do esquema criado na atividade 1 para
atividade2 e confirme a alteração.
Gabarito Comentado:
Para alter o nome é necessário como superusuario dar o comando:
ALTER SCHEMA atividade1 RENAME TO atividade2;
22
Para confirmar a criação use \dn
Gabarito Comentado:
Para eliminar a role é necessário como superusuario dar o comando
DROP SCHEMA atividade2
23
Atividade 4: Utilizando o PGAdmin crie o esquema atividade4 e confirme a sua
criação
Gabarito Comentado:
Para realizar o pedido os passos são os seguintes:
3. Clicar em SAVE
24
4-Para confirmar a criação basta ver a lista de schemas
Referências
Manual do PostGreSql
Santos E. V. Administração do PostGreSql 1ª.Ed 2017
Caiut F – Administração de Banco de Dados 1ª.Ed 2015
Próximos passos
Explore +
25