PRONATEC CAMPUS BELÉM - PDF
Download "PRONATEC CAMPUS BELÉM"
Mateus Mirandela Estrela
1 PROGRAMAÇÃO WEB II Autora: LIVIANE PONTE RÊGO Supervisor: Cláudio Alex Rocha 2012
2 Capítulo 1 - Conceito de Banco de Dados 1.1 Definição Com a evolução do sistema financeiro e o consequente progresso técnico, a administração das organizações e do Estado tornou-se mais complexa. As empresas por exemplo, demandavam maior controle da atividade produtiva, envolvendo o gerenciamento de estoques, recursos humanos e financeiros. O grande volume de informações registradas em papel dificultava consideravelmente seu gerenciamento e atualização. Então, com os primeiros migraram-se essas informações para dispositivos eletrônicos. De início, essa migração para meios eletrônicos de armazenamento foi implementada de maneira pouco organizada, fazendo uso de sistemas de arquivos tradicionais. Cada aplicação do sistema de informações era tratada isoladamente pela equipe de desenvolvedores. Em consequência, cada aplicação tinha seus próprios arquivos e a redundância de informações era mais do que normal. Uma aplicação para o controle da frequência dos funcionários, por exemplo, tinha seu próprio arquivos com dados dos empregados em atividade. Esse arquivo podia não ser compartilhado com a aplicação de controle das férias desses mesmos empregados. Por isso, dados como nome, número de matrícula e departamento de trabalho podiam facilmente estar duplicados nos diferentes arquivos. Com a multiplicação de aplicações e assim de arquivos com redundância de dados, o risco de inconsistências de dados entre eles crescia exponencialmente. Considere, por exemplo, uma funcionária que se casou e mudou de nome. Uma eventual falha humana podia levar a uma situação em que seu nome fosse alterado apenas e alguns destes arquivos, mas não em todos eles. Os primeiros bancos de dados surgiram no mercado como uma resposta a problemas como esse. Um sistemas de gerência de banco de dados surgiram no início da década de 70 com o objetivo de facilitar a programação de aplicações de banco de dados. Um SGBD consiste em um conjunto de arquivos estruturados e de programas que respondem pelo acesso e manipulação de tais arquivos. Diferente dos sistemas de arquivos tradicionais, o banco de dados favorece o inter-relacionamento dos arquivos,
3 portanto, podem ser definidos como uma coleção de dados inter-relacionados e um conjunto de programas para acessá-los. Um banco de dados (BD) é um conjunto de dados integrados reunidos com o intuito de suportar o funcionamento de sistemas de informação. Um sistema gerenciador de banco de dados (SGBD) é um software de caráter geral para a manipulação eficiente de grandes coleções de informações estruturadas e armazenadas de uma forma consistente e integrada. Em termos mais simples, podemos definir um SGBD como um software desenvolvido especificamente para o gerenciamento de grandes volumes de informações. Seu objetivo principal reside na superação de problemas comuns aos sistemas de arquivos tradicionais. Tais problemas ou desvantagens, são: 1. Redundância e inconsistência de dados. No processamento tradicional de arquivos, muitos grupos de usuários mantêm seus próprios arquivos para manipular suas aplicações de processamento, que pode provocar o armazenamento de informações redundantes. Sob tais circunstâncias, dados distintos podem ser duplicados em arquivos diferentes. Essa redundância conduz a altos custos de armazenamento e crescente dificuldade de atualização das informações. Problemas que podem ocorrer: a. Duplicação de esforços; b. Desperdício de espaço; c. Inconsistência: alteração em alguns arquivos e em outros não, ou em todos os arquivos, porém, de maneira independente; 2. Dificuldade no acesso aos dados. Os dados espalhados em diferentes arquivos isolados não apresentam as facilidades de acesso e processamento das informações dos bancos de dados. Há pouca flexibilidade em relação a demandas que não tenham sido antecipadas quando o sistema foi projetado. Por exemplo, uma vez que o sistema esteja desenvolvido, caso haja a necessidade de se gerar relatórios com os nomes de todos os empregados do
4 sexo masculino e com idade igual ou superior a 40 anos, a ausência de uma aplicação específica para esse objetivo traz sérios inconvenientes. 3. Isolamento de dados. A existência de dados espalhados em diferentes arquivos, que podem apresentar diferentes formatos, dificulta a criação de novos programas aplicativos para a recuperação desses dados. 4. Compartilhamento de Dados. Sistemas multiusuários devem fornecer controle de concorrência para assegurar que atualizações simultâneas resultem em modificações corretas. Utilizando um SGBD, um outro mecanismo que permite a noção de compartilhamento de dados em é a facilidade de definir visões de usuário, que é usada para especificar a porção da base de dados que é de interesse para um grupo particular de usuários; 5. Problemas de segurança. O acesso a determinados dados deve ser restritos para alguns usuários do sistema de informações. Os dados financeiros são frequentemente considerados confidenciais e, desse modo, somente pessoas autorizadas devem ter acesso. Além disso, pode ser permitido a alguns usuários, apenas a recuperação dos dados. Já, para outros, são permitidas a recuperação e a modificação. Assim, o tipo de operação de acesso - recuperação ou modificação - pode também ser controlado. Essas cinco dificuldades listadas levaram ao desenvolvimento dos SGBDs, que além de implementarem soluções para esses problemas, possuem as seguintes capacidades: Fornecimento de Múltiplas Interfaces: devido aos vários tipos de usuários, com variados níveis de conhecimento técnico, um SGBD deve fornecer uma variedade de interfaces atendê-los. Os tipos de interfaces incluem linguagens de consulta para usuários ocasionais, interfaces de linguagem de programação para programadores de aplicações, formulários e interfaces dirigidas por menus para usuários comuns; Reforçar Restrições de Integridade: muitas aplicações de base de dados terão certas restrições de integridade de dados. A forma mais elementar de restrição de integridade é a especificação do tipo de dado de cada item. Fornecer Backup e Restauração: Um SGBD deve fornecer recursos para restauração caso ocorram falhas de hardware ou software. O subsistema de
5 backup e restauração do SGBD é o responsável pela restauração. Por exemplo, se o sistema de computador falhar no meio da execução de um programa que esteja realizando uma alteração complexa na base de dados, o subsistema de restauração é responsável por assegurar que a base de dados seja restaurada ao estado anterior ao início da execução do programa. Alternativamente, o subsistema de restauração poderia assegurar que o programa seja reexecutado a partir do ponto em que havia sido interrompido. 1.2 Vantagens adicionais dos Bancos de Dados Além das capacidades exposta até aqui, a utilização de Banco de Dados oferecem as seguintes vantagens: Potencial para obrigar a Padronização: a abordagem de base de dados permite que o DBA defina e obrigue a padronização entre os usuários da base de dados em grandes organizações. Isso facilita a comunicação e a cooperação entre vários departamentos, projetos e usuários. Padrões podem ser definidos para formatos de nomes, elementos de dados, telas, relatórios, terminologias, etc. Flexibilidade: mudanças na estrutura de uma base de dados podem ser necessárias devido a mudanças nos requisitos. Por exemplo, um novo grupo de usuários pode surgir com necessidade de informações adicionais, ainda não disponíveis na base de dados. Alguns SGBD s permitem que tais mudanças na estrutura da base de dados sejam realizadas sem afetar a maioria dos programas de aplicações existentes; Redução do Tempo de Desenvolvimento de Aplicações: tempo reduzido para o desenvolvimento de novas aplicações, como a recuperação de certos dados da base de dados para a impressão de novos relatórios. Disponibilidade de Informações Atualizadas: tão logo um usuário modifique uma base de dados, todos os outros usuários sentem imediatamente esta modificação. Esta disponibilidade de informações atualizadas é essencial para muitas aplicações, tais como sistemas de reservas
6 de passagens aéreas ou bases de dados bancárias. Isso somente é possível devido ao subsistema de controle de concorrência e restauração do SGBD; 1.3 Tipos de Usuários Basicamente, os sistemas de banco de dados possuem quatro tipo de usuários: Administrador da Base de Dados (DBA): é o usuário mais especializado de um banco de dados. A administração dos recursos do banco de dados é de responsabilidade do DBA ( Database Administrator ). O DBA é responsável por autorizar acesso à base de dados e coordenar e monitorar seu uso. O DBA é responsável por problemas, tais como, quebra de segurança ou baixo desempenho. Em grandes organizações, o DBA é auxiliado por técnicos; Projetistas da Base de Dados: os projetistas de base de dados têm a responsabilidade de identificar os dados a serem armazenados na Base de Dados e escolher estruturas apropriadas para representar e armazenar tais dados. Estas tarefas são geralmente executadas antes que a base de dados seja utilizada. É responsabilidade destes projetistas obter os requisitos necessários dos futuros usuários da base. Analistas de Sistemas e Programadores de Aplicação: o analistas de sistemas determinam os requisitos de usuários finais, especialmente dos usuários comuns, e desenvolvem especificações das transações para atender a estes requisitos; o programadores de aplicações implementam estas especificações produzindo programas e, então, testam, depuram, documentam e mantêm estes programas. Usuários Finais: existem profissionais que precisam ter acesso à base de dados para consultar, modificar e gerar relatórios. Existem algumas categorias de usuários finais: o usuários ocasionais: ocasionalmente fazem acesso à base de dados, mas eles podem necessitar de diferentes informações a cada vez que fazem acesso. Eles podem usar uma linguagem de consulta sofisticada para especificar suas requisições e são, tipicamente, gerentes de médio ou alto-nível;
7 usuários comuns: estes usuários realizam operações padrões de consultas e atualizações, chamadas TRANSAÇÕES PERMITIDAS, que foram cuidadosamente programadas e testadas. Estes usuários constantemente realizam recuperações e modificações na base de dados; 1.4 Modelos de Bancos de Dados Com o tempo, os SGBD s passaram a utilizar diferentes formas de representação, ou modelos de bancos de dados, para descrever a estrutura das informações contidas neles. Atualmente, os seguintes modelos de dados são normalmente utilizados pelos SGBD s: modelo hierárquico, modelo em redes, modelo relacional (amplamente usado) e o modelo orientado a objetos Modelo em Rede Um banco de dados em rede consiste em uma coleção e registros concatenados uns aos outros por meio de ligações. Este modelo permite que várias tabelas sejam usadas simultaneamente através do uso de apontadores (ou referências). Algumas colunas contêm apontadores para outras tabelas ao invés de dados. Assim, as tabelas são ligadas por referências, o que pode ser visto como uma rede. O diagrama que representa os conceitos do modelo em redes consiste em dois componentes básicos: Caixas, que correspondem aos registros e Linhas, que correspondem às associações. A Figura 1 ilustra um exemplo de diagrama do modelo em rede. Esse exemplo, possui dois diferentes tipos de registros: cliente e conta. O registro cliente apresenta três atributos ou subdivisões: nome, rua e cidade. Por sua vez, o registro conta possui apenas dois atributos: número da conta corrente e saldo. Nome Rua Cidade Num_CC Saldo Maria R1 São Paulo Pedro R3 Jundiaí José R4 Belém Programação Web II 1.250
8 Figura 1 Exemplo de Modelo em Rede Ligações associam registros de clientes a registros de contas. Então, sabemos que o cliente Maria tem uma conta de número e saldo de R$ 2.000,00; e o cliente Pedro tem duas contas: as de número e 21784, com saldo de R$ 2.500,00 e R$ 300,00, respectivamente. Atividade 01 Seguindo o modelo da Figura 1 acima, elabore um exemplo de banco de dados no Modelo em Rede envolvendo a seguinte coleção de dados: Aluno {matrícula, nome, idade, série, turma} e Unidade {Cidade, Bairro, Rua}. O objetivo desta coleção de dados é armazenar informações sobre todos os alunos de um escola e de suas unidades espalhadas em diversas localidades no país. Por meio dessa coleção deve ser possível determinar as unidades em que cada aluno está lotado. Esse exemplo deverá conter no mínimo 3 unidades com 5 alunos distribuídos pelas unidades. Lembre-se de que um aluno poderá pertencer somente a uma unidade Modelo Hierárquico Este modelo difere do modelo em rede na forma de organizar seus registros. Enquanto no modelo em rede os registros estão distribuídos conforme a lógica de grafos arbitrários, no hierárquico esses mesmos registros são conectados numa estrutura de dados em árvore através de ligações de tal modo que cada tipo de registo tenha apenas um possuidor, conforme veremos adiante. Um diagrama de estrutura de árvore descreve o esquema de um banco de dados hierárquico. Tal diagrama consiste em dois componentes básicos: Caixas, as quais correspondem aos tipos de registros e linhas, que correspondem às ligações entre os tipos de registros. Como exemplo do modelo hierárquico, considere a Figura 2 abaixo. A Figura 2 traduz para o Modelo Hierárquico o exemplo anterior do banco com registros de clientes e contas.
9 Nom e Ru a Cidade Num_CC Sald o Maria R1 São Paulo José R4 Belém Figura 2 Exemplo do Modelo Hierárquico. Um registro isolado no topo da Figura 2 encontra-se associado a todos os registros de clientes. Esse é o registro do tipo raiz, o ponto de partida da árvore de registros. Ele está no nível mais elevado da estrutura de dados e pode ser ligado a nenhum, um ou vários registros no nível inferior. Em nosso exemplo, os registros conectados ao registro raiz são sempre registros de clientes que, por sua vez, estão sempre interligados a registros de contas no nível imediatamente abaixo. Um banco de dados com estrutura em árvore apresenta camadas, níveis ou hierarquias diferentes. Os registros de um dado nível sempre se associam aos registros do nível imediatamente inferior e nunca com registros do mesmo nível, ou seja, em nosso exemplo do banco, um cliente nunca se associa a outro cliente (pertencem ao mesmo nível), um cliente apenas se associa com sua conta (pertencem a níveis diferentes). Qualquer busca a um registro específico sempre começa pela raiz até o nível correspondente ao tipo procurado. Em uma árvore, um registro de nível N pode estar associado a, no máximo, um registro do nível imediatamente acima (N-1). Contudo, um registro do nível superior pode estar associado a mais de um registro do nível imediatamente abaixo. Exemplificando, se os clientes Maria e Pedro tivessem uma conta conjunta de número 22458, essa conta, de acordo com a regra do modelo hierárquico, não poderia estar ligado a dois clientes ao mesmo tempo, devendo dessa forma, ser duplicada, conforme pode ser visto na Figura 3.
10 Maria a R1 São Paulo Pedro R3 Jundiaí a Figura 3 Modelo Hierárquico Atividade 02 Converta o exemplo de banco de dados no Modelo Rede da Atividade 01 em um exemplo equivalente no Nome Rua Cidade Pedro A São Paulo Maria B Jundiaí Modelo Hierárquico Modelo Relacional O modelo relacional foi proposto por Edgar Codd em 1970, como uma nova maneira de representação de dados. Este modelo, por suas características e por sua completitude, mostrou ser uma excelente opção, superando os modelos mais usados àquela época: o de redes e o hierárquico. A maior vantagem do modelo relacional sobre seus antecessores é a representação simples dos dados e a facilidade com que consultas complexas podem ser expressas. A estrutura fundamental do modelo relacional é a relação (tabela). Uma relação é constituída por um ou mais atributos (campos) que traduzem o tipo de dados a armazenar. O modelo relacional não tem caminhos pré-definidos para se fazer acesso aos dados como nos modelos que o precederam. Cada linha representa uma relação
11 entre os valores armazenados em diferentes colunas. No exemplo do banco, na tabela Clientes temos três colunas: nome, rua e cidade, formando uma linha, onde cada uma representa um cliente em particular, conforme podemos ver na Figura 4. Figura 4 Exemplo do Modelo Relacional Assim, sabemos que o cliente Pedro mora na rua A na cidade de São Paulo, pois esses dados estão na mesma linha da tabela. Além do relacionamento entre colunas, no modelo relacional é possível também estabelecer um relacionamento entre tabelas. Para isso, deve-se relacionar registros de uma tabela com registros de outra duplicando uma ou mais colunas em uma tabela distinta daquela a que pertence originalmente. Voltando ao nosso exemplo do banco, sua representação conforme o modelo relacional pode ser vista na Figura 5. Figura 5 Exemplo do Modelo Relacional
12 É possível perceber na Figura 5 a presença da tabela Conta-Cliente, que precisou ser criada para que fosse possível o relacionamento entre as tabelas Conta e Cliente. É importante salientar que a tabela Conta-Cliente possui apenas atributos vindos de outras tabelas, sendo um atributo vindo da tabela Conta (CodCliente) e o outro vindo da tabela Cliente (NumCC), que são justamente os atributos que diferenciam os registros em suas tabelas de origem. Atividade 03 Converta o exemplo de banco de dados das Atividades 01 e 02 em um exemplo equivalente no Modelo Relacional Modelo Objeto-Relacional A área de atuação dos sistemas Objeto-Relacional tenta suprir a dificuldade dos sistemas relacionais convencionais, que é o de representar e manipular dados complexos, visando ser mais representativos em semântica e construções de modelagens. A solução proposta é a adição de facilidades para manusear tais dados utilizando-se das facilidades SQL (Structured Query Language) existentes. Para isso, foi necessário adicionar: extensões dos tipos básicos no contexto SQL; representações para objetos complexos no contexto SQL; herança no contexto SQL e sistema para produção de regras Modelo Orientado a Objetos Os bancos de dados orientados a objeto começaram a se tornar comercialmente viáveis em meados de A motivação para seu surgimento está em função dos limites de armazenamento e representação semântica impostas no modelo relacional. Alguns exemplos são os sistemas de informações geográficas (SIG), os sistemas CAD e CAM, que são mais facilmente construídos usando tipos complexos de dados. A habilidade para criar os tipos de dados necessários é uma característica das linguagens de programação orientadas a objetos. Contudo, estes sistemas necessitam guardar representações das estruturas de dados que utilizam no armazenamento permanente. O termo Modelo Orientado a Objetos é
13 usado para documentar o padrão que contém a descrição geral das facilidades de um conjunto de linguagens de programação orientadas a objetos e a biblioteca de classes que pode formar a base para o Sistema de Banco de Dados. Quando os bancos de dados orientados a objetos foram introduzidos, algumas das falhas perceptíveis do modelo relacional pareceram ter sido solucionadas com esta tecnologia e acreditavase que tais bancos de dados ganhariam grande parcela do mercado. Hoje, porém, acredita-se que os Bancos de Dados Orientados a Objetos serão usados em aplicações especializadas, enquanto os sistemas relacionais continuarão a sustentar os negócios tradicionais, onde as estruturas de dados baseadas em relações são suficientes. Exercício de Fixação Abaixo temos o modelo relacional de um banco de dados de uma locadora de vídeo. Converta esses dados para: a) modelo de redes; b) modelo hierárquico; 1.5 Modelagem de Dados Um modelo de (banco de) dados é uma descrição dos tipos de informações que estão armazenadas em um banco de dados. Por exemplo, no caso de uma indústria, o modelo de dados poderia informar que o banco de dados armazena informações sobre produtos e que, para cada produto, são armazenados seu código, preço e descrição. Observe que o modelo de dados não informa quais os produtos que estão
14 armazenados no banco de dados, mas apenas que o banco de dados contém informações sobre produtos. Modelo de Dados = descrição formal da estrutura de um banco de dados Para construir um modelo de dados, usa-se uma linguagem de modelagem de dados. Linguagens de modelagem de dados podem ser classificadas de acordo com a forma de apresentar modelos, em linguagens textuais ou linguagens gráficas. Como veremos adiante, um mesmo modelo de dados pode ser apresentado de várias formas, podendo conter ou não alguns detalhes acerca da organização interna dos dados no banco. No projeto de banco de dados, normalmente são considerados dois níveis de abstração de modelo de dados, o do modelo conceitual e o do modelo lógico, vistas a seguir Modelo Conceitual Um modelo conceitual é uma descrição do banco de dados de forma independente de implementação em um SGBD. O modelo conceitual registra que dados podem aparecer no banco de dados, mas não registra como estes dados estão armazenados a nível de SGBD. modelo conceitual = modelo de dados abstrato, que descreve a estrutura de um banco de dados de forma independente de um SGBD particular A técnica mais difundida de modelagem conceitual é a abordagem entidade- relacionamento (ER). Nesta técnica, um modelo conceitual é usualmente representado através de um diagrama, chamado diagrama entidade-relacionamento (DER). A
15 Figura 6 apresenta um DER parcial para o problema da fábrica. Figura 6 Exemplo de um modelo conceitual Entre outras coisas, este modelo informa que o banco de dados contém dados sobre produtos e sobre tipos de produtos. Para cada produto, o banco de dados armazena o código, a descrição, o preço, bem como o tipo de produto ao qual está associado. Para cada tipo de produto, o banco de dados armazena o código, a descrição, bem como os produtos daquele tipo.
16 Capítulo 2 Sistemas Gerenciadores de Banco de Dados 2.1 Introdução Todo Sistema Gerenciador de Banco de Dados (SGBD) deve oferecer aos seus usuários e administradores meios de criar definições de dados, bem como manipular esses dados armazenados em suas bases. Desse modo, a linguagem SQL, sigla em inglês para Structured Query Language, ou Linguagem de Consulta Estruturada, é uma espécie de padrão adotado por diferentes SGBDs de modo a facilitar a comunicação e a integração dos sistemas. O SQL tem o objetivo de acessar, de forma estruturada e declarativa, elementos de tabelas de bancos de dados. Sua principal tarefa é, portanto, criar e manter objetos, manipular e recuperar dados do banco de dados, administrar dados e manter a segurança. SQL é uma linguagem de pesquisa para uso em Banco de Dados Relacional, podendo ser utilizada como linguagem de construção, modificação e acesso a Banco de Dados. Cabe ressaltar que essa linguagem tem um caráter diferenciado das linguagens de programação, pois é uma linguagem declarativa, ou seja, não é necessário que você programe qualquer algoritmo para acessar o conteúdo das tabelas. O SQL foi desenvolvido originalmente no início dos anos 1970 nos laboratórios da IBM em San Jose, dentro do projeto System R. O nome original da linguagem era SEQUEL, acrônimo para Structured English Query Language (Linguagem de Consulta Estruturada em Inglês). Embora o SQL tenha sido originalmente criado pela IBM, rapidamente surgiram vários "dialetos" produzidos por outros desenvolvedores. Essa expansão levou à necessidade de ser criado e adaptado um padrão para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e International Organization for Standardization (ISO) em O SQL foi revisto em 1992 e a essa versão foi dado o nome de SQL-92. Foi revisto novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente.
17 Embora SQL seja a linguagem de banco de dados mais influente do mercado, ela não é a única, existindo outras, como exemplo: QBE (Query-by-Example) Integra o sistema de banco de dados QBE que foi desenvolvido pela IBM no início de 1970; Quel Linguagem de consulta lançada para o banco de dados Ingres, desenvolvido na Universidade da Califórnia em Berkeley; Datalog Linguagem de consulta baseada na lógica de programação Prolog. SQL é caracterizada pela utilização de palavras-chaves que podem ser classificadas, de acordo com sua função, nos seguintes tipos: DML Linguagem de Manipulação de Dados, subconjunto da linguagem usado para inserir, atualizar e apagar dados. Ex.: INSERT, UPDATE, DELETE; DDL Linguagem de Definição de Dados, permite ao utilizador definir tabelas novas e elementos associados. Ex.: CREATE, DROP; DCL Linguagem de Controle de Dados, controla quem tem acesso para ver ou manipular dados dentro do banco de dados. Ex.: GRANT, REVOKE; DTL Linguagem de Transação de Dados, usado para o controle de transações no banco de dados. Ex.: START TRANSACTION; DQL Linguagem de Consulta de Dados, permite ao usuário especificar uma consulta (query) como uma descrição do resultado desejado. Ex.: SELECT. Todos esses termos estranhos, escritos em letra maiúscula, citados como exemplo, fazem parte da linguagem SQL. 2.2 Sistemas Gerenciadores de Banco de Dados (SGBDs) Os SGBDs são conjuntos de programas de computador (softwares) responsáveis pelo gerenciamento de um banco de dados. O principal objetivo é retirar da aplicação em desenvolvimento a responsabilidade de gerenciar o acesso, manipulação e
18 organização dos dados. O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados. Qualquer empresa que pretenda garantir um controle efetivo sobre o seu negócio tem obrigatoriamente que recorrer a SGBDs. A planilha eletrônica é uma ferramenta de controle usada para operacionalizar os dados e assim criar informação útil ao planejamento diário das empresas. Contudo, existem outros tipos de ferramentas, mais completas e com funcionalidades extras que elevam a capacidade operacional de gerenciar informação de valor para a organização. Um SGBD permite armazenar, modificar e extrair informação de um banco de dados. Há diferentes tipos de SGBD, desde pequenos sistemas que funcionam em computadores pessoais a sistemas complexos associados a servidores de grandes empresas. Os SGBDs mais populares que utilizam linguagem SQL estão listados a seguir. Oracle Surgiu no fim dos anos 70, sendo desenvolvido pela empresa de mesmo nome, que é líder de mercado no segmento de banco de dados, sendo pioneira no lançamento de novas soluções de banco de dados para diversos segmentos, sobretudo, no campo das aplicações corporativas. Atualmente, encontra-se na versão Oracle 11g. SQL Server Criado pela Microsoft em 1989, surgiu de uma parceria entre a Sybase, Ashton-Tate e Microsoft. Atualmente, encontra-se na versão Microsoft SQL Server 2008, sendo considerada uma plataforma de dados confiável, produtiva e inteligente. PostgreSQL SGBD de código aberto do tipo objeto relacional lançado em 1995, resultante de uma evolução do projeto Ingres desenvolvido na Universidade da Califórnia em Berkeley, encontra-se atualmente na versão 8. Firebird SGBD de código aberto criado a partir do InterBase da Borland, quando da abertura de seu código em Julho de 2000, encontra-se atualmente na versão
19 MySQL SGBD de código aberto, criado na década de 1980 na Suécia, sendo considerado o SGBD open source mais popular no mundo atualmente, sendo utilizado por grandes corporações, como NASA, Banco Bradesco, Dataprev, HP, Nokia, Sony, Cisco Systems, Google e outros. O MySQL foi comprado em 2008 pela SUN Microsystems que posteriormente foi comprada pela Oracle. Ou seja, o MySQL atualmente é um produto da Oracle. O seu sucesso é atribuído a sua fácil integração com PHP presente na maioria das ferramentas de desenvolvimento para Internet. Considerando o resumo apresentado na lista anterior, escolhemos o MySQL como exemplo de SGBD a ser utilizado em nosso curso. A partir de agora, vamos ensinar a você como instalar e configurar o ambiente e após isso você já estará apto a entrar no mundo maravilhoso da linguagem SQL. Antes de falarmos um pouco sobre o MySQL, a seguir, discutiremos sobre os softwares que serão utilizados ao longo desse curso.
20 Capítulo 3 Manipulando Banco de Dados 3.1 Requisitos e instalações de softwares Neste curso, para trabalharmos com o MySQL utilizaremos a ferramenta chamada XAMPP. Esta ferramenta instala e configura o MySQL (banco de dados), o Apache (servidor web) e o PhpMyAdmin (Software de gerenciamento do MySQL) automaticamente. Trabalharemos com a versão XAMPP que está disponível em Essa versão do XAMPP instalará e configurará as seguintes versões desses softwares: Apache PHP PHPMyAdmin Após o download do XAMPP, o aluno deverá executar o instalador e clicar nos botões próximo até a finalização da instalação. Após a instalação do XAMPP, aparecerá a tela de execução conforme mostrado mostrado na Figura 1. É importante ressaltar que para iniciar manipulação do MySQL através do PHPMyAdmin, o aluno primeiramente deverá executar o Apache e o MySQL (aparecerá Running ao lado de cada programa).
21 Figura 1 Tela de execução do XAMPP. 3.2 MySQL Em um mundo onde a globalização está cada vez mais presente, os processos cada vez mais automatizados e as barreiras de distância sendo quebradas pelo aumento da popularização da internet, a necessidade de armazenamento de dados e informações de cada mercado torna-se o primeiro passo para a migração de seu negócio para a internet. É visando a suprir essa necessidade que se utiliza o MySQL. O MySQL é um servidor e gerenciador de banco de dados (SGBD) relacional, de licença dupla (sendo uma delas de software livre), projetado inicialmente para trabalhar com aplicações de pequeno e médio portes, mas hoje atendendo a aplicações de grande porte e com mais vantagens do que seus concorrentes. Possui todas as características que um banco de dados de grande porte precisa, sendo reconhecido por algumas entidades como o banco de dados open source com maior capacidade para concorrer com programas similares de código fechado, tais como SQL Server (da
22 Microsoft) e Oracle. Como dito anteriormente, o MySQL é desenvolvido e distribuído por meio de duas licenças que irão depender do tipo de uso da ferramenta. Na maioria dos casos, seu uso é livre e gratuito. Contudo, vale a pena conhecer as duas possíveis licenças do MySQL. A primeira, software livre estabelece o que se pode ou não fazer com a ferramenta e demais recursos. Além do programa, o seu código-fonte também é disponibilizado para que qualquer pessoa possa adaptá-lo às suas necessidades; contudo, todas essas situações serão tratadas e detalhadas na licença GNU-GPL. Basicamente, a licença do tipo GNU-GPL baseia-se nos seguintes princípios: Utilização: Permite utilizar o software para qualquer propósito. Distribuição: Permite a livre distribuição do software entre todas as pessoas. Didática: Permite que seu funcionamento seja estudado a partir de seu código- fonte. Colaboração: Permite que seu código-fonte seja alterado para evoluir a ferramenta, desde que seu novo código-fonte continue sendo livre seguindo essa licença. A segunda licença é comercial. Para algumas situações sobre como embutir o MySQL dentro de suas aplicações comerciais (ou seja, fora dos termos da GNU-GPL), obter suporte diferenciado, ou obter pacotes com mais ferramentas, essa licença pode ser mais apropriada. A seguir, algumas das principais características existentes no MySQL. 1. SGBD: O MySQL, além de banco de dados, contém todas as características de um SGBD (Sistema Gerenciador de Banco de Dados), que é o MySQL Server. Além de armazenar os dados, o MySQL Server provê todas as características de multiacesso a estes, entre outras funcionalidades de um SGBD, como, por exemplo, gerenciamento de acesso, integridade dos dados, concorrência, transações, entre outros. 2. Portabilidade: O MySQL é uma aplicação altamente portável entre diferentes sistemas, plataformas e compiladores. 3. Formas de armazenamento: O MySQL disponibiliza vários tipos de tabelas
23 para armazenamento de dados, tendo cada tipo suas próprias características. A vantagem dessa variedade de tabelas é a possibilidade de escolher o tipo em cada situação diferente. Enquanto um tipo prioriza velocidade, outro prioriza volume de dados, entre outras características. 4. Velocidade: Maior velocidade no acesso aos dados em razão de vários fatores em seu desenvolvimento. 5. Segurança: Sistema gerenciador de conexões que trabalha com criptografia no tráfego de senhas. Ainda, em complemento ao uso de autenticação baseado em senhas, é possível habilitar uma espécie de firewall de autenticação, responsável por habilitar as devidas conexões somente para estações e domínios especificados em sua lista de acesso. 6. SQL: O SQL utilizado pelo MySQL é altamente veloz. Isto se deve ao fato de a linguagem ter sido implementada por meio de códigos e funções altamente otimizadas pelos seus desenvolvedores. 7. Capacidades: O MySQL tem um alto poder de execução e de armazenamento. O MySQL é um banco de dados extremamente poderoso, pronto para executar mais de um bilhão de consultas por dia de um site, ou até mesmo processar milhares de transações por minuto, conforme os próprios papers e artigos do MySQL AB. 8. Compatibilidade: A maioria dos sistemas operacionais existentes no mercado suporta a execução do MySQL. Dentre as principais, pode-se destacar: Linux (Fedora Core, Debian, SuSE, RedHat), Mac OS X Server, Windows (2000, 2003, XP), entre outros. 3.3 PhpMyAdmin Neste curso, utilizaremos o PhpMyAdmin que é uma excelente ferramenta para manipulação do MySQL, muito útil principalmente para desenvolvedores web. Ele dispõe de uma série de recursos interessantes para administração do banco de dados. Com essa ferramenta é possível fazer desde atividades básicas de administração como criar, alterar, renomear tabelas, ou ainda fazer consultas usando SQL, como também gerenciar as conexões com o banco.
24 Depois de instalado o XAMPP, o PhpMyAdmin poderá ser executado através do navegador, digitando o seguinte endereço: A tela inicial do PhpMyAdmin é demonstrado na Figura 2. Basicamente, um banco é composto por tabelas que são formadas por campos. Cada tabela precisa ter um campo chave primária que faz referência a sua tabela em outras tabelas. Sendo assim, o PHPMyAdmin será utilizado para criar nossos Banco de Dados e Tabelas. Figura 2 Tela inicial do PhpMyAdmin Na página principal do PHPMyAdmin, mostrada na Figura 2, encontramos do lado esquerdo um menu superior com os botões: Home (para voltar a página principal do PHPMyAdmin), SQL - Query Window (para escrever um script SQL ou importá-lo de algum arquivo texto), PHPMyAdmin Documentation (para visualizar a documentação do seu PHPMyAdmin) e Documentation (para acessar a documentação do SQL). Logo embaixo você pode visualizar todos os bancos de dados criados. Clicando sobre eles pode visualizar as tabelas de cada banco e clicando sobre elas pode visualizar os seus campos. Com mais um clique sobre Browser, poderá visualizar os dados armazenados nela.
25 Botão Principal Botão Janela de Consulta Botão Documentação do PHPMyAdmin Botão Documentação Figura 3 Tela de Menu do PhpMyAdmin Criando um banco de dados
26 Digite o nome do banco de dados e clique no botão Criar. Figura 4 Tela Para Criação de um Banco de Dados. Primeiro criamos o banco de dados com o com o comando SQL CREATE DATABASE nomedobanco, neste caso ficaria: CREATE DATABASE CURSOMYSQL. Pronto, nosso banco de dados CURSOMYSQL está criado. Note que aparecerá no seu navegador uma coluna à esquerda com o nome do seu banco e um zero entre parêntesis indicando que ele não possui nenhuma tabela. Do lado direito do botão Document do PHPMyAdmin você verá além do menu superior do PHPMyAdmin, a mensagem Nenhuma tabela encontrada no Banco de Dados e logo abaixo Criar nova tabela no Banco de Dados CURSOMYSQL, Então no campo indicado como Nome digite informacoes que é o nome da nossa tabela. Em Numero de arquivos digite 3, isso significa que nossa tabela terá 3 campos. Agora clique em Executar. Agora temos a tela de inserção dos 3 campos da nossa tabela informacoes. Figura 5 Tela para Criação de uma Nova Tabela.
27 Figura 6 Tela para Criação dos Campos de uma Tabela. Na tela seguinte, conforme Figura XY, na primeira coluna escreva no Campo idcontato, Tipo INT, marque a opção AUTOINCREMENT e o selecione a opção PRIMARY no campo Índice. Com isso você está dizendo que o campo idcontato é uma chave primária, ou seja, é o índice da tabela que pode fazer referência dela em outras tabelas do mesmo banco. Nesse primeiro exemplo só temos uma tabela. O argumento autoincrement diz que ao adicionar um registro na tabela esse campo é automaticamente incrementado de 1. Nas duas últimas colunas insira respectivamente os atributos nome e telefone e escolha o tipo dos campos como TEXT. Agora clique em Salvar e nossa tabela informacoes está pronta. Clicando em informacoes no lado esquerdo podemos ver todos os campos da nossa tabela. Com a criação dessa tabela, podemos perceber que existem certos parâmetros que precisamos definir nesse momento. Como por exemplo a definição para cada atributo o seu respectivo tipo. Os tipos mais comuns de dados são:
28 CHAR (tamanho) sequência de caracteres (string) de comprimento fixo. O tamanho é especificado entre parênteses. O tamanho máximo permitido é de 255 caracteres. VARCHAR (tamanho) - sequência de caracteres (string) com tamanho variável. O tamanho máximo, ou seja, a quantidade máxima de caracteres que poderá ser armazenada no campo é especificada entre parênteses. INT tipo numérico que aceita valores inteiros. Podemos representar com esse tipo qualquer valor inteiro na faixa entre e NUMERIC(n,d) tipo numérico que aceita valores reais (n indica a quantidade total de números e d indica a quantidade do total que corresponde a casas decimais). Exemplo: NUMERIC(5,2) corresponde a números com 5 dígitos com até duas casas decimais, como 256,12. TIME tipo tempo no formato hora:minuto:segundo. DATE tipo data no formato ano-mês-dia. Outro conhecimento interessante nesse momento é sobre a existência uma ou mais colunas com restrições que lhes estão associadas. Restrição é basicamente uma regra associada a uma coluna que diz quais as limitações dos dados inseridos nessa coluna. Por exemplo, a restrição UNIQUE especifica que dois registros não podem ter o mesmo valor em uma determinada coluna. Eles devem ser todos originais. As restrições mais populares são NOT NULL e PRIMARY KEY. A restrição NOT NULL especifica que uma coluna não pode ser deixada em branco. E a restrição PRIMARY KEY (chave primária) define uma identificação única de cada registro (ou linha) em uma tabela. Iremos aprender mais sobre restrições no decorrer da disciplina.
29 Figura 7 Tabela de Banco de Dados. Veja que clicando em Inserir no menu superior do PHPMyAdmin é possível inserir dados nos campos da nossa tabela. Outra alternativa para criarmos e manipularmos nosso banco de dados seria escrever nossos códigos em SQL. Para isso, clique no botão Janela de Consulta, localizado no canto superior esquerdo, escreva seus códigos SQL e clique no botão Executar. Veja como ficaria o código para criar o banco CURSOMYSQL e a tabela informacoes com seus campos: No código SQL, o atributo NOT NULL significa que o campo não pode ser nulo. Isso é especificado pelo programador. Inserir, deletar e selecionar com MySQL Agora que temos nosso banco CURSOMYSQL criado, podemos inserir, deletar e selecionar dados nele. Nesta parte da apostila veremos como fazer isso em código SQL. Antes de prosseguirmos nosso curso, é importante uma consideração acerca da manipulação dos valores em uma base de dados: os dados do tipo CHAR, VARCHAR, DATE, TIME (texto em geral, ainda que seja apenas um caractere como A ou B) devem ser representados entre aspas simples ( ). Os dados do tipo INT ou NUMERIC não são representados por aspas simples. Observe ainda que as casas decimais dos números devem ser separadas por pontos ao invés de vírgulas, e os valores do tipo VARCHAR podem conter acentos e espaços em branco. Inserir valores
30 Suponha que você queira adicionar um contato na sua tabela informacoes. Veja o exemplo abaixo de como fazer: O código acima significa: Insira no banco 'CURSOMYSQL', na tabela 'informacoes' que possui os campos 'idcontato', 'nome' e 'telefone', os valores '1', 'Daniel Moreira dos Santos', ' ' respectivamente. Deletar valores Percebemos que o código é bem sugestivo. Delete de 'informacoes', onde 'idcontato' = 1. Lembre que idcontato é nossa chave primária. Selecionar valores Através do código SQL podemos selecionar um registro ou grupo de registros que satisfazem à uma condição estabelecida. Como exemplo, suponha que temos os seguintes registros na tabela informacoes : 1 Lucas Gabriel do Reis Manoel Olivar da Costa Francisco Jr E queremos selecionar os registros que possuem 9 no número de telefone. Nosso código ficaria assim: O asterisco (*) no código acima faz referência a todos os campos da tabela informacoes. Então temos, Selecione todos os campos da tabela informações onde telefone parece com 9999 e ordene por idcontato. Atualizar Suponha que queremos atualizar o telefone de um dos contatos registrados. Para isso,
31 usamos o comando UPDATE. Veja o exemplo: Note que só será atualizado o telefone do registro com idcontato igual a 2, que por sua vez é único. Destruir O comando DROP exclui definitivamente a nossa tabela com todos os seus registros. É bom tomar certo cuidado com este comando. Comandos Adicionais Vimos até agora alguns comandos principais, ainda existem outros comando que adicionado nos comandos SELECT, UPDATE, DELETE forma uma conjunto de manipulações.