AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito, e é coordenado pela PostgreSQL Global Development Group. O desenvolvimento do PostgreSQL é realizado por diversos voluntários, espalhados em todo o mundo (assim como o PHP). Assim como as liguagens SQL padrão, conta com recursos como consultas, chaves primárias, chaves estrangeiras, gatilhos, visões, indexação, dentre outros. O PostgreSQL possui algumas ferramentas administrativas, como o PHPPGADMIN (desenvolvido em PHP) e o PGADMIN III. Estas ferramentas facilitam a utilização deste banco de dados, no momento de gerar o banco de dados, criar uma tabela, gerar chaves primárias e estrangeiras. Para maiores esclarecimentos quanto ao PostgreSQL, acesse http://pgdocptbr.sourceforge.net/pg80/tutorial-sql.html BANCO DE DADOS Bancos de dados (ou bases de dados), são conjuntos de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa tabelas que possuem informações em comum e dentro de cada tabela armazenamos registros. 1
EXEMPLO DE MODELAGEM DE RELACIONAMENTO Vamos trabalhar durante o semestre com a construção de um sistema, no qual estaremos construindo durante o semestre. Algumas definições importantes: Tabela: conjunto de registros e informações armazenadas. Campo (colunas): conjunto de itens que um registro pode conter Registro (linhas): conjunto campos relacionados e armazenados em um registro. Dicionário de Dados Um Dicionário de Dados (do inglês Data Dictionary) é uma coleção de metadados que contêm definições e representações de elementos de dados. Dentro do contexto de SGBD, um dicionário de dados é um grupo de tabelas e visões, habilitadas apenas para leitura ou consulta, ou seja, é uma base de dados, propriamente dita, que entre outras coisas. Exemplo de dicionário de dados. Dicionário de Dados: cursos Campo Tipo Tamanho Observação codcurso (PK) Serial Auto incremento nomecurso Varchar 40 Not null 2
Constraints (Restrições) Constraints (restrições) mantém os dados do usuário restritos, e assim evitam que dados inválidos sejam inseridos no banco. A mera definição do tipo de dado para uma coluna é por si só um constraint. Por exemplo, uma coluna de tipo DATE restringe o conteúdo da mesma para datas válidas. Exemplos: not null, relacionamentos, valores default, chaves primárias, etc INSTRUÇÕES Segue abaixo as instruções mais utilizadas para manipulação de dados em tabelas em um banco de dados. INSERT INTO UPDATE DELETE SELECT ORDER BY INNER JOIN, LEFT JOIN CONSTRAINT INCLUI DADOS NA TABELA ALTERA DADOS EM UMA TABELA EXCLUI DADOS DE UMA TABELA SELECIONA DADOS EM UMA TABELA ORDENA DADOS DE UMA TABELA UNE DADOS DE DUAS OU MAIS TABELAS CRIA UMA RESTRIÇÃO EM UMA TABELA FERRAMENTA PGADMIN III Para gerenciarmos o banco de dados PostgreSQL, vamos utilizar o PGADMIN III, um gerenciador de banco de dados, muito simples e intuitivo. Acesse o aplicativo PGADMIN III após a instalação do Postgresql, o aplicativo PGADMIN III será instalado junto. Clique no botão INICIAR e procure por Postgresql 8.0 ou um por nome similar. 3
Dê um duplo clique na linha PostgreSQL Database Server 8.0 Este será o seu servidor de banco de dados. O sistema irá solicitar a senha de acesso ao servidor de banco de dados. Digite a senha de acesso ao servidor. Esta senha foi gerada quando você instalou o PostgreSQL no seu computador. Após a validação da senha de acesso ao servidor, você terá acesso a todos os Bancos de Dados e Tabelas já criados e terá a possibilidade de criar novos. Criar o Banco de Dados Clique em Database, clique com o botão direito do mouse e acesse New Database 4
Nesse espaço, poderão ser criados os bancos de dados através da ferramenta. Dê um nome ao seu banco de dados. Dê um clique sobre o banco de dados. Utilizando o SQL QUERY. No painel de controle do PGADMIN III clique no ícone SQL. Antes porém, clique no banco de dados que irá utilizar para gerar as tabelas. 5
É neste espaço que criaremos as tabelas que usaremos no decorrer das aulas. Vamos a dois exemplos para criarmos tabelas. O exemplo refere-se a um cadastro de notícias. Este cadastro de notícias será dividido em áreas, e para isso precisaremos cadastrar as áreas das notícias e quando a notícia for cadastrada, deveremos associar a uma determinada área. Exemplos de áreas: esportes, entretenimento, política, etc... Dicionário de Dados: areanoticia Campo Tipo Tamanho Restrição codarea Serial Chave Primária nomearea Varchar 40 Not null Dicionário de Dados: noticia Campo Tipo Tamanho Restrição codnoticia Serial Chave Primária titulo Varchar 80 Not null descricao Text Not null data Date Not null codarea integer Chave estrangeira ativo Varchar 1 S ou N Como o demonstrado na imagem, para criarmos uma tabela temos que utilizar os seguintes comandos: EXEMPLO: CREATE TABLE areanoticia ( codarea serial PRIMARY KEY, nomearea varchar(40) NOT NULL ) OU ENTÃO CREATE TABLE areanoticia ( codarea serial NOT NULL, nomearea varchar(40) NOT NULL, CONSTRAINT codarea PRIMARY KEY (codarea) ) O comando CREATE TABLE é utilizado para criar tabela e é um comando padrão da linguagem SQL. Abaixo, comentando cada parte do comando CREATE TABLE. 6
CREATE TABLE areanoticia ( codarea serial PRIMARY KEY, nomearea varchar(40) NOT NULL, CONSTRAINT codarea PRIMARY KEY (codarea) Criando a tabela areanoticia. Na sintaxe, após o nome da tabela, abrir parênteses Criando o campo codarea na tabela. No dicionário de dados, na observação, apontamos este campo como serial e com a restrição chave primária. Criando o campo nomearea, com o tipo de campo varchar tamanho 40, como o especificado no dicionário de dados. Ele é NOT NULL por ser um campo de preenchimento obrigatório. SEGUNDO EXEMPLO: Criando uma chave primária. No caso, usaremos o campo codarea. Outros exemplos de comandos SQL. Select * from areanoticia Insert into areanoticia values (default, 'ESPORTES') Update areanoticia set nomearea = 'CULINARIA' WHERE codarea=1 Delete from areanoticia WHERE codarea=1 Consulta a tabela e as informações que estão nela gravadas O comando Insert into insere uma informação em uma tabela. No exemplo, estamos incluindo a área ESPORTES. O comando default entra no lugar do código da área da matéria, por ser autoincremento. Altera uma determinado informação gravada em um campo de uma tabela, precisando ter um campo como referência o código da área na condicional WHERE. O mesmo critério vale para o comando DELETE. Criando a tabela noticia. Esta tabela possui relacionamento (referência) com a tabela areanoticia. CREATE TABLE noticia ( codnoticia serial PRIMARY KEY, titulo VARCHAR(80) NOT NULL, descricao TEXT NOT NULL, data date NOT NULL, codarea INTEGER REFERENCES areanoticia (codarea), ativo varchar(1) CHECK(ativo='S' or ativo='n') ) 7