Administrando o PostgreSQL com o pgAdmin

Esta contribuição está participando do sorteio da Mochila Targus Matrix. Envie seu texto e participe você também, você contribui com outros usuários e ainda pode faturar uma mochila novinha em folha para o seu laptop. Saiba mais sobre como participar.

Sobre o Autor:

Evandro Ricardo Silvestre

Nesse segundo artigo sobre PostgreSQL (confira o primeiro artigo do Evandro aqui: http://www.jack.eti.br/www/?p=253) vamos demonstrar como administrar o Postgresql através do pgAdmin. O pgAdmin é uma excelente ferramenta para administração do Postgresql, ela permiti fazer todas as tarefas necessárias de administração do banco de dados. Algumas tarefas mais complexas são feitas através do comando psql.

O pgAdmin é instalado automaticamente quando instalamos o Postgresql. Pode ser encontrado em Iniciar / Programas / Postgresql 8.1 / pgAdmin III. A versão instalada é 1.4.2, recentemente foi lançado a versão 1.6.1 que pode ser baixado aqui. A versão 1.6.1 do pgAdmin vem com muitas melhorias em termos de produção, uma delas é o AutoComplete de SQL, onde com um CTRL + Espaço temos uma relação de todas as tabelas e Views do banco. Na parte administrativa o pgAdmin 1.6.1 não teve muitas mudanças em relação ao 1.4.2. Esse artigo será escrito em cima do pgAdmin 1.4.2, mas pode ser facilmente acompanhado na versão 1.6.1.

Ao abrir o pgAdmin veremos a seguinte tela.

No lado esquerdo temos as conexões com o servidor de banco de dados. No nosso caso teremos apenas uma. Mas podemos criar conexões com outros servidores clicando em File / Add Server. A instalação do Postgresql já deixou configurado o acesso ao nosso servidor local, basta dar dois cliques em cima de PostgreSQL Database Server 8.1 para acessarmos.

Digite a senha definida na instalação e clique em OK. Se desejar clique em Store Password para não ter que digitar a senha novamente.

Assim que conectar no servidor, no lado esquerdo aparecerá a árvore demonstrada na imagem acima.

Em Databases temos todos os banco de dados configurado em nosso servidor.

Em Group Rules e Login Rules são definidos os grupos e os usuários do banco de dados. Nessa configuração configuramos o controle de acesso ao servidor. É importante ter um controle de acesso rígido em um sistema grande, no nosso caso não vamos dar tanta atenção para esse tipo de controle.

Ao clicar em (+) da opção Databases teremos o banco de dados Postgresql que é criado automaticamente na instalação. Esse banco de dados não será utilizado e não pode ser excluído por se tratar de um banco utilizado para administração do Postgresql.

Vamos criar nosso banco de dados. Clique com o botão direito do rato em cima de Databases e escolha a opção New Database.

Os campos:

Name: Nome do banco de dados. É recomendável ser em letras minúsculas.

Owner: Usuário proprietário do banco de dados. Vamos selecionar o usuário postgres.

Enconding: A codificação dos caracteres do nosso banco. Utilizaremos Latin1, pois atente a todas os caracteres e acentuações do nosso dicionário.

Template: É o banco de dados que será utilizado como padrão para a criação do nosso banco. Utilizaremos Template0.

Após configurar clique em OK e teremos nosso banco de dados devidamente criado.

Para acessar o banco, clique em cima do seu nome. Logo em seguida clique no sinal + em Schemas e faça o mesmo para public.

Temos uma visão do nosso banco de dados.

Cada opção dessa lista contém um tipo de objeto de banco de dados. Os objetos mais utilizados são:

Functions: contêm as Stored Procedures que retorna algum valor.

Trigger Functions: contêm as Funções de Gatilhos. A Trigger Function é como uma Stored Procedures, só que é acionado por uma Trigger de uma determinada tabela.

Procedures: contêm as Stored Procedures que retorna “void”. Ou seja não retorna nada.

Operators: contêm os operadores matemáticos criadas. Essa opção é pouco utilizada.

Sequences: contêm as seqüências utilizadas para autonumeração de um campo.

Tables: contêm as tabelas.

Type: contêm os tipos definidos pelo desenvolvedor, normalmente utilizados para que as Functions retorne mais de uma coluna.

View: contêm as Visões criadas de uma ou mais tabela.

Demonstraremos apenas como criar tabelas, para utilizar os outros objetos de banco dados recomendo ler o manual do Postgresql disponível aqui e qualquer dúvida responderemos nos comentários.

Para criar uma tabela podemos utilizar a Interface gráfica do pgAdmin ou criar com comandos SQL. Vamos criar utilizando o pgAdmin.

Clique com o botão direito do rato em Tables e selecione a opção New Table.

A opção Name é o nome da tabela e a opção Comment é um comentário sobre a tabela. Esse comentário não é obrigatório e só é exibido em ferramentas de administração de banco de dados.

Após determinar o nome da tabela clique na guia Columns para criarmos as colunas de dados da nossa tabela. Na guia Columns clique no botão Add.

Name: determina qual o nome do coluna de dados da nossa tabela. Por definição não utilizamos qualquer tipo de acentuação e caracteres especiais no nome da coluna, exceto o underline (_).

Data Type: é o tipo de dados do nosso campo. A lista de tipo de dados suportados pelo Postgresql pode ser obtida aqui. Os tipos de dados mais usados são caracteres, numéricos, data/hora e lógicos.

Length: tamanho do campo. Esse campo será do tipo varchar (caractere) e suportará no máximo 50 caracteres.

Default Value: é o valor padrão para o campo. Esse valor será determinado quando não for definido na inserção do registro.

Not NULL: indica que esse campo não pode ser nulo, ou seja, é obrigatório o seu preenchimento.

Comment: é igual ao Comment da tabela, citado acima.

Após definir os campos, clique em OK. Vamos definir todos os campos da nossa tabela.

Como podem ver na imagem acima, o campo “pais” tem uma propriedade default ‘Brasil. Dessa forma se o usuário não digitar nada para esse campo, o país será assumido automaticamente Brasil. Atente que Brasil deve estar entre apostrofes, pelo fato de ser do tipo caractere.

Clique na guia Constraint. As Constraint são regras definidas para uma determinada coluna. Quando definimos que a coluna “codigo” é Not Null, estamos definindo uma regra para essa coluna. A regra mais utilizada é a Primary Key (Chave Primária). Essa regra indica que um campo será Not Null e UNIQUE (único), ou seja, é obrigatório informar seu valor e esse valor deve ser único (não pode repetir na tabela).

Outra constraint utilizada com certa freqüência é a Check Contraint onde definimos uma regra para aceitação do campo. Por exemplo: “idade > 0”, só será aceite idades digitadas maiores que 0 (zero).

Vamos criar uma Chave Primária. Selecione Primary Key na lista e clique em Add.

Digite o nome da Chave Primária no campo name. Pode ser informado qualquer nome, mas por definição prefixamos o nome do campos que será coloca Chave Primária com “pk_”. Colocaremos a chave primária no campo “codigo” então nossa Chave Primária chamará pk_codigo. Após definir o nome clique na guia Columns.

Selecione a coluna que será Chave Primária (no caso a coluna “codigo”) e clique em Add. É possível definir mais de uma coluna como Chave Primária, isso criaria uma Chave Composta. Nesse caso iremos utilizar uma Chave Simples, depois de adicionar o campo clique em OK e teremos nossa Constraint.

Na guia Privileges temos os privilégios de acesso a tabela. Mas não entrarei em detalhes.

Na guia SQL, temos o código SQL montado pelo pgAdmin.

O SQL mostrado na guia SQL é o qual será executado no banco para criar nossa tabela. Essa informação pode ser copia e guardada para criar um Script.

Para confirmar a criação da nossa tabela clique em OK.

Temos nossa tabela criada. Para visualizar o conteúdo, selecione a tabela clique no botão demonstrado na figura abaixo.

Nessa tela é possível inserir, alterar e excluir dados na tabela. Para isso basta clicar na primeira coluna e digitar, ao teclar ENTER a informação será salva.

Verifique os seguintes pontos:

  • Tente digitar o nome sem ter digitado o código. Mostra mensagem de erro porque o campo código necessita de um valor.
  • Digite um código já existente e tecle ENTER até o final das colunas. Mostra mensagem de erro porque o campo código deve ser único.
  • Não digite o país. Vai assumir Brasil.

Vamos criar mais uma tabela.

Essa tabela irá conter os telefones das entidades cadastradas. Vamos fazer um relacionamento de forma que cada entidade possa ter N telefones. Para isso vamos criar um Foreign Key (FK ou Chave Estrangeira). Uma chave estrangeira cria o relacionamento entre a tabela filha (“entidades_telefone”) e uma coluna (“codigo”) com a tabela pai (“entidades”) e uma coluna (“codigo”). Esse relacionamento é baseado na teoria Modelo Relacional. Para criar uma Chave Estrangeira, clique em Contraint, seleciona Foreign Key na lista e clique em Add.

Defina o nome da Chave Estrangeira. Por definição o nome da chave estrangeira vem deve ser prefixado por “fk_” seguido do nome da tabela pai e tabela filhas separadas por “_”. No nosso caso a Chave Estrangeira irá chamar: fk_entidades_entidades_telefone. Clique na guia Columns e selecione a coluna que irá compor nossa Chave Estrangeira.

No campo Local Column será selecionado o campo da tabela filha (“entidades_telefone”) e no campo Refencing será selecionado o campo da tabela pai (“entidades”). No caso vamos selecionar o campo “codigo” nas duas tabelas. Clique no botão Add. Na guia Action temos a ação que será executada caso haja Alteração (On Update) ou Exclusão (On Delete) no registro da tabela pai. Para maiores informações consulta a documentação do Postgresql.

Depois de definir a Chave Estrangeira, clique em OK. Voltaremos para a tela de nova Tabela. Clique em OK novamente para criar nossa nova tabela.

Temos agora duas tabelas no nosso banco de dados, sendo que a tabela “entidades_telefone” depende da tabela “entidades”.

Faça alguma inserção na tabela “entidades_telefone”.

Verifique os seguintes pontos:

  • Informe um código que não exista na tabela “entidades”. A mensagem de erro ocorre porque estamos tentando inserir um registro que não tem relação na tabela “entidades”
  • Informe um código já cadastrado na tabela “entidades_telefone”. Ele permite ter mais um telefone para cada entidade. Então não ocorre nenhuma mensagem de erro.

A criação de tabelas é a estrutura básica para utilizar um banco de dados. E um conhecimento que não pode ser ignorado. Um banco de dados pode viver sem Stored Procedures, Views, mas não pode viver sem uma tabela. Demonstrarei criação de Views conforme o projeto for crescendo e necessitar de criação de Views. Essa estrutura de tabelas demonstradas nesse artigo é meramente ilustrativa, antes de iniciar o projeto iremos definir a estrutura de tabela definitiva para o mesmo.

O pgAdmin é uma excelente ferramenta para administração, mas não tem muitos recursos para produção de códigos SQL (Stored Procedures, Views, Trigger), por isso no próximo artigo abordarei o tema “Ferramentas free de bases de dados para produção”, onde apresentaria e demonstrarei a parte básica de algumas ferramentas free para diversos banco de dados com a intenção de ajudar aqueles que precisam escrever códigos SQL no banco de dados.