Académique Documents
Professionnel Documents
Culture Documents
N 06 N 08 N 21 N 27 N 42
ndice:
Introduo......................................................................................................................... 5 Caractersticas................................................................................................................... 5 Recursos Presentes na Verso mais Recente.................................................................... 6 Sobre o PostgreSQL ......................................................................................................... 6 Limite Valor ..................................................................................................................... 6 Um Pouco da Histria do PostgreSQL............................................................................. 7 Tipos de Dados do PostgreSQL ....................................................................................... 8 Tipos de dados: Caracteres ........................................................................................... 8 Tipos de dados: Numricos .......................................................................................... 8 Nmeros de preciso fixa ............................................................................................. 8 Tipos de ponto flutuante ............................................................................................... 9 Pseudo tipos seriais....................................................................................................... 9 Uso.................................................................................................................................. 10 Criao de banco de dados no PostgreSQL................................................................ 10 Referncias ..................................................................................................................... 49
II
Introduo
O PostgreSQL um SGBD (Sistema Gerenciador de Banco de Dados) objetorelacional de cdigo aberto, com mais de 15 anos de desenvolvimento. robusto e confivel, alm de ser extremamente flexvel e rico em recursos. Um de seus atrativos possuir recursos comuns a banco de dados de grande porte (SQL Server), o que o deixa apto a trabalhar, inclusive, com operaes de misso crtica. Alm disso, trata-se de um banco de dados verstil, seguro e gratuito disponvel sob uma licena BSD. O PostgreSQL considerado objeto-relacional por implementar, alm das caractersticas de um SGBD relacional, algumas caractersticas de orientao a objetos, como herana e tipos personalizados com conformidade e padres. Ele roda em todos os grandes sistemas operacionais, incluindo GNU/Linux, Unix (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), e MS Windows. Alm de tudo totalmente compatvel com ACID, tm suporte completo chaves estrangeiras, junes (JOIN), vises, gatilhos e procedimentos armazenados em mltiplas linguagens. Inclui a maior parte dos tipos de dados do ISO SQL: 1999, incluindo INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP. Suporta tambm sons ou vdeos. Possui interfaces nativas de programao para C/C++, Java, Net, Perl, Python, Ruby, Tcl, ODBC, entre outros, e uma documentao excepcional. O PostgreSQL teve patrocnio de diversas empresas, entre as quais se destacam: Fujitsu, Hub.Org, NTT Group, Red Hat, Skype, SRA e Sun Microsystems. O software tem adquirido prestgio na comunidade Linux, tendo recebido diversas vezes o prmio Linux Journal Editor's Choice de melhor Sistema de Gerenciamento de Banco de Dados. A aceitao do PostgreSQL tem se ampliado para alm da comunidade de cdigo aberto. H entre os seus usurios grandes empresas internacionais, rgos governamentais de vrios pases e universidades de prestgio mundial. Existe uma lista dos principais usurios no Brasil e no mundo e, tambm, h alguns estudos de caso de aplicaes que utilizam o PostgreSQL.
Caractersticas
Desenvolvedor: PostgreSQL Global Development Group; Primeiro lanamento: um de maio de 1995; ltima verso: 9.0; Idiomas: 23 idiomas; Plataforma (sistema Operacional): Multiplataforma;
Compatibilidade: Java, PHP, Python, Ruby, e C/C++; Suporte: recursos como triggers, views, stored procedures, SSL, MVCC, Website: http://www.PostgreSQL.org.br;
Sobre o PostgreSQL
Como um banco de dados de nvel corporativo, o PostgreSQL possui funcionalidades sofisticadas como o Controle de Concorrncia Multiversionado (MVCC), Recuperao em um Ponto no Tempo (PITR), Tablespaces (diviso lgica), Replicao Assincrnica, Transaes Agrupadas, Cpias de Segurana Quente (hotbackup), um sofisticado Planejador de Consultas e Registrador de Transaes Sequenciais (WAL) para tolerncia falhas. Suporta conjuntos de caracteres internacionais, codificao de caracteres multibyte, Unicode e sua ordenao por localizao, sensibilidade formatao (maisculas e minsculas). altamente escalvel, tanto na quantidade enorme de dados que pode gerenciar, quanto no nmero de usurios concorrentes que pode acomodar. Existem sistemas ativos com o PostgreSQL em ambiente de produo que gerenciam mais de 4TB de dados. Alguns limites do PostgreSQL esto includos na tabela abaixo.
Limite Valor
Tamanho Mximo do Banco de Dados Ilimitado Tamanho mximo de uma Tabela 32 TB Tamanho Mximo de uma Linha 1.6 TB Tamanho Mximo de um Campo 1 GB Mximo de Linhas por Tabela: Ilimitado Mximo de Colunas por Tabela 2501600 dependendo do Mximo de ndices por Tabela: Ilimitado 6
Inteiros
Esse tipo armazena nmeros sem componentes fracionais. Nmeros inteiros possuem limites mximos e mnimos, e qualquer tentativa de se armazenar valores fora dessa faixa ir gerar um erro. Existem os seguintes tipos inteiros:
smallint ou int2 2 bytes (16 bits) int, integer ou int4 4 bytes (32 bits) int8, bigint 8 bytes (64 bits) Na maior parte dos casos, o tipo integer oferece a melhor relao performance versus capacidade de armazenamento. O tipo bigint, por ser mais pesado e conseqentemente mais lento, deve ser usado somente quando a faixa de armazenamento do integer realmente no for suficiente.
Uso
Criao de banco de dados no PostgreSQL
Exemplo Biblioteca: Aps instalar o PostgreSQL, clique em iniciar > todos os programas > PostgreSQL > pgAdmin III
10
Antes de tudo, necessrio conectar-se com o servidor. Clique com o boto direito no servidor desejado e clique em conectar, ou apenas clique duas vezes no servidor.
Depois de conectado, clique no + do seu servidor conectado e com o boto direito do mouse clique em Banco de Dados > Novo Banco de Dados
11
Normalmente, o criador se torna o dono do novo banco de dados. Super usurios podem criar bases de dados detidas por outros usurios, usando a clusula OWNER. Eles podem at mesmo criar bancos de dados pertencentes a usurios sem privilgios especiais. Os usurios comuns com privilgio CREATEDB s podem criar bases de dados detidas por si prprios. Por padro, o novo banco de dados ser criado clonando o banco de dados padro do sistema template1. Um modelo diferente pode ser especificado por cdigo, nome do modelo. Em particular, escrevendo TEMPLATE template0, voc pode criar um banco de dados virgem contendo apenas os objetos padro pr-definidos pela verso do PostgreSQL. Isso til se voc deseja evitar a cpia de qualquer objeto da instalao local que possa ter sido adicionado ao template1.
12
Aparecer a janela onde se definir os parmetros do banco de dados a ser criado: Nome: definido o nome do banco de dados; Dono: O nome do usurio do banco de dados que ser o novo banco de dados, se no for inserido um nome ficar como DEFAULT para utilizar o padro; Modelo: O nome do modelo a partir do qual pretende criar o novo banco de dados, se no escolhido, ser usado o modelo padro (template1); Tablespace: O nome da tabela que ser associado ao novo banco de dados, ou DEFAULT para utilizar o espao de tabelas do banco de dados modelo. Esta tabela ser o tablespace padro para os objetos criados neste banco de dados; Connection Limit: Quantas conexes simultneas podem ser feitas a este banco de dados. -1 (O padro) significa sem limite.
NOTA: Na guia SQL possvel visualizar e alterar o cdigo de criao do banco de dados Neste exemplo, o nome do banco de dados ser Biblioteca e ser usado o modelo Template1 conforme a imagem abaixo.
13
Aps a criao, ser possvel visualizar o banco de dados que foi criado, clicando no sinal de + em Banco de dados do lado esquerdo da tela, na guia propriedades no lado direito da tela.
Para criar as tabelas, chaves e etc.: Digitando o cdigo poderamos clicar em cima do banco criado com o boto direito do mouse e clicar em script Create. Veremos essa opo mais adiante. Note que 14
no Painel SQL no canto direito inferior da tela est a visualizao do cdigo que foi criado quando criamos o banco de dados pela interface.
15
1. 2. 3. 4.
Demonstraremos primeiro a criao do banco de dados pela interface: A esquerda da tela, clique no sinal de + do banco de dados criado; Clique no sinal de + de esquemas; Clique no sinal de + de public; Clique com o boto direito em Tabelas e clique em Nova Tabela.
16
Demonstraremos algumas formas de se criar campos, restries e ndices. A tabela Usuario ter os campos: CodUsuario; CodTipo; Nome; Endereco; Telefone Criaremos agora a tabela Usuario:
No campo nome coloque o nome da tabela Na prxima etapa criaremos os campos da tabela, mas antes, repare no campo OID e a opo desmarcada Possui OIDS: Se uma tabela criada com WITH OIDS, cada registro recebe um OID nico. OIDs so automaticamente atribudos como inteiros de 4 bytes que so nicos ao longo de toda instalao. Contudo, eles so limitados em 4 bilhes e, ento, os OIDs comeam a ser duplicados. O PostgreSQL utiliza OIDs para ligar as tabelas do sistema. Para numerar registros nas tabelas dos usurios, melhor utilizar SERIAL ao invs de OIDs porque seqncias SERIAIS so nicas somente em uma tabela; e so menos propcias a atingir o limite. SERIAL8 est disponvel para armazenar valores de seqncia com oito bytes.
17
Clique na guia Colunas; Para adicionar as colunas das tabelas clique em adicionar.
18
Vamos aos campos: Nome: digite o nome da coluna a ser criada Tipo de dado: Digite o tipo de dado da coluna; Neste exemplo usaremos o tipo de dado serial que um auto-incremento. Como CodUsuario ser a chave primria e foi um campo criado justamente para relacionar a tabela Usuario com as outras tabelas, interessante que seja criado o numero automaticamente sem que o usurio precise preencher esse campo. No NULL: marque esta opo sempre que o campo (coluna) a ser inserido no possa ser nulo. Neste caso, marcaremos essa opo, j que o campo a ser criado se tornar chave-primria. Aps marcar as opes clique em OK. Note que Apareceu na janela a coluna que adicionamos Clique em Adicionar novamente, dessa vez o nome do campo CodTipo escolheremos o tipo de dado integer, pois esse campo ser chave estrangeira nessa tabela. Na tabela TipoUsuario, que ser a de origem, ele ser chave primria do tipo serial. Esse campo tambm no ser nulo.
Adicione tambm as colunas nome e endereco, s que esses sero do tipo Text.
19
Agora adicionaremos o campo Telefone. Este campo ter o valor padro de 11 caracteres. Clique em OK.
Note que esto listados todos os campos adicionados e a descrio de cada campo:
20
21
Agora Definiremos a Chave Primria: Clique na guia restries, mantenha a opo chave primria na caixa de texto e clique em adicionar:
22
Aparecer a janela abaixo: Clique na guia Colunas na caixa de texto. Na parte inferior da mesma janela ter todas as colunas que criamos da tabela. Escolha a opo CodUsuario , em seguida clique no boto Adicionar.
Agora Clique na guia Propriedades e em Nome defina o nome para a chave primaria, no nosso caso colocaremos pk_CodUsuario aonde pk vem de Primary Key. Clique em OK.
23
24
Note que a chave Primria que criamos j est listada. Observe tambm que na caixa de texto abaixo no h mais a opo Chave Primria. Se j houvesse outras tabelas e j existisse o campo para referenciar a chave estrangeira, poderamos criar agora, mas como no h, clique em OK.
25
Clicando no sinal de + de Tabelas, estar visvel a tabela que criamos. Clicando no sinal de + da Tabela criada, estar visvel o nmero de colunas, restries, ndices, regras, e outros. Se voc clicar no sinal de + de Colunas ver todas as colunas criadas, do mesmo jeito no sinal de + de restries ver a chave primria que criamos, se voc adicionar chaves estrangeiras, restrio de verificao ou de unificao tambm as encontrar em restries.
Clique novamente com o boto direito do mouse em tabelas Dessa vez faremos um caminho um pouco diferente.
26
27
Digite o nome da nova tabela, que dessa vez ser Acervo, e clique em OK.
28
Clique no sinal de + em Acervo clique com o boto direito em Colunas e clique em Nova Coluna.
29
Repare que este outro modo de se chegar mesma janela de definio de colunas que chegamos antes. CodItem ser a chave primria desta tabela, foi criado apenas para ser chave primria, j que nenhuma das colunas estava apta, por isso, ser definido o tipo de dado serial e no ser nulo. Clique em OK.
30
A coluna CodItem j est adicionada na tabela Acervo. Clique novamente em Colunas com o boto direito do mouse >Nova Coluna e voc ver a mesma janela. A coluna DataInscricao ser do tipo date, pois registrar a data de inscrio dos livros e revistas da biblioteca e no poder ser nulo.Clique em OK.
Crie a coluna Quantidade como tipo de dado Integer e sendo not null, a coluna Paginas como Integer tambm, porm podendo ser nulo e crie tambm a coluna Observacoes como tipo de dado Text podendo conter valores nulos.
31
Definiremos a nica restrio desta tabela que a chave primria: Clique com o boto direito do mouse em Restries > Novo Objeto > Nova Chave Primria
32
33
Agora Clique na guia Propriedades, Digite o nome para a chave primria e clique em OK.
34
35
Definiremos agora a chave primria que ser CodItem e deixaremos o nome como PK_Livro:
CodItem tambm ser chave estrangeira,clique em restries novamente >novo objeto>nova chave estrangeira.
36
Na janela que aparece Coloque um nome para a chave estrangeira, nesse caso colocaremos fk_CodItem onde FK vem de Foreign Key. Em referncias escolha a tabela a ser referenciada.
Clique na aba Colunas em Coluna Local escolha a coluna que ser chave estrangeira. Em Referenciado escolha a coluna da tabela referenciada que ser a referencia de chave estrangeira. Clique em Adicionar e em seguida em OK.
37
Vamos criar os ndices agora. Nesta tabela sero 3:Titulo,Autor e ISBN.Clique com o boto direito do mouse em ndices>Novo ndice.
38
Defina o nome de ndice a ser criado. Nos campos: Unicidade: Faz com que o sistema procure por valores duplicados na tabela quando o ndice criado, se existirem dados na tabela, e sempre que novos dados forem adicionados. A tentativa de inserir ou de atualizar dados, que produza um valor duplicado, gera um erro. Mtodo de Acesso: O nome do mtodo de acesso a ser utilizado pelo ndice. O mtodo de acesso padro o BTREE. O PostgreSQL implementa quatro mtodos de acesso para os ndices: BTREE: uma implementao das "B-trees" de alta concorrncia de LehmanYao. RTREE: implementa "R-trees" padro, utilizando o algoritmo de partio quadrtica de Guttman. HASH: uma implementao das disperses lineares de Litwin. GIST: Generalized Index Search Trees (rvores de Procura de ndice Generalizadas).
39
NOTAS: O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice Btree sempre que um atributo indexado estiver envolvido em uma comparao utilizando um dos seguintes operadores: <, <=, =, >=, > O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice Rtree sempre que um atributo indexado estiver envolvido em uma comparao utilizando um dos seguintes operadores: <<, &<, &>, >>, @, ~=, && O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice hash sempre que um atributo indexado estiver envolvido em uma comparao utilizando o operador =. Atualmente somente os mtodos de acesso B-tree e Gist suportam ndices com mais de uma coluna. Por padro, at 16 chaves podem ser especificadas (este limite pode ser alterado na gerao do PostgreSQL). Na implementao atual, somente o B-tree suporta ndices nicos. Uma classe de operador pode ser especificada para cada coluna de um ndice. A classe de operador identifica os operadores a serem utilizados pelo ndice desta coluna. Por exemplo, um ndice B-tree sobre inteiros de quatro bytes vai utilizar a classe de operadores int4_ops; esta classe de operadores inclui funes de comparao para inteiros de quatro bytes. Na prtica, a classe de operadores padro para o tipo de dado do campo normalmente suficiente. O ponto principal em haver classes de operadores que, para alguns tipos de dado, pode haver mais de uma ordenao que faa sentido. Por exemplo, pode se desejar ordenar o tipo de dado do nmero complexo tanto pelo valor absoluto, quanto pela parte real, o que pode ser feito definindo-se duas classes de operadores para o tipo de dado e, ento, selecionando-se a classe apropriada para a construo do ndice. Tambm existem algumas classes de operadores com finalidades especiais: As duas classes de operadores box_ops e bigbox_ops suportam ndices R-tree para o tipo de dado box. A diferena entre as duas que bigbox_ops ajusta as coordenadas da caixa para baixo, evitando excees de ponto flutuante ao executar multiplicao, adio e subtrao de coordenadas com nmeros de ponto flutuante muito grande (Nota: isto era verdade h algum tempo atrs, mas atualmente as duas classes de operadores utilizam ponto flutuante e so efetivamente idnticas).
40
Clique na guia Colunas escolha a coluna que ser o ndice, neste caso, a coluna Titulo clique em adicionar depois clique em OK.
Faa a mesma coisa com Autor e ISBN. Dever ficar como na figura abaixo:
41
Criaremos agora uma restrio de unicidade para a tabela ISBN. A restrio de unicidade garante que os dados contidos na coluna, ou no grupo de colunas, sejam nicos em relao a todas as outras linhas da tabela. Clique com o boto direito do mouse em Restries > Novo Objeto > Nova Restrio de Unicidade.
42
Clique na guia Colunas escolha a coluna desejada, neste caso a coluna ISBN, clique em Adicionar e clique em OK.
Desta vez, deixaremos o PostgreSQL colocar um nome para restrio.Veja na imagem abaixo:
43
Demonstraremos agora a criao das outras 3 tabelas por cdigo. V ao menu Ferramentas >Query Tool:
44
Quando aparecer a janela da Query, digite o cdigo como na imagem abaixo: Onde:
CREATE TABLE: Cria Tabelas; Os nomes da tabelas e colunas sendo criadas e referencias so digitadas dentro de aspas (); Vrgula (,) indica que h mais comando (como se fosse um e); Ponto e vrgula (;) indica o final do comando; O sinal de parntese [( ] abrindo como se fosse o inicio e o sinal de parntese fechando [)] como se fosse o fim do cdigo de um comando;
45
46
Clique no boto Executar Consulta, Escrever Resultado Para o arquivo destacado na imagem abaixo. Veja que a Query foi executada com sucesso:
47
Feche a janela da Query, aparecer uma mensagem perguntando se voc quer salvar a consulta, no nosso caso no salvaremos. Clique com o boto direito do mouse em tabelas e clique em atualizar:
E pronto! Note que as Tabelas que criamos esto listadas, est criado nosso exemplo de Banco de Dados.
48
Referncias
http://www.infowester.com/postgremysql.php http://www.devmedia.com.br/articles/post-6390-Introducao-ao-PostgreSQL.html http://wiki.PostgreSQL.org/wiki/Introdu%C3%A7%C3%A3o_e_Hist%C3%B3rico http://www.youtube.com/watch?v=rPR0NCrO1R4&feature=related http://www.htmlstaff.org/PostgreSQLmanual/sql-createindex.html http://pgdocptbr.sourceforge.net/pg74/ddl-constraints.html http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/DDL/Cria%C3%A7%C3% A3o_e_Exclus%C3%A3o_de_Bancos,_Esquemas,_Tabelas,_Views,_Constraints,_e tc http://pt.wikipedia.org/wiki/UTF-8 http://pt.wikipedia.org/wiki/PostgreSQL http://www.PostgreSQL.org.br http://pgdocptbr.sourceforge.net/pg80/extend-type-system.html http://www.htmlstaff.org/PostgreSQLmanual/sql-createindex.html http://www.bau-de-dev.com/banco-de-dados/trabalhando-com-chaves-primariasprimary-key-no-PostgreSQL
49
50