You are on page 1of 118

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

PROJETO ESCOLAS - REFERNCIA


Compromisso com a Excelncia na Escola Pblica

CURSO DE CAPACITAO EM INFORMTICA INSTRUMENTAL CURSO DE MONTAGEM E MANUTENO DE COMPUTADORES CURSO SOBRE O SISTEMA OPERACIONAL LINUX CURSO DE PROGRAMAO EM JAVA

CURSO DE INTRODUO A BANCOS DE DADOS


CURSO DE CONSTRUO DE WEB SITES CURSO DE EDITORAO ELETRNICA CURSO DE ILUSTRAO DIGITAL

CURSO DE COMPUTAO GRFICA CURSO DE PROJETO AUXILIADO POR COMPUTADOR CURSO DE MULTIMDIA NA EDUCAO

Cadernos de Informtica

CURSO DE PRODUO FONOGRFICA

Cadernos de Informatica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

ber Machado Duarte

Cadernos de Informtica

Coordenador Carlos Eduardo Hermeto S Motta

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

APRESENTAO

Os computadores que esto sendo instalados pela SEE nas escolas estaduais devero ser utilizados para propsitos administrativos e pedaggicos. Para isso, desenvolveu-se um conjunto de cursos destinados a potencializar a utilizao desses equipamentos. So doze cursos que esto sendo disponibilizados para as escolas para enriquecimento do seu plano curricular. Esses cursos no so profissionalizantes. So cursos introdutrios, de formao inicial para o trabalho, cujo objetivo ampliar o horizonte de conhecimentodos alunos para facilitar a futura escolha de uma profisso. Todos os cursos foram elaborados para serem realizados em 40 mdulos-aula, cada um deles podendo ser desenvolvidos em um semestre (com 2 mdulos-aula semanais) ou em 10 semanas (com 4 mdulos-aula semanais). Em 2006, esses cursos devero ser oferecidos para os alunos que desejarem curs-los, em carter opcional e horrio extraturno. Em 2007, eles cursos devero ser includos na matriz curricular da escola, na srie ou sries por ela definida, integrando a Parte Diversificada do currculo. Esses cursos foram concebidos para dar aos professores, alunos e funcionrios uma dimenso do modo como o computador influencia, hoje, o nosso modo de vida e os meios de produo. Para cada curso selecionado pela escola devero ser indicados pelo menos dois ou, no mximo, trs professores (efetivos, de preferncia) para serem capacitados pela SEE. Esses professores iro atuar como multiplicadores, ministrando-os a outros servidores da escola e aos alunos.

CURSO

DE

CAPACITAO

EM

INFORMTICA INSTRUMENTAL

Este curso ser implantado obrigatoriamente em todas as escolas estaduais em que for instalado laboratrio de informtica. Iniciando pelas Escolas-Referncia, todos os professores e demais servidores sero capacitados para que possam fazer uso adequado e proveitoso desses equipamentos tanto na administrao da escola como nas atividades didticas. um curso voltado para a desmistificao da tecnologia que est sendo implantada. O uso do computador ainda algo difcil para muitas pessoas que ainda no esto muito familiarizadas com essas novas tecnologias que esto ocupando um espao cada vez maior na escola e na vida de todos. Este curso vai motivar os participantes para uma aproximao com essas tecnologias, favorecendo a transformao dos recursos de informtica em instrumentos de produo e integrao entre gestores, professores e demais servidores. As caractersticas dos equipamentos e as funcionalidades dos programas sero apresentadas de maneira gradual e num contexto prtico. Essas.situaes prticas sero apresentadas de maneira que o participante perceba o seu objetivo e o

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

valor de incorpor-las ao seu trabalho cotidiano. Os participantes sero preparados para navegar e pesquisar na internet; enviar, receber e administrar correspondncia eletrnica, alm de criar e editar documentos (textos, planilhas e apresentaes) de interesse acadmico e profissional. Esse um curso fundamental, base e pr-requisito para todos os demais.

CURSO

DE

MONTAGEM E MANUTENO

DE

COMPUTADORES

Este curso ser implantado em, pelo menos, uma escola do municpio sede de cada Superintendncia Regional de Ensino. A indicao da escola dever ser feita pela prpria S.R.E, levando-se em conta as condies de infra-estrutura nas Escolas-Referncia existentes no municpio. Nas escolas escolhidas ser montado um laboratrio de informtica especialmente para a oferta desse curso. O objetivo deste curso capacitar tecnicamente os alunos de ensino mdio que queiram aprender a montar, fazer a manuteno e configurar microcomputadores. Pode ser oferecido para alunos de outras escolas, para professores e demais servidores da escola e para a comunidade, aos finais de semana ou horrios em que o laboratrio esteja disponvel. Neste curso o participante aprender a funo de cada um dos componentes do microcomputador. Aprender como montar um computador e como configur-lo, instalando o sistema operacional, particionando e formatando discos rgidos, instalando placas de fax/modem, rede, vdeo, som e outros dispositivos. Conhecer, ainda, as tcnicas de avaliao do funcionamento e configurao de microcomputadores que esteja precisando de manuteno preventiva ou corretiva, alm de procedimentos para especificao de um computador para atender as necessidades requeridas por um cliente. Dos cursos que se seguem, as Escolas-Referncia devero escolher pelo menos dois para implantar em 2006. No perodo de 13 a 25 de maro/2006, estar disponvel no stio da SEE (www.educacao.mg.gov.br) um formulrio eletrnico para que cada diretor das EscolasReferncia possa informar quais os cursos escolhidos pela sua escola e quais os professores que devero ser capacitados. Durante o perodo de capacitao, os professores sero substitudos por professores-designados para que as atividades didticas da escola no sejam prejudicadas.

Cadernos de Informtica

1. CURSO

SOBRE O

SISTEMA OPERACIONAL LINUX

destinado queles que desejam conhecer ferramentas padro do ambiente Unix. um curso voltado para a explorao e organizao de contedo. So ferramentas tipicamente usadas por usurios avanados do sistema operacional. Tem por finalidade apresentar alguns dos programas mais simples e comuns do ambiente; mostrar que, mesmo

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

com um conjunto pequeno de programas, possvel resolver problemas reais; explicar a comunicao entre programas via rede e estender o ambiente atravs de novos programas. O texto didtico deste curso apresenta os recursos a serem estudados e prope exerccios. um curso para aqueles que gostam de enfrentar desafios. Ementa: Histrico e desenvolvimento do Unix e Linux. Login no computador. Explorando o computador (processos em execuo, conexes abertas). Descrio dos conceitos de arquivo e diretrio. Operaes simples sobre arquivos e diretrios. Sistema de permisses e quotas. Procurando arquivos e fazendo backups. Executando e controlando programas. Processamnto de texto. Expresses regulares. Estendendo o ambiente. Trabalho em rede. Um sistema de chat. Comunicao segura no chat (criptografia). Ainda criptografia. Sistema de arquivos como um Banco de Dados. Um programa grfico. Programando para rede.

2. CURSO

DE

PROGRAMAO EM JAVA
um curso de programao introdutrio que utiliza a linguagem Java. Essa linguagem se torna, a cada dia, mais popular entre os programadores profissionais. O curso foi desenvolvido em forma de tutorial. O participante vai construir na prtica um aplicativo completo (um jogo de batalha naval) que utiliza o sistema grfico e que pode ser utilizado em qualquer sistema operacional. Os elementos de programao so apresentados em atividades prticas medida em que se fazem necessrios. Aqueles que desejam conhecer os mtodos de produo de programas de computadores tero, nesse curso, uma boa viso do processo. Ementa: Conceitos de linguagem de programao, edio, compilao, depurao e execuo de programas. Conceitos fundamentais de linguagens de programao orientada a objetos. Tipos primitivos da linguagem Java, comandos de atribuio e comandos de repetio. Conceito de herana e programao dirigida por eventos. Tratamento de eventos. Programao da interface grfica. Arrays. Nmeros aleatrios.

3. CURSO

DE

INTRODUO

AO

BANCOS

DE

DADOS

Este curso mostrar aos participantes os conceitos fundamentais do armazenamento, gerenciamento e pesquisa de dados em computadores. Um banco de dados um repositrio de informaes que modelam entidades do mundo real. O Sistema Gerenciador do Banco de Dados permite introduzir, modificar, remover, selecionar e organizar as informaes armazenadas. O curso mostra como os bancos de dados so criados e estruturados atravs de exemplos prticos. Ao final, apresenta os elementos da linguagem SQL (Structured Query Language Linguagem Estruturada de Pesquisa) que uma

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

linguagem universal para gerenciamento de informaes de bancos de dados e os elementos bsicos da administrao desses repositrios de informao..Apesar de ser de nvel introdutrio, o curso apresenta todos os tpicos de interesse relacionados rea. um curso voltado para aqueles que desejam conhecer os sistemas que gerenciam volumes grandes e variados de informaes, largamente utilizados no mundo empresarial. Ementa: Modelagem de dados. Normalizao. Linguagem SQL. Mecanismos de consulta. Criao e alterao de tabelas. Manipulao e formatao de dados. Organizao de resultados de pesquisa. Acesso ao servidor de bancos de dados. Contas de usurios. Segurana. Administrao de bancos de dados. Manuteno. Integridade.

4. CURSO

DE

CONSTRUO

DE

WEB SITES

Este curso mostrar aos participantes como construir pginas HTML que forma a estrutura de um site na internet. A primeira parte do curso voltada para a construo de pginas; a segunda parte, para a estruturao do conjunto de pginas que formao o site, incluindo elementos de programao. Explicar os conceitos elementares da web e mostrar como que se implementa o conjunto de pginas que forma o site num servidor. Ementa: Linguagem HTML. Apresentao dos principais navegadors disponveis no mercado. Construo de uma pgina HTML simples respeitando os padres W3C. Recursos de formatao de texto. Recursos de listas, multimdia e navegao. Tabelas e Frames. Folha de Estilo. Elementos de Formulrio. Linguagem Javascript. Interao do Javascript com os elementos HTML. Linguagem PHP. Conceitos de Transmisso de Site e critrios para avaliao de servidores.

1. CURSO

DE

EDITORAO ELETRNICA
Voltado para a produo de documentos fsicos (livros, jornais, revistas) e eletrnicos. Apresenta as ferramentas de produo de texto e as ferramentas de montagem de elementos grficos numa pgina. O texto tratado como elemento de composio grfica, juntamente com a pintura digital, o desenho digital e outros elementos grficos utilizados para promover a integrao dos elementos grficos.

Cadernos de Informtica

O curso explora de maneira extensiva os conceitos relacionados aparncia do texto relativos aos tipos de impresso (fontes). Mostra diversos mecanismos de produo dos mais variados tipos de material impresso, de texto comum s frmulas matemticas. Finalmente, discute a metodologia de gerenciamento de documentos. Ementa: Editor de textos. Formatadores de texto. Tipos e Fontes. Gerenciamento de projetos.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Publicaes. Programas para editorao. Programas acessrios. Impresso. Desenvolvimento de um projeto.

2. CURSO

DE

ILUSTRAO DIGITAL
Desenvolvido sobre um nico aplicativo de tratamento de imagens e pintura digital, o GIMP (GNU Image Manipulation Program Programa de Manipulao de Imagens GNU). Este curso ensina, passo a passo, como utilizar ferramentas do programa para produzir ilustraes de qualidade que podem ser utilizadas para qualquer finalidade. A pintura digital diferente do desenho digital. O desenho se aplica a diagramas e grficos, por exemplo. A pintura tem um escopo muito mais abrangente e uma forma de criao mais livre, do ponto de vista formal. basicamente a diferena que h entre o desenho artstico e o desenho tcnico. , portanto, um curso voltado para aqueles que tm interesses e vocaes artsticas. Ementa: A imagem digital. Espaos de cores. Digitalizao de imagens. Fotomontagem e colagem digital. Ferramentas de desenho. Ferramentas de pintura. Finalizao e sada.

3. CURSO

DE

PRODUO FONOGRFICA
Curso voltado para aqueles que tm interesse na produo musical. Explica, atravs de programas, como que se capturam, modificam e agrupam os sons musicais para produzir arranjos musicais. um curso introdutrio com uma boa viso da totalidade dos procedimentos que levam produo de um disco. Ementa: O Fenmeno Sonoro. O Ambiente Sonoro. A Linguagem Musical. Pr-Produo. O Padro MIDI. A Gravao. A Edio. Ps-processamento. Mixagem. Finalizao.

4. CURSO

DE

COMPUTAO GRFICA
Curso introdutrio de modelagem, renderizao e animao de objetos tridimensionais. Esse curso a base para utilizao de animaes tridimensionais em filmes. Conduzido como um tutorial do programa BLENDER, apresenta a interface do programa e suas operaes elementares. Destinado queles que tm ambies de produzir animaes de alta qualidade para a educao ou para a mdia. Ementa: Introduo Computao Grfica. Conceitos bsicos 2D e 3D. Interface principal do programa Blender. Espao de trabalho. Navegao em 3D. Modelagem em 3D. Primitivas bsicas. Movimentao de objetos. Edio de objetos. Composio de cenas. Materiais e texturas. Aplicao de materiais. UV Mapping. Luzes e Cmeras. Iluminao de cena. Posicionamento e manipulao de cmera. Renderizao still frame. Formatos

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

de sada. Animao bsica. Movimentao de cmera e objetos. Renderizao da animao. Formatos de sada.

5. CURSO

DE

PROJETO AUXILIADO POR COMPUTADOR


Os programas de CAD (Computer Aided Design Projeto Auxiliado por Computador) so utilizados para composio de desenhos tcnicos. Diferentemente dos programas de pintura eletrnica (como o GIMP), fornecem ao usurio ferramentas para desenhar com preciso e anotar os desenhos de acordo com as normas tcnicas. Alm de ensinar ao usurio a utilizar um programa de CAD (QCad), o curso apresenta elementos bsicos de desenho tcnico e construes geomtricas diversas visando preparar o participante para um aprimoramento em reas tpicas das engenharias e da arquitetura..Ementa: Informtica aplicada ao desenho tcnico. Conceitos bsicos: construes geomtricas, escalas, dimensionamento, projees ortogrficas e perspectivas. Sistemas de coordenadas cartesiano e polar. Novas entidades geomtricas bsicas: polgonos e crculos. Operaes geomtricas bsicas. Tipos de unidades de medida. Criao de um padro de formato. Organizao de um desenho por nveis. Construes geomtricas diversas. A teoria dos conjuntos aplicada ao desenho. Propriedades dos objetos. Edio do desenho. Movimento, rotao, escalamento e deformao de objetos. Agrupamento de objetos em blocos.

6. CURSO

DE

MULTIMDIA

NA

EDUCAO

O curso est dividido em trs partes: a) utilizao da multimdia no contexto educacional; b) autoria de apresentaes multimdia; c) projetos de aprendizagem mediada por tecnologia. Este curso o fundamento para a criao dos cursos de educao a distncia. Apresenta os elementos que compem os sistemas de multimdia, as comunidades virtuais de aprendizagem, o planejamento e a preparao de uma apresentao e de uma lio de curso e, finalmente, a tecnologia de objetos de aprendizado multimdia. Ementa: Introduo Multimdia e seus componentes. Multimdia na Educao. Comunidades Virtuais de Aprendizagem. Webquest: Desafios Investigativos baseados na Internet (Web). Preparao de uma apresentao multimdia.

10

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

SUMRIO CAPITULO 1 ................................................................................... 15


1 - Introduo ..................................................................................... 15 1.1 - Descrio do banco de dados acadmico ..................................... 16 1.2 - Atributos definem uma entidade ................................................ 17 1.3 - Os registros so as ocorrncias de uma entidade no mundo real .... 18 1.4 - Relaes e integridades de dados .............................................. 18 2 - Utilizando o MySQL para criar o banco de dados escolar ...................... 19 2.1 - Criando o banco de dados escolar atravs do MySQL .................... 19 2.2 - Criando e selecionando um banco de dados no MySQL ................. 21 2.3 - Criando as tabelas definidas no modelo ..................................... 22 2.4 - Inserindo informaes no banco de dados ................................. 23 2.5 - Exibindo as informaes contidas no banco de dados .................. 24 3 - Concluses ..................................................................................... 26 4 - Referncias Bibliogrficas ................................................................ 26

CAPTULO 2 ................................................................................... 27
1 - Introduo modelagem de dados ................................................... 27 2 - Descrio de um sistema para controle de uma empresa ....................... 27 2.1. Descrio de uma empresa de construo civil .............................. 27 3 - Aspectos gerais do modelo entidade-relacionamento .......................... 28 3.1 - Descrio das entidades problema ............................................. 29 3.2 - Descrio dos relacionamentos do sistema .................................. 30 4 - Modelando as restries de dados do modelo ..................................... 32 4.1 - Restries de atributos ............................................................. 32 4.2 - Integridade referencial ............................................................. 32 4.3 - Normalizao de dados, eliminando a redundncia ...................... 33 5 - Concluses ..................................................................................... 33 6 - Exerccios de fixao ........................................................................ 34 7 - Referncias Bibliogrficas ................................................................ 34

CAPTULO 3 ................................................................................... 35
1 - Introduo ferramenta de modelagem DBDesigner4 .......................... 35 2 - Introduo ao DBDesigner4 .............................................................. 36

11

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

2.1 - Apresentao dos componentes do DBDesigner4 ......................... 36 2.1.1 - Descrio da opo File ..................................................... 37 2.1.2 - Descrio da opo Database ............................................. 38 2.2 - Apresentando a barra de tarefas do DBDesigner4 ......................... 41 2.2.1 - Criando entidades no DBDesigner4 ..................................... 42 2.2.2 - Definindo os relacionamentos ............................................ 43 3 - Concluses ..................................................................................... 44 4 - Exerccios de fixao........................................................................ 44 5 - Referncias Bibliogrficas ................................................................ 44

CAPTULO 4 ................................................................................... 45
1 - Introduo ..................................................................................... 45 2 - Criando o banco de dados e a conexo para o mesmo ......................... 45 3 - Construo das entidades do modelo ................................................ 46 3.1 - Tipos de dados no MySQL ......................................................... 47 3.2 - Definio das entidades do sistema ............................................ 47 3.3 - Definindo os relacionamentos entre as tabelas ............................ 51 3.4 - Convertendo o modelo para o banco de dados curso ................... 54 4 - Concluses ..................................................................................... 54 5 - Referncias Bibliogrficas ................................................................ 54

CAPTULO 5 ................................................................................... 55
1 - Introduo ..................................................................................... 55 2 - Introduo ao MySQL Query Browser .................................................. 55 2.1 - Abrindo uma conexo com o banco de dados curso ..................... 56 3 - Explorando os principais recursos do MySQL Query Browser .................. 57 3.1 - Utilizando o editor de banco de dados ....................................... 57 3.2 - Conhecendo o editor de consultas SQL do sistema ....................... 59 3.2.1 - Inserindo, alterando e excluindo dados em uma planilha ...... 59

Cadernos de Informtica

3.2.2 - Leitura de informaes armazenadas em uma tabela ............. 61 4 - Concluses ..................................................................................... 63 5 - Exerccios de fixao........................................................................ 63 6 - Referncias Bibliogrficas ................................................................ 63

12

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 6 ................................................................................... 64
1 - Introduo ..................................................................................... 64 2 - Introduo aos tipos de dados ......................................................... 64 3 - Descrio dos comandos para definio de dados ............................... 65 3.1 - Criando e removendo um banco de dados ................................... 65 3.2 - Criando e removendo tabelas .................................................... 66 3.2.1 - Entendendo o conceito de chave primria ........................... 67 3.2.2 - Entendendo o conceito de chave estrangeira ....................... 69 3.2.3 - Removendo e alterando uma tabela .................................... 71 4 - Concluses ..................................................................................... 72 5 - Exerccios de fixao ........................................................................ 72 6 - Referncias Bibliogrficas ................................................................ 72

CAPTULO 7 ................................................................................... 73
1 - Introduo ..................................................................................... 73 2 - Entendendo os comandos DML .......................................................... 73 2.1 - Incluindo dados com o comando INSERT .................................... 73 2.2 - Alterando dados com o comando UPDATE ................................... 77 2.3 - Excluindo dados com o comando DELETE .................................... 78 3 - Introduo aos comandos para leitura de dados ................................. 78 3.1 - O comando SELECT bsico ......................................................... 79 3.2 - Selecionando registros com o WHERE ......................................... 80 3.3 - Agrupando dados com o GROUP BY e selecionando com o HAVING 82 3.4 - Ordenando o resultado com o ORDER BY ..................................... 83 4 - Concluses ..................................................................................... 84 5 - Exerccios de fixao ........................................................................ 84 6 - Referncias Bibliogrficas ................................................................ 84

CAPTULO 8 ................................................................................... 85
1 - Introduo ..................................................................................... 85 2 - Tcnicas para extrao de dados em mltiplas tabelas-JOIN ................. 85 2.1 - O produto cartesiano, um erro comum na elaborao do JOIN ...... 87 2.2 - INNER JOIN, uma sintaxe alternativa para a juno de tabelas ...... 89 3 - Entendendo os mecanismos de sub-consultas ..................................... 89

13

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.1 - Utilizando um SELECT dentro da clusula SELECT ......................... 90 3.2 - Utilizando um SELECT dentro da clusula FROM ........................... 90 3.3 - Utilizando um SELECT dentro da clusula WHERE ......................... 91 3.4 - Agrupando resultados com o comando UNION ............................ 92 4 - Utilizando funes para transformao de dados ................................ 93 5 - Concluses ..................................................................................... 95 6 - Exerccios de fixao........................................................................ 95 7 - Referncias Bibliogrficas ................................................................ 95

CAPTULO 9 ................................................................................... 96
1 - Introduo ..................................................................................... 96 2 - Introduo ao MySQL Administrator .................................................. 97 3 - Explorando as opes da ferramenta MySQL Administrator ................... 98 3.1 - Controle do servio MySQL ........................................................ 98 3.2 - Configurando os parmetros do servidor MySQL .......................... 99 3.3 - Administrao dos usurios do sistema .................................... 100 3.4 - Monitorando a atividade do servidor ........................................ 102 3.5 - Realizando cpias de segurana do banco de dados ................... 104 4 - Concluses ................................................................................... 106 5 - Exerccios de fixao...................................................................... 106 6 - Referncias Bibliogrficas .............................................................. 107

CAPTULO 10 ............................................................................... 108


1 - Introduo ................................................................................... 108 2 - Entendendo o controle de transaes .............................................. 109 3 - Utilizando a replicao para obter alta disponibilidade...................... 113 4 - Trabalhando com rotinas armazenadas no SGBD ................................ 113 5 - Concluses ................................................................................... 114 6 - Exerccios de fixao...................................................................... 115

Cadernos de Informtica

7 - Referncias Bibliogrficas .............................................................. 115

14

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 1 1. INTRODUO
O conceito de banco de dados bem como as tecnologias de bancos de dados tm ganhado mais importncia e esto se tornando cada vez mais populares com a expanso da utilizao dos computadores. No dicionrio encontramos: Computador adj.s.m. 1 (o) que computa ou calcula, s.m. 2 mquina eletrnica que guarda, analisa e processa dados. O primeiro computador, chamado de ENIAC, foi inventado pelos cientistas Eckert e Mauchly e foi apresentado ao mundo em meados de 1945. Este fato desencadeou uma srie de avanos tecnolgicos que culminou com a criao dos computadores pessoais. Estes equipamentos possuem um custo reduzido e possibilitam a execuo de milhes de clculos em uma frao de segundos, alm de armazenar grandes volumes de informaes. Para se ter uma idia, possvel armazenar em um nico CD todo o contedo da enciclopdia Barsa. Assim, comearam a surgir os primeiros sistemas computacionais desenvolvidos para as mais variadas reas do conhecimento, tais como a engenharia, medicina, bibliotecas, sistemas educacionais, dentre outros. Esta popularizao dos computadores acarretou a gerao de um grande volume de dados e informaes. Como conseqncia, tornou-se necessrio organizar, armazenar e acessar estas informaes de forma ordenada e fcil. Para suprir esta necessidade foram projetados os primeiros sistemas de bancos de dados, objetivando uma sistematizao do acesso aos dados. Um banco de dados uma coleo de dados relacionados. Entende-se por dado, toda a informao que pode ser armazenada e que apresenta algum significado implcito dentro do contexto ao qual ele se aplica. Por exemplo, ao visualizar uma pessoa conduzindo um veculo pelas ruas est subentendido que a mesma conhece as tcnicas para a conduo do automvel. Portanto, o conhecimento acerca do domnio da tcnica de direo est implcito na cena apresentada. Exemplificando no cenrio de uma base de dados, um cadastro de pessoas poder apresentar informaes diferentes se empregado em sistemas distintos. No caso de um sistema bancrio, uma pessoa identificada pelo seu CPF (cliente). Em um sistema escolar a pessoa identificada pelo seu nmero de matrcula (aluno). Alm disto, os dados que sero armazenados em cada situao podem se diferir consideravelmente. Esta definio de banco de dados bastante genrica, da pode-se considerar como um banco de dados uma coleo de textos sobre um determinado assunto. No contexto deste curso, utiliza-se uma definio mais restrita para banco de dados, onde o mesmo ser sempre a representao de uma situao encontrada no mudo real. Ou seja, um banco de dados definido dentro de um universo de discurso, isto , a situao real que ele representa. Para ilustrar, seja um banco de dados para armazenar informaes referentes s linhas de nibus urbanos existentes em uma cidade. Neste cenrio, relevante armazenar o nmero, placa e cor dos veculos, j que as linhas so identificadas pelas cores dos nibus. Portanto, as linhas de nibus urbanas o universo de discurso desta aplicao, sendo que as informaes somente se aplicam a este ambiente. Certamente se for necessrio manter dados sobre nibus intermunicipais, os requisitos de dados mudaro, uma vez que alterou o universo de discurso. O universo de discurso tambm entendido como escopo da aplicao, que na verdade so os limites ou propsitos para os quais os dados serviro.

15

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Neste mdulo ser apresentado um pequeno banco de dados com o intuito de exemplificar o que um sistema de banco de dados. Para isto ser utilizado como exemplo, um sistema acadmico muito rudimentar, onde sero armazenados os alunos da instituio e as notas obtidas por eles nas avaliaes escolares. Estes elementos serviro de base para apresentar e conceituar os elementos bsicos que constituem um banco de dados.

1.1. DESCRIO

DO BANCO DE DADOS ACADMICO

O banco de dados descrito nesta seo concebido para representar um pequeno sistema escolar, onde existem basicamente dois componentes que so os alunos matriculados na instituio, bem como as notas obtidas por eles em todas as avaliaes realizadas durante um perodo escolar. Conforme a definio dada na seo anterior, um banco de dados projetado para atender os aspectos inerentes ao universo delimitado, neste caso, o sistema escolar. Uma vez definido o escopo da aplicao, ou seja, o seu propsito, o prximo passo identificar os elementos que a constituem, e por conseqncia definir todos os dados relevantes para cada item existente. Estes elementos so comumente chamados de entidades, e que por questes de facilidade, so representadas por tabelas. Uma entidade todo e qualquer elemento que participa do contexto definido para a aplicao, e que geralmente se refere a um objeto real dentro deste escopo. Para o sistema proposto, percebe-se a existncia de duas entidades: 1. Alunos e 2. Pontuao dos alunos nas avaliaes. A primeira delas tem como objetivo manter um registro de cada aluno matriculado na escola. A Tabela 1 ilustra uma estrutura de armazenamento desta entidade.

Tabela 1: Definio da ENTIDADE alunos

MATRCULA 1 2 3 4 5

NOME JOS DA SILVA ANA MARIA PAULO SIMON CARLA BEATRIZ ANA PAULA

SRIE OITAVA STIMA QUINTA SEXTA OITAVA

TURMA 1 1 1 1 2

TELEFONE (31)1234-5678 (31)3421-5678 (11)1234-5678 (21)3344-5678 (92)5555-8888

DATA DE NASCIMENTO 05-10-1982 17-11-1981 11-04-1983 30-07-1979 22-01-1980

A segunda entidade identificada no problema so as pontuaes obtidas por cada aluno. Vale ressaltar que durante um perodo letivo podero existir vrias avaliaes, geralmente em datas diferentes, onde devero ser armazenados os resultados de todos os alunos para cada um destes testes. A Tabela 2 descreve a entidade pontuaes, que serve para o propsito exposto anteriormente.
Tabela 2: Definio da ENTIDADE pontuao

16

Cadernos de Informtica

MATRCULA 1 2 3 4 5 1 2 5

DATA DO TESTE 25-03-2004 25-03-2004 25-03-2004 25-03-2004 25-03-2004 18-05-2004 18-05-2004 18-05-2004

PONTO 5.5 6 8 10 7.8 4.6 7.2 9.5

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Percebe-se que cada entidade representada por uma tabela, sendo que neste universo de discusso ou modelo, existem apenas duas tabelas e um relacionamento entre elas, j que cada entidade aluno est ligada entidade pontuao. Em aplicaes mais complexas, podero existir inmeras tabelas e relacionamentos de forma a permitir a representao do problema abordado. Dado o banco de dados sugerido anteriormente, as sees seguintes, abordaro os conceitos de atributos, relacionamentos, integridade de dados e instncias de forma a contextualiz-los dentro do problema proposto.

1.2. ATRIBUTOS DEFINEM UMA ENTIDADE


Uma entidade, no exemplo alunos e pontuaes, so representadas por tabelas que por sua vez so constitudas de linhas e colunas. Cada coluna representa um fragmento de dado e o conjunto de todas as colunas constitui a entidade propriamente dita. No contexto de banco de dados cada coluna chamada de atributo e uma entidade ser formada por um ou vrios atributos. Um atributo define uma caracterstica da entidade, por exemplo, um aluno tem nome, idade, altura cor dos cabelos, sexo, dentre outras caractersticas. Neste caso o nmero de atributos existente na tabela, que definem o grau da entidade, depender nica e exclusivamente de quais dados sero relevantes para representar uma entidade dentro do escopo que est sendo representado. Isto , no contexto do sistema escolar a cor dos cabelos no importante, por isto no est representada na tabela. No sistema descrito a entidade alunos constituda por seis atributos que so o nmero de matrcula, nome, a srie que est cursando, a sua turma, o seu telefone residencial e a data de nascimento. O atributo matrcula possui um papel importante no modelo servindo como um identificador nico para cada aluno. Por exemplo, para pesquisar em um dicionrio utiliza-se uma palavra-chave, sendo que uma mesma palavra pode aparecer mais de uma vez, como ocorre com o verbo casar. O significado que se deseja para a palavra ser determinado pelo contexto onde a mesma empregada, resolvendo assim a ambigidade. Em um banco de dados caso ocorram registros com valores idnticos no ser possvel determinar um contexto que os identifiquem unicamente, como ocorre no dicionrio. Por isto, deve existir uma chave ou atributo que identifique unicamente cada registro. Ao observar a Tabela 1 1, percebe-se que no h dois alunos cadastrados com o mesmo nmero de matrcula. Portanto, este o atributo chave da entidade, utilizado para a pesquisa de um registro nesta tabela. A entidade pontuaes necessita identificar o aluno, a data da avaliao e a pontuao atingida pelo aluno. Neste caso, como cada aluno identificado unicamente pela sua matrcula, este atributo ser inserido na tabela de pontuaes para permitir associar o aluno nota registrada, conforme visto na Tabela 2 2. Percebe-se que cada atributo possui um conjunto de valores vlidos e aceitveis, que definido como domnio do atributo. Todas as informaes vistas na tabela so textuais, isto , seqncias de letras e nmeros, mas notrio que o conjunto de dados contido em cada coluna diferente umas das outras. No caso da matrcula do aluno, o domnio dos dados o conjunto dos nmeros inteiros positivos, j que para cada aluno atribudo um cdigo numrico que denota a ordem em que este foi matriculado na escola. Ou

17

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

seja, o texto contido nesta coluna formado por uma combinao de nmeros, portanto no existem letras. Desta forma cada coluna apresenta restries de dados inerentes ao seu domnio. Por exemplo, no existir um nmero de matrcula constitudo de letras, j que o mesmo tem como objetivo marcar a ordem de inscrio dos alunos na instituio. Outros domnios existentes no modelo, so textos e datas, que so utilizados para representar as demais informaes das entidades.

1.3. OS REGISTROS SO AS OCORRNCIAS DE UMA ENTIDADE NO MUNDO REAL


Alm das colunas ou atributos, as tabelas possuem tambm uma ou mais linhas ou registros, conforme visto nas Tabelas 1 e 2 . Cada registro representa uma ocorrncia daquela entidade no mundo real. Por exemplo, na Tabela 1 1, o registro com o nmero de matrcula igual a 1 se refere ao aluno Jos da Silva. Existiro tantos registros na tabela de alunos quantos forem o nmero de alunos matriculados na escola. A quantidade de registros existentes em uma tabela define a cardinalidade da entidade, ou seja, o nmero de elementos no conjunto de alunos. Por exemplo, se a escola possui dez alunos ento o conjunto de alunos desta escola possui dez elementos. Da a sua cardinalidade tambm ser dez. Vale ressaltar que, como no h dois alunos idnticos em uma mesma escola, no haver dois registros iguais em uma mesma tabela. Isto garantido pelo cdigo de matrcula que nico e conhecido como chave primria. Neste caso, a chave primria no permitir a existncia de valores duplicados para este atributo.

1.4. RELAES

E INTEGRIDADE DE DADOS

No modelo exposto, h um relacionamento entre a tabela de alunos e pontuao. Este relacionamento caracterizado pelo atributo matrcula que est presente em ambas as tabelas. Dado que este atributo a chave primria da tabela, isto , no existem dois alunos com o mesmo nmero de matrcula, esta coluna quando inserida na tabela de pontuaes permite relacionar um aluno a uma nota obtida. Na entidade pontuao, no ser possvel utilizar apenas a matrcula do aluno como chave primria, j que um mesmo aluno poder realizar avaliaes em datas distintas. Neste caso, o identificador nico para a entidade pontuao ser a combinao da matrcula com a data do evento. Mais uma vez, no ser possvel que um mesmo aluno realize mais de uma avaliao no mesmo dia.

18

Cadernos de Informtica

Existem outras restries intrnsecas ao modelo que devem ser respeitadas pelo banco de dados, como por exemplo, no se deve permitir uma ocorrncia de uma pontuao para um nmero de matrcula que no exista cadastrado na tabela de alunos. Este conceito conhecido como restrio de integridade ou integridade referencial, e deve ser assegurado pelo sistema de banco de dados a fim de se manter as caractersticas do mundo representado por ele. Este conceito implementado atravs das chaves estrangeiras, que nada mais so que colunas que definem o relacionamento entre entidades. No modelo apresentado a matrcula do aluno representa a chave estrangeira do relacionamento.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Assim, no se deve permitir a insero de pontuaes para alunos que no estejam cadastrados, bem como na remoo de alunos que possuam pontuaes cadastradas, deve-se eliminar estes registros para manter-se a consistncia das informaes. O conceito de consistncia est ligado garantia de que o dado est correto. Por exemplo, em uma aplicao bancria, ao realizar um saque em uma conta deve-se assegurar que o saldo ser reduzido da quantia sacada. Caso contrrio o dado estar incorreto e poder acarretar uma anlise errada das informaes.

2. UTILIZANDO

MYSQL

PARA CRIAR O BANCO DE DADOS ESCOLAR

Um banco de dados armazenado e gerenciado por um Sistema Gerenciador de Banco de Dados (SGBD). Este sistema tem o objetivo de permitir a definio da sua estrutura de dados, isto , tabelas e relacionamentos, e gerenciar o acesso a estas informaes. O SGBD possui mecanismos de consultas que possibilitam a insero, alterao, excluso e listagem das informaes armazenadas por ele. Este curso utilizar o SGBD MySQL para ilustrar todos os aspectos prticos de um sistema de banco de dados. A escolha deste SGBD se d pelo fato de o mesmo ser distribudo gratuitamente e pela sua simplicidade e facilidade de uso. Este sistema pode ser obtido a partir do site http://www.mysql.com/downloads.

2.1. CRIANDO

O BANCO DE DADOS ESCOLAR ATRAVS DO

MYSQL

O MySQL um SGBD que ser utilizado durante todo o curso com o intuito de ilustrar o funcionamento prtico de um banco de dados. Alm de ser obtido gratuitamente a sua utilizao bastante simples, facilitando o entendimento do mesmo e possibilitando uma melhor aprendizagem dos conceitos discutidos neste material. O objetivo desta seo criar, dentro do MySQL, o banco de dados descrito na seo 1. Aqui sero apresentados os passos a serem seguidos a fim de se realizar esta tarefa. Para manipular o SGBD preciso iniciar uma conexo com o mesmo. Esta conexo estabelece a ligao entre o SGBD e a aplicao que manipular os dados. Vale ressaltar que o SGBD pode estar em uma mquina colocada em qualquer lugar do planeta, e ainda assim ser acessada remotamente pela aplicao. Para estabelecer a conexo preciso ter um usurio e uma senha para realizar o acesso. Este sistema possui um usurio padro chamado root e que no possui senha, no necessrio fornecer uma senha para efetuar a conexo com o servidor. Este usurio root o administrador do banco de dados e possui autorizao para realizar qualquer operao dentro do MySQL. Este diferente do root do Linux, que o responsvel pela administrao do sistema operacional. Possivelmente o acesso ao Linux durante o curso no ser feito atravs deste usurio. Porm, como existe o administrador do banco, que por coincidncia se chama root, ser possvel realizar qualquer operao no MySQL, mesmo no tendo acesso de administrador no Linux. Para estabelecer esta conexo, primeiro deve-se executar um terminal no Linux. Neste ambiente existem aplicaes grficas, apresentado janelas, cones, imagens e etc. Por

19

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

outro lado existem aplicaes que no apresentam estes elementos grficos e, portanto, so executadas a partir de um terminal. Utilizando-se a interface grfica KDE, devese proceder conforme indicado na Figura 1 1.

Figura 1 Abrindo um terminal no Linux

Feito isto, o terminal se abrir e ento a conexo com o MySQL poder ser estabelecida conforme a Figura 2 2.

Cadernos de Informtica

Figura 2: Estabelecendo a conexo com o MySQL

O sistema solicitar uma senha para o usurio root, como a mesma vazia, basta digitar a tecla <ENTER>, e a tela exibida na Figura 3 ser mostrada.

20

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 3: Conexo com o MySQL estabelecida com sucesso

Percebe-se que o sistema exibe uma mensagem de boas-vindas e algumas informaes a respeito do SGBD, tais como a sua verso. A partir deste momento, possvel submeter os comandos para a criao do banco de dados e tabelas. Vale observar que o prompt mysql>, indica que o SGBD MySQL est sendo utilizado.

2.2. CRIANDO

E SELECIONANDO UM BANCO DE DADOS NO

MYSQL

Uma vez estabelecida uma conexo com o SGBD, o prximo passo criar um banco de dados e selecion-lo para uso. Para isto devem-se utilizar os comandos CREATE DATABASE e USE, conforme ilustrado na Figura 4 4.

O esquema ilustrado define um banco de dados chamado curso e o seleciona para ser utilizado nos passos seguintes. Vale ressaltar que um banco de dados neste SGBD representa uma coleo de tabelas.

21

Cadernos de Informtica

Figura 4: Criando e selecionando o banco de dados curso

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

2.3. CRIANDO

AS TABELAS DEFINIDAS NO MODELO

Uma vez criado e selecionado o banco de dados, possvel definir as tabelas que constituem o modelo. O comando CREATE TABLE empregado para especificar os atributos e seus domnios (ou tipos), bem como as restries de chave primria e estrangeiras conforme discutido nas sees 1.2 e 1.4. A Figura 5 ilustra o comando para a criao da tabela alunos.

Figura 5: Criao da tabela de alunos

A tabela que armazenar a relao de pontos dos alunos criada conforme a Figura 6 6. Observe que nela esto definidas as restries de chave estrangeira desta entidade.

Figura 6: Criao da tabela de pontuaes

Cadernos de Informtica

Tendo executado os comandos para a criao das tabelas, podem-se examinar as suas estruturas atravs do comando DESCRIBE, como ilustrado na Figura 7 7.

22

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 7: Verificando a estrutura das tabelas atravs do comando DESCRIBE

2.4. INSERINDO

INFORMAES NO BANCO DE DADOS

O objetivo desta seo ilustrar a insero dos registros exibidos nas Tabelas 1 e 2, apresentadas na seo 1. A insero de dados consiste em informar valores para cada atributo da entidade, armazenando as ocorrncias de cada conjunto na base de dados. Para realizar esta operao utiliza-se o comando INSERT, conforme ilustram as Figuras 8 e 9 .

Figura 8: Insero dos dados na tabela de alunos

23

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 9: Insero dos dados na tabela de pontuaes

Neste caso, foram inseridos cinco alunos, bem como os oito registros de notas destes alunos. Vale ressaltar que o MySQL armazena datas no formato ano-ms-dia, por isto, na hora de informar a data de nascimento dos alunos, bem como a data das avaliaes, as mesmas foram apresentadas no formato compreendido pelo SGBD. Com isto, tem-se a base de dados preenchida e a partir da torna-se possvel extrair as informaes nela contida.

2.5. EXIBINDO

AS INFORMAES CONTIDAS NO BANCO DE DADOS

Nesta seo ilustrado o mecanismo de consultas do banco de dados. O objetivo deste processo de extrao de informaes de extrema importncia para que se possa acessar o contedo do banco de dados. Para consultar as informaes deve-se definir 3 elementos bsicos: 1- as colunas ou atributos que e deseja listar, 2- a(s) tabela(s) que possui(em) 3- os dados, e finalmente os critrios para a busca dos registros. A Figura 10 exibe duas consultas que listam todas as colunas e registros das tabelas de alunos e pontuaes, respectivamente.

24

Cadernos de Informtica

Figura 10: Listando o contedo das tabelas de alunos e pontuaes

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Para ilustrar a utilizao de critrios para a recuperao dos dados, suponha uma listagem do nome de todos os alunos que nasceram depois de 1980. A Figura 11 ilustra a consulta para a resoluo desta pergunta.

Figura 11: Listagem do nome dos alunos que nasceram depois de 1980

Finalmente, possvel extrair informaes armazenadas em tabelas relacionadas, especificando mais de uma tabela na clusula FROM. Desta forma, a ligao ser feita pelos atributos em comum entre as entidades. No exemplo, a coluna matrcula este meio de ligao. Portanto, deseja-se listar o nome dos alunos e as notas obtidas por eles em todos os testes aplicados no ms de maro de 2004. A Figura 12 fornece a soluo para este problema.
Figura 12: Listagem do nome e dos pontos obtidos em maro de 2004

25

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Esta seo mostra os mecanismos de consultas do SGBD, que sero abordados com maiores detalhes em sees futuras. O objetivo aqui apenas de introduzir os mecanismos de consultas do banco de dados.

3. CONCLUSES
Este captulo discutiu os aspectos bsicos de um banco de dados, ilustrando a criao de um sistema simplificado. Estes conhecimentos servem como introduo e facilitam o entendimento de outros aspectos que sero abordados nos prximos captulos. Alm disto, alguns elementos discutidos sucintamente neste mdulo sero retomados adiante, a fim de que se tenha um entendimento mais aprofundado dos mesmos. O objetivo principal deste mdulo a introduo e a familiarizao do aluno com os conceitos bsicos de uma aplicao de banco de dados real.

4. REFERNCIAS

BIBLIOGRFICAS

Houaiss, Antnio; Villar, Mauro de Salles. Houaiss Dicionrio da Lngua Portuguesa Portuguesa. Rio de Janeiro: Objetiva, 2003. MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. Abiteboul, S. Hull, R., and Vianu, V. [1995] Foundations of Databases, AddisonWesley, 1995. Elmasri, Ramez A.; Navathe, Shamkant (200). Fundamentals of Database System System, Third Edition, Addison-Wesley, Menlo Park, CA.

26

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 2 1. INTRODUO
MODELAGEM DE DADOS

No captulo 1 foi abordada uma pequena aplicao de banco de dados, onde o objetivo era armazenar informaes sobre alunos de uma determinada escola. Vale lembrar que um banco de dados na verdade uma representao de entidades inerentes a um problema real. Desta forma, preciso que o banco de dados contenha informaes que permitam identificar as peculiaridades deste universo ao qual se pretende modelar. Os sistemas de grande porte geralmente contm uma grande quantidade de entidades, isto requer mecanismos que permitam projetar estes bancos de dados de forma fcil e sem perder informaes indispensveis a respeito do problema. Para ilustrar, um sistema para controle de uma empresa possui vrias entidades, tais como funcionrios, fornecedores, clientes, folha de pagamentos, alm do controle de contas a pagar e a receber. Somado a este conjunto de entidades no se pode esquecer das dependncias existentes entre as mesmas, e que definem o comportamento do banco de dados a ser desenvolvido. Em geral, para projetar aplicaes de grande porte preciso constituir equipes de pessoas, onde cada um ser responsvel por uma parte do sistema. Neste caso, haver equipes responsveis pelo levantamento dos requisitos de dados, isto , identificar as entidades envolvidas e as restries que se aplicam ao problema. Definida esta estrutura, eventualmente uma outra equipe ser responsvel por codificar a aplicao que utilizar este banco de dados. notria a necessidade de comunicao entre equipes diferentes para completar a tarefa de projetar o grande sistema. Da torna-se imprescindvel a existncia de uma linguagem padro, de fcil entendimento, que possibilite que a comunicao se d de forma precisa e sem que haja perda de informaes relevantes. Portanto, para a modelagem de um banco de dados so utilizados diagramas que permitem descrever de forma simples e universal, todos os aspectos importantes do sistema que se deseja representar. Este captulo tem como objetivo apresentar os principais aspectos da modelagem de banco de dados, introduzindo conceitos de integridade referencial, normalizao, bem como o modelo Entidade-Relacionamento (ER), que amplamente aplicado na construo e documentao de sistemas de bancos de dados relacionais.

2. DESCRIO

DE UM SISTEMA PARA CONTROLE DE UMA EMPRESA

2.1.DESCRIO

DE UMA EMPRESA DE CONSTRUO CIVIL

A empresa de construo civil tem como objetivo projetar e construir obras tais como prdios, casas, pontes, estradas, para citar algumas de suas atividades. Para isto,

27

Cadernos de Informtica

Para facilitar o entendimento e ilustrar os elementos que definem um diagrama ER, ser abordado um problema relacionado a uma pequena empresa de construo civil. Assim, ser introduzido o escopo do problema, ou seja, o seu propsito e as necessidades que este deve atender. Assim, a partir desta descrio deve-se construir um modelo ER para esta aplicao. O problema da construo civil abordado com maiores detalhes ao longo das prximas sees.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

preciso que a empresa possua pessoas ou funcionrios capazes de desempenhar as diversas tarefas relacionadas a este ramo de negcios. Por exemplo, necessrio que a empresa contenha em seu quadro de funcionrios engenheiros e arquitetos responsveis pelo projeto e clculo da infra-estrutura da obra. Alm disto, necessrio ainda que haja pedreiros e mestres de obras que sero incumbidos de executar o projeto definido pela equipe de engenheiros. Finalmente, devem-se ter profissionais como eletricistas, bombeiros hidrulicos e carpinteiros para que a obra possa ser executada com sucesso. Para facilitar a coordenao dos trabalhos destes profissionais, a empresa organiza as pessoas em equipes de acordo com as suas especialidades. Desta forma, estas equipes so alocadas em uma ou mais obras que estejam sendo desenvolvidas pela empresa de construo civil. Vale ressaltar que para fazer parte de uma equipe a pessoa deve fazer parte do quadro de funcionrios da empresa, e caso um funcionrio seja afastado da empresa, o mesmo deve ser imediatamente retirado da equipe qual ele pertena. Cada equipe possui um gerente, responsvel por coordenar os trabalhos delegados a ela, sendo que este deve ser necessariamente um funcionrio da prpria empresa. preciso salientar que ocorrem situaes onde h mais de uma obra em andamento, simultaneamente. Da, cada obra ter vrias equipes envolvidas, j que vrias habilidades so necessrias para executar a construo da mesma. Existem equipes que participam de vrias obras ao mesmo tempo, j que as suas tarefas no requerem dedicao exclusiva a um projeto. Este o caso dos engenheiros, que podem projetar e acompanhar o desenvolvimento de diversas obras simultaneamente, sem que haja comprometimento na qualidade do seu trabalho ou at mesmo prejuzos para o cronograma de execuo das mesmas. Este um cenrio que descreve uma aplicao real de um sistema de banco de dados. Percebe-se que este apresenta vrias entidades e restries que devem ser respeitadas a fim de que o sistema funcione da forma esperada. Para isto, ser criado nas prximas sees, um modelo ER que descreva todas as particularidades expostas anteriormente, servindo de base para ilustrar os conceitos que envolvem a modelagem de um banco de dados relacional.

3. ASPECTOS
Figura 1: Smbolos utilizados para o desenho de um diagrama ER

GERAIS DO MODELO

ENTIDADE-RELACIONAMENTO

O modelo Entidade-Relacionamento (ER ou MER) constitui-se em uma simbologia que permite representar de forma grfica os elementos que definem um sistema de banco de dados. Basicamente existem smbolos para representar as entidades e os seus atributos, bem como os seus relacionamentos e restries. A Figura 1 ilustra estes componentes empregados para elaborar um diagrama ER. Na figura o retngulo simples representa uma entidade forte, enquanto o retngulo com borda dupla referencia uma entidade fraca. As entidades fortes so aquelas que no dependem de outras entidades para que existam. Por outro lado as entidades fracas s sero encontradas quando houver uma entidade forte associada a ela, ou seja, so dependentes de outras entidades para que existam.

28

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Como discutido no captulo 1, toda entidade descrita por um conjunto de atributos ou colunas, representando as suas qualidades ou caractersticas. No exemplo adotado, os alunos eram definidos por um nome, nmero de matrcula, srie, turma e data de nascimento, sendo que o nmero de matrcula era o identificador nico do aluno, conhecido tambm como chave primria. Os atributos so representados na Figura 1 por crculos preenchidos e no preenchidos, posicionados sobre uma pequena linha. Estes smbolos so colocados sobre as entidades as quais eles pertencem, onde sobre eles so especificados os nomes de cada atributo. Os atributos que formam a chave primria da tabela so representados pelos crculos preenchidos, enquanto os demais atributos so representados pelos crculos em branco. Alm das entidades e seus atributos ou colunas, existem ainda relacionamentos que ocorrem entre elas, como o caso de um funcionrio que gerencia uma equipe. Estes relacionamentos so representados por losangos que so conectados por linhas s entidades envolvidas. Da mesma forma que acontece com a representao de entidades, um losango com borda simples ou dupla denota, respectivamente, relacionamentos fortes e fracos. Um relacionamento fraco ocorre quando h a participao de pelo menos uma entidade dependente ou fraca, caso contrrio esta relao ser considerada forte. importante salientar que os relacionamentos assim como as entidades podem conter atributos. Como exemplo, se for necessrio armazenar as data de incio e trmino dos trabalhos de uma equipe em uma determinada obra, estas informaes pertencem ao relacionamento entre as entidades e no s entidades envolvidas. Finalmente, no diagrama indica-se a quantidade de participantes de cada entidade no relacionamento atravs de nmeros colocados sobre as arestas, ou linhas, que conectam as entidades ao relacionamento. Estes nmeros definem a cardinalidade do relacionamento. No exemplo, um funcionrio poder gerenciar apenas uma equipe. Com isto esto disponveis os principais elementos que sero utilizados para a construo de um modelo ER. Assim, as sees seguintes elaboram o modelo ER do sistema de construo civil, utilizando os smbolos apresentados e discutidos at aqui. Este diagrama constitui uma linguagem universal, utilizada pelos arquitetos e engenheiros de software para a documentao dos requisitos de cada aplicao modelada.

3.1. DESCRIO

DAS ENTIDADES PROBLEMA

O problema proposto constitudo de vrias entidades que esto apresentadas de forma resumida na Tabela 1 1.

TELEFONE E TRMINO E ENDEREO

OBRAS FUNCIONRIOS CARGOS EQUIPES

FORTE FORTE FORTE FRACA

CDIGO, NOME, DATAS DE INCIO CPF, NOME, DATA DE NASCIMENTO CDIGO


E DESCRIO E NOME

CDIGO

Tabela 1: Entidades do banco de dados da construo civil

29

Cadernos de Informtica

ENTIDADE EMPRESA

TIPO FORTE

ATRIBUTOS CDIGO, NOME, CNPJ E

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Para facilitar o trabalho de elaborao do diagrama ER, destacam-se na tabela o tipo de cada entidade, bem como os atributos que as constituem. Estes foram definidos de forma arbitrria, e a definio dos mesmos estar sempre vinculada ao problema abordado, no existindo nenhuma regra formal para a definio de quais atributos existiro. Observa-se a partir da tabela que os funcionrios so uma entidade forte j que existem independentemente das demais entidades do modelo. J as equipes so consideradas entidades fracas, visto que s existiro caso haja funcionrios para a sua constituio. A Figura 2 ilustra um diagrama que descreve os elementos apresentados na Tabela 1 1, utilizando os smbolos apresentados na Figura 1 1. Este modelo contm todas as entidades do problema proposto na seo 2.1, bem como os atributos que sero considerados para a soluo do mesmo. Na figura esto presentes todos os atributos e aqueles que foram considerados como chave primria da entidade. Vale ressaltar que, assim como a escolha dos atributos, a definio de qual (is) atributo (s) compor (o) a chave primria depende nica e exclusivamente das necessidades especficas da aplicao. Ou seja, os requisitos de dados do problema determinaro quais os atributos devero existir para cada entidade do modelo, bem como quais sero o identificador nico ou chave primria da entidade.

Figura 2: Diagrama contendo as entidades do modelo e seus atributos

3.2. DESCRIO

DOS RELACIONAMENTOS DO SISTEMA

Um relacionamento define uma interao entre duas entidades do modelo. No exemplo, existe um relacionamento entre as entidades funcionrios e equipes definindo que toda equipe gerenciada por um funcionrio, e que um funcionrio poder gerenciar apenas uma equipe. Na Figura 3 est apresentado o diagrama que descreve esquematicamente esta situao. Todo relacionamento possui uma cardinalidade que define o nmero de participantes de cada entidade que estaro presentes nesta interao. Neste caso, existem trs tipos de relacionamentos:

Cadernos de Informtica

1- Um para um 2- Um para muitos


Figura 3: Relacionamento funcionrio gerencia equipe

3- Muitos para muitos No relacionamento funcionrio Gerencia equipe, percebe-se que o mesmo possui cardinalidade de um para um (denotado por 1:1). A cardinalidade representada por nmeros colocados sobre as arestas que conectam o relacionamento s entidades participantes, conforme ilustra a Figura 3 3. Isto implica que uma equipe possui apenas um

30

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

gerente, e ao mesmo tempo um funcionrio poder gerenciar apenas uma equipe. Existem situaes em que pode haver a participao, no relacionamento, de um ou mais elementos de uma das entidades presentes na interao. Se considerar a formao de uma equipe, nota-se que uma equipe composta por um grupo de funcionrios. Neste caso, o relacionamento conhecido como um para muitos, sendo denotado por 1:N. A Figura 4 ilustra esta situao. De um modo geral, os relacionamentos um para muitos so os mais comumente encontrados em sistemas de bancos de dados. No modelo existem outros Figura 4: relacionamentos deste tipo, como o caso do relacionamento entre empresa e obras. Relacionamento Isto , a empresa pode desenvolver vrias obras simultaneamente.
equipe composta por funcionrios

O terceiro e ltimo tipo de relacionamento so aqueles onde podem existir vrias ocorrncias de ambas as entidades que participam desta colaborao. Neste caso, a cardinalidade do relacionamento dita de muitos para muitos, e denotada por N:M. A Figura 5 trs o diagrama que representa um relacionamento muitos para muitos, ocorrido entre equipes e obras. No exemplo apresentado na Figura 5, notrio que uma obra pode ser executada por vrias equipes ao mesmo tempo, de forma a desempenhar as tarefas das mais diversas especialidades. Da mesma forma, uma equipe pode estar desenvolvendo trabalhos em diversas obras, como o caso da equipe de engenharia. Ou seja, os engenheiros podem monitorar mais de uma obra ao mesmo tempo, sem que haja comprometimento do servio prestado. Uma vez discutidas as questes ligadas aos relacionamentos, possvel construir ento, o diagrama ou modelo ER completo para a aplicao proposta. Assim, deve constar no modelo todas as entidades existentes no problema, seus atributos e relacionamentos. Alm disto, preciso salientar no diagrama a cardinalidade de cada relacionamento, possibilitando que as restries inerentes ao problema sejam documentadas, propaga-

Figura 5: Relacionamento de equipes que executam obras

Figura 6: Modelo ER completo da aplicao proposta

31

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

das e respeitadas pelos desenvolvedores do sistema. A Figura 6 contm o diagrama ER completo para a aplicao da construo civil, descrita na seo 2.1.

4. MODELANDO

AS RESTRIES DE DADOS DO MODELO

A fase de modelagem de um banco de dados consiste em identificar os elementos que compem o problema, bem como a forma como se d a interao entre os mesmos. Todo modelo deve ressaltar as restries que se aplicam sobre os elementos que constituem o sistema. Basicamente existem dois tipos de restries que so aquelas aplicadas aos atributos de cada entidade e as restries de relacionamento. As sees seguintes apresentam mais detalhes sobre estes aspectos.

4.1. RESTRIES DE

ATRIBUTOS

Conforme descrito anteriormente, uma entidade definida por um conjunto de atributos ou colunas. Estes atributos armazenam os dados referentes entidade, por exemplo, cada funcionrio tem um nome, CPF, endereo, telefone e data de nascimento. Estas so as informaes que definem um funcionrio no sistema proposto. Vale ressaltar que no existem duas pessoas com o mesmo CPF, por isto este atributo chamado de chave primria, pois identifica unicamente o registro ou funcionrio, e no aceita valores duplicados. Esta a forma utilizada pelos sistemas gerenciadores de banco de dados para garantir a unicidade dos valores armazenados em uma determinada coluna. No diagrama, a chave primria representada por um crculo preenchido, onde a mesma pode ser composta por mais de um atributo. Alm desta restrio imposta pelo modelo, existem outras regras que devem ser obedecidas. No exemplo, no permitido armazenar uma data de nascimento que no exista, tal como, 30 de fevereiro. Esta restrio conhecida como restrio de domnio do atributo, e deve ser garantida pela aplicao. No h como representar este tipo de informao no diagrama lgico. Este trabalho realizado ao projetar o modelo ER utilizando uma ferramenta de modelagem, como o caso do DBDesigner4, que ser apresentado no prximo captulo. Desta forma, cada atributo ter o seu tipo definido pelo conjunto de dados suportados pelo Sistema Gerenciador de Banco de Dados (SGBD), que ser utilizado para a soluo do problema.

4.2. INTEGRIDADE REFERENCIAL


A integridade referencial se refere ao cumprimento das restries existentes nos relacionamentos do modelo, isto , a cardinalidade. Portanto, quando dito no modelo que uma equipe composta de funcionrios, a aplicao ou o SGBD deve garantir que no haver nenhuma equipe composta por pessoas que no sejam funcionrios. Ou ainda, deve-se fazer com que ao retirar um funcionrio que esteja inserido em uma equipe, a referncia dele seja tambm removida da equipe que ele eventualmente participar. Um exemplo clssico da restrio de integridade o sistema para armazenar os pais e os respectivos filhos de pessoas que trabalham em uma determinada empresa. Ao remover

32

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

um pai cadastrado no banco devem-se remover os filhos dele, pois do contrrio ficaria um registro de um filho para um pai desconhecido pelo sistema. Isto geraria uma inconsistncia na base de dados, j que todo filho possui um pai, mesmo que ele no o conhea por quaisquer razes. As restries de integridade podem ser construdas utilizando o conceito de chaves estrangeiras presente na maioria dos SGBD disponveis no mercado. Neste caso, ao definir as chaves estrangeiras do modelo, na verdade so determinados os comportamentos de cada entidade caso haja uma remoo ou alterao de um dado que participe de um relacionamento qualquer. Desta forma, garante-se que no haver violao das restries impostas pelo modelo. Estas restries so apresentadas no modelo atravs da cardinalidade, que exibida para cada relacionamento. A construo das chaves estrangeiras foi introduzida no captulo 1 e sero detalhadas no mdulo que trata do mapeamento do modelo ER para as tabelas do banco de dados.

4.3. NORMALIZAO

DE DADOS, ELIMINANDO A REDUNDNCIA

O conceito de normalizao est ligado ao fato de que no se devem manter informaes duplicadas dentro do banco de dados. Neste caso, durante o processo de criao do banco a partir do modelo lgico proposto, preciso tomar o cuidado de eliminar informaes redundantes ou duplicadas, nas tabelas que sero criadas. Para ilustrar esta questo, retoma-se o exemplo do relacionamento entre funcionrio e equipe. Ao criar as tabelas de funcionrios e equipes o endereo do funcionrio poderia ser colocado, erroneamente, em abas as tabelas. Isto seria uma redundncia que poderia gerar inconsistncias na base de dados. Caso haja uma alterao do endereo do funcionrio, esta informao dever ser modificada na tabela de equipes, o que gera um esforo maior e pode gerar problemas, caso a alterao no seja efetuada em ambos os locais. Neste caso, existem no sistema dois endereos distintos para um mesmo funcionrio, o que incorreto ou inconsistente e pode levar a uma concluso errada. Alm disto, esta abordagem geraria um desperdcio de espao para armazenar a mesma informao duas vezes. Para evitar estas situaes, deve-se eliminar a redundncia de dados a fim de se fazer um uso racional do banco de dados. Esta questo ser abordada com mais detalhes no captulo seguinte, que trata da criao do banco de dados a partir do modelo ER. Vale ressaltar que o modelo ER no apresenta nenhuma simbologia que indique qual o nvel de normalizao desejado. Mas, existem algumas regras que devem ser aplicadas durante o mapeamento fsico do banco de dados. Estas regras sero abordadas nos captulos seguintes.

5. CONCLUSES
Este captulo apresentou os fatores relacionados modelagem do banco de dados, exibindo as notaes e smbolos empregados para desenhar o modelo lgico do banco de dados. O objetivo prover o conhecimento mnimo a respeito dos constituintes de um diagrama ER, bem como salientar as restries que devem estar presentes neste

33

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

desenho. Alm disto, os conhecimentos vistos neste captulo sero amplamente utilizados nos captulos seguintes para que se possa construir o banco de dados para a aplicao proposta.

6. EXERCCIOS

DE FIXAO

1- O que voc entende por atributo? 2- Para que serve uma chave primria de uma entidade? 3- Explique a diferena entre entidades fracas e fortes. 4- D um exemplo de cada uma das entidades do exerccio anterior. 5-. Existem trs tipos de relacionamentos, cite-os. 6- O que um relacionamento? Ilustre com um exemplo. 7- Crie um modelo ER para representar um sistema para armazenar o nome, endereo (rua, bairro, cidade e estado), telefone e celular de todos os seus amigos. 8- Amplie o ER construdo no exerccio anterior, de forma que seja possvel relacionar os seus amigos com as escolas em que eles estudam. Para isto, dever ser criada a entidade escola e o relacionamento entre elas. Os atributos da entidade escola devem ser escolhidos por voc.

7. REFERNCIAS BIBLIOGRFICAS

Batini, C., Ceri, S., and Navathe, S. [1992] Database Design: An Entity-Relationship Approach, Benjamin/Cummings, 1992. D., Embley, D., and Czejdo, B. [1985] "A Relationally Complete Query Language for the Entity-Relationship Model," in ER Conference [1985].

Campbell,

Dumpala, S., and Arora, S. [1983] "Schema Translation Using the Entity-Relationship Approach," in ER Conference [1983].

34

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 3 1. INTRODUO
FERRAMENTA DE MODELAGEM

DBDESIGNER4

O Captulo 2 apresentou uma viso geral dos mecanismos de modelagem de dados, apresentando os conceitos de entidades, atributos e relacionamentos. Foi discutido o modelo Entidade-Relacionamento (ER), bem como a simbologia empregada neste tipo de diagrama, de forma a prover uma comunicao uniforme sobre a estrutura de dados do problema abordado. Para ilustrar um diagrama ER, foi elaborado um esquema lgico para uma aplicao de uma empresa de construo civil. O final do processo culminou em um diagrama ER completo para a aplicao em questo. O objetivo principal de um modelo lgico de banco de dados permitir a sua implantao utilizando um Sistema Gerenciador de Banco de Dados (SGBD) qualquer. Para isto, o modelo deve ser convertido em tabelas, de forma a representar as entidades, atributos, relacionamentos e restries impostas pelo modelo. Para isto, existem ferramentas ou programas que so construdos com o intuito de facilitar a elaborao destes esquemas facilitando a sua aplicao em um SGBD. De um modo geral, estas ferramentas apresentam smbolos que permitem representar todos os aspectos de um modelo ER. Como cada entidade de um diagrama ER compreendida pelo SGBD como uma tabela, estas ferramentas permitem a criao destas tabelas, alm de definir as suas colunas ou atributos, bem como definir os seus tipos de dados. Ainda possvel salientar neste modelo quais so os atributos que definem as chaves primrias e estrangeiras pertinentes ao problema. Desta forma, como existem particularidades entre os diversos SGBD disponveis no mercado, preciso escolher a ferramenta de modelagem, geralmente chamadas de ferramentas CASE, que possua suporte para os recursos presentes no SGBD que ser utilizado para o desenvolvimento da aplicao. O objetivo deste captulo ilustrar uma ferramenta de modelagem de dados, utilizando-a para a elaborao de um modelo lgico para um problema simplificado. Com isto, formam-se uma base de conhecimentos para que se possa no captulo seguinte, elaborar o diagrama que representa o sistema de construo civil. Isto , o modelo ER proposto no captulo 2 ser construdo dentro de uma ferramenta de modelagem. Neste curso, o MySQL foi adotado como o SGBD padro para ilustrar as aplicaes dos bancos de dados propostos no decorrer dos captulos. Neste cenrio, preciso fazer uso de um software que permita a interface com o SGBD MySQL, permitindo explorar todos os recursos disponveis no mesmo. Da optou-se pela ferramenta chamada DBDesigner4, que distribuda gratuitamente e pode ser encontrada no site http:// fabforce.net. Esta ferramenta desenvolvida especificamente para o MysQL e possui suporte ao Sistema Operacional Linux e Windows. Assim, as sees seguintes fornecem uma viso geral da ferramenta DBDesigner4, apresentando os seus principais recursos, e ilustrando um passo a passo para a sua utilizao na elaborao de um modelo simples de banco de dados.

35

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

2. INTRODUO

AO

DBDESIGNER4

Nesta seo sero explorados os principais recursos desta ferramenta de modelagem, que servir como instrumento de trabalho no decorrer deste curso. Para iniciar o uso desta ferramenta, preciso invoc-la a partir de um terminal do Linux, conforme ilustrado na Figura 1 1. Vale ressaltar que o mesmo deve estar configurado no PATH do Linux.
Figura 1: Iniciando o uso do DBDesigner4

Ao executar o comando exibido na figura anterior, o sistema abrir uma tela com um novo modelo em branco, conforme visto na Figura 2 2.
Figura 2: Janela principal do DBDesigner4

Cadernos de Informtica

Nas subsees seguintes, sero apresentados os principais recursos disponveis nesta ferramenta, de forma a permitir uma utilizao mnima de seus componentes para efetuar a construo de um modelo de banco de dados.

2.1. APRESENTAO DOS

COMPONENTES DO

DBDESIGNER4

A tela do DBDesigner4 exibida na Figura 2 apresenta um conjunto de elementos que provem acesso aos mais variados recursos do sistema. No alto da tela encontra-se um conjunto de opes que d acesso s principais funcionalidades do sistema. A Figura 3 apresenta a janela do sistema com o destaque para este conjunto de opes.

36

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 3: Menu de opes do DBDesigner4

Existem basicamente oito tens de menu: 1- File 2- Edit 3- Display 4- Database 5- Plugins 6- Options 7- Windows 8- Help Estas significam respectivamente em portugus: 1. Arquivo, 2. Editar, 3. Exibir, 4. Banco de dados, 5. Acessrios, 6. Opes, 7. Janelas e 8. Ajuda. As opes File e Database sero descritas com maiores detalhes nas prximas sees, por serem importantes para a construo do modelo. Em relao s demais opes, o Edit apresenta funes para a manipulao do modelo, tais como refazer ou desfazer aes, dentre outras. A funo Display permite controlar o formato de exibio do diagrama, isto , a simbologia para a representao das entidades e relacionamentos. As opes Plugins e Options permitem, respectivamente, adicionar funcionalidades acessrias ao sistema e controlar as configuraes do seu sistema de modelagem. Finalmente, as opes Windows e Help fornecem mecanismos para controlar a disposio das janelas do sistema, bem como o acesso a documentao detalhada do mesmo. Esta documentao pode ser consultada para uma compreenso mais aprofundada do sistema como um todo.

2.1.1. DESCRIO

DA OPO

FILE

Esta opo prov os principais mecanismos para a elaborao de um modelo de banco de dados. Ao acionar este item de menu, ser exibido um conjunto de aes do sistema, conforme ilustra a Figura 4 4.

37

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 4: Explorando a opo File

Atravs do menu File possvel criar um novo modelo por meio do boto New, que em portugus significa Novo. Um modelo j existente pode ser aberto utilizando as funes Open (em portugus significa Abrir) ou Open recent (em portugus significa Abrir recente). Desta forma, possvel manipular um modelo previamente construdo. Durante a manipulao do seu modelo permitido armazenar ou salvar as alteraes realizadas por meio das aes Save (em portugus quer dizer Salvar) e Save as (que quer dizer Salvar como, em portugus). Alm disto, possvel exportar e importar um modelo a partir de um arquivo texto, bem como fechar o modelo (Close, ou fechar em portugus) atual ou todos os modelos abertos no sistema (Close all, que Fechar todos em portugus). Por ltimo, para encerrar o sistema o comando Exit, que quer dizer Sair na lngua portuguesa deve ser utilizado.

2.1.2. DESCRIO

DA OPO

DATABASE

O DBDesigenr4 apresenta dentre outras caractersticas interessantes um mecanismo de comunicao do seu modelo lgico com o SGBD que o representa, de forma a possibilitar a sincronizao dos dados em ambos os locais. O sincronismo da base de dados permite recuperar eventuais alteraes que tenham sido feitas nas tabelas ou no modelo, por outras pessoas que utilizam o sistema. A sincronizao neste caso similar ao ajuste de dois relgios, onde ambos so colocados para apresentar o mesmo horrio. Desta forma, o modelo representar a nova base de dados, eventualmente modificada, e vice-versa.

38

Cadernos de Informtica

Estas funcionalidades esto disponveis atravs do menu Database (banco de dados) exibido na Figura 5 5.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 5: Explorando a opo Database

Existem basicamente trs funcionalidades importantes em relao a esta opo. A primeira delas permite abrir uma conexo com o banco de dados Connect to database, que quer dizer em portugus, Conecte-se ao banco de dados. Neste caso, a conexo representa uma ligao estabelecida entre o DBDesigner4 e o MySQL, da mesma forma ilustrada no capitulo 1, utilizando-se o cliente mysql. A segunda opo permite encerrar esta conexo previamente estabelecida Disconnect from database, ou traduzindo, Desconectar-se do banco de dados. Ao acionar a opo para conectar-se ao banco de dados a tela exibida na Figura 6 aparecer.

Figura 6: Abrindo uma conexo com o banco de dados

Ao criar uma nova conexo ser exibida uma janela, conforme ilustra a Figura 7 7.

39

Cadernos de Informtica

Nesta janela sero exibidas todas as conexes disponveis, e caso haja a necessidade de criar novas conexes, basta utilizar o New Database Connection, significando Nova conexo de banco de dados. A criao de novas conexes de extrema importncia, visto que a ferramenta pode ser utilizada para controlar modelos ER armazenados em servidores de bancos de dados espalhados geograficamente.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 7: Criando uma nova conexo com o banco de dados

Nesta tela devero ser informados o nome da conexo (Connection name) e do banco de dados que ser manipulado (Database name), alm do endereo ou Host onde se encontra o SGBD. Quando o servidor MySQL e o cliente, neste caso o DBDesigner4, encontram-se na mesma mquina utiliza-se o endereo localhost. Finalmente, deve-se informar o usurio (Username) e a senha (Password) para a conexo com o SGBD. Perceba que para o propsito deste curso o Driver ser o MySQL. Finalizada a entrada de dados acione o boto Ok e o sistema retornar para a tela exibida na Figura 6 6, s que agora contendo a conexo recm criada. Selecione a conexo desejada e aperte o boto Connect (Conectar), isto iniciar a conexo com o MySQL. A segunda funcionalidade relacionada ao menu Database a sincronizao com o SGBD, atravs do item Database synchronisation, que significa Sincronizao do banco de dados. Este recurso permite converter o modelo lgico construdo em tabelas do seu SGBD. Assim, toda alterao feita no seu modelo ser propagada para o seu SGBD de forma automtica. Para isto, execute os passos para iniciar a conexo com o banco de dados e escolha a opo Database synchronisation. A tela exibida na Figura 8 ser mostrada neste momento.

Figura 8: Sincronizao do modelo com o SGBD

Portanto, devem ser selecionadas as opes para a sincronizao, isto , se o sistema ir apagar as tabelas existentes no SGBD ou no (Dont delete existing tables, que quer dizer No apagar tabelas existentes). Definido estes parmetros basta apertar o boto Execute (Executar) e observar os detalhes da execuo do processo, que so exibidos na janela Progress (Progresso). O terceiro e ltimo recurso relativo manipulao do banco de dados o oposto do que foi apresentado anteriormente. Existem situaes em que desejvel fazer a converso da estrutura dos dados armazenada no seu SGBD para um modelo lgico dentro do DBDesigner4. Esta funo realizada pelo Reverse engineering,

40

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 9: Engenharia reversa de um banco de dados

ou Engenharia reversa, que mostrada na Figura 9 9. Nesta janela devero ser informados os parmetros para que o DBDesigner4 faa a engenharia reversa do seu banco de dados, isto , construa o modelo a partir dos dados. Basicamente sero informadas as tabelas a serem convertidas e a forma com a qual o DBDesigner4 criar os relacionamentos entre estas tabelas (Build relations Construir relacionamentos). Com isto, possvel criar uma interface entre o modelo gerado pelo DBDesigner4 e o SGBD que armazenar as informaes deste modelo. Desta forma permitida a manuteno da consistncia entre o modelo lgico e fsico do seu banco de dados.

2.2. APRESENTANDO A BARRA DE TAREFAS DO DBDESIGNER4


A barra de tarefas do DBDesigner4 fica posicionada na parte esquerda do sistema, e prov acesso aos principais elementos utilizados para a elaborao do modelo ER, tais como as entidades e os relacionamentos. A Figura 10 trs uma janela da aplicao com um destaque para esta barra de tarefas. Os componentes desta parte do sistema sero discutidos nas prximas subsees.

Figura 10: Barra de tarefas do DBDesigner4

41

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

2.2.1. CRIANDO ENTIDADES NO DBDESIGNER4


Em uma ferramenta de modelagem toda entidade representada por uma tabela, facilitando assim a converso do modelo para dentro do SGBD. Deste modo, para criar uma tabela no modelo basta clicar no boto referente tabela e clicar na rea de desenho da ferramenta, conforme ilustra a Figura 11 11.
Figura 11: Criando uma tabela

Perceba que o sistema cria por padro a tabela com o nome Table_01. Para alterar o seu nome e definir os seus atributos basta utilizar um clique duplo sobre a mesma. Desta forma aparecer a tela ilustrada pela Figura 12 12.
Figura 12: Tabela para armazenar os pais

Cadernos de Informtica

Na figura anterior o nome da tabela ou entidade foi alterado para Pais, e foram definidos dois atributos: o cdigo que um nmero inteiro e o nome que uma cadeia de caracteres (texto) de tamanho mximo 60. Vale ressaltar que no editor de atributos as

42

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

propriedades variam de acordo com o tipo escolhido. Por exemplo, o INT possui AI, que significa Auto Incremento que possibilita a gerao de nmeros seqenciais. Enquanto as colunas textuais no possuem esta propriedade. Outro detalhe que os atributos chave primria so identificados por uma chave desenhada ao lado do seu nome, os demais no apresentam esta marcao. No exemplo a chave primria da tabela de pais o cdigo numrico. Ao definir todos os atributos da tabela basta acionar o boto no formato de um V para confirmar a alterao ou o X para descartar as mudanas. Desta forma, para construir todas as entidades do modelo, basta executar o procedimento realizado para a tabela Pais para cada tabela do seu sistema. Vale ressaltar que as mesmas podem ser posicionadas em qualquer local da tela de edio do modelo.

2.2.2. DEFININDO

OS RELACIONAMENTOS

1 PARA MUITOS

Existem trs tipos de relacionamentos entre as entidades que so um para um, um para muitos e muitos para muitos. No DBDesigner4, para criar este tipo de relacionamento, basta selecionar na barra de tarefas o tipo de relacionamento desejado e clicar nas entidades que formam a relao. A Figura 13 exibe os componentes para a definio destes elementos. Para ilustrar a criao de um relacionamento, suponha que fosse necessrio armazenar os Pais e os seus respectivos filhos. Desta forma, natural que o relacionamento seja do tipo um para muitos, j que um pai pode ter mais de um filho associado. Para realizar esta tarefa, acione o relacionamento 1:N, clique na entidade com cardinalidade 1, neste caso Pais. Depois clique na segunda entidade, isto , com cardinalidade N, que so os Filhos. Feito isto aparecer a situao ilustrada pela Figura 14 14.
Figura 13: Tipos de relacionamentos no DBDesigner4

1 PARA 1

MUITOS PARA MUITOS

Figura 14: Relacionamento 1:N entre Pais e Filhos

43

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Assim, nota-se o aparecimento de uma conexo entre a tabela Pais e Filhos, com uma marcao que define os lados 1 e N da relao. Para editar as propriedades do relacionamento basta utilizar um clique duplo sobre o mesmo e a janela apresentada na Figura 15 aparecer. Neste caso, possvel definir o nome do relacionamento, bem como as restries de integridade do mesmo. No exemplo, ao remover ou alterar um Pai que tenha Filhos o sistema poder assumir a postura de modificar ou excluir todos os filhos (Cascade), ou no permitir a alterao/excluso de um pai que possua filhos (Restrict). As demais restries apresentadas na figura so pouco utilizadas e no sero abordadas no contexto deste livro.
Figura 15: Definindo as propriedades do relacionamento Pais e Filhos

3.

CONCLUSES
O objetivo principal deste mdulo foi introduzir os conhecimentos bsicos sobre a ferramenta de modelagem DBDesigner4. Desta forma, tm-se condies de compreender e utilizar os elementos que definem as entidades e relacionamentos, dentro do contexto desta ferramenta, e possibilita a sua utilizao posterior. Portanto, no captulo seguinte, esta ferramenta ser empregada para o desenho do modelo ER da aplicao concebida no Captulo 2. Alm disto, sero utilizados os recursos de manipulao do banco de dados a fim de mapear o modelo gerado para dentro do SGBD MySQL.

4. EXERCCIOS

DE FIXAO

Cadernos de Informtica

1- Descreva com suas palavras qual o objetivo da ferramenta DBDesigner4. 2- Como pode ser obtida esta ferramenta? 3- Por que o DBDesigner4 foi escolhido para ser utilizado neste curso? Existe alguma relao com o uso do MySQL? 4- Quantas so as opes de menu do DBDesigner4. Cite-as. 5- O que voc entende por sincronizao de banco de dados? 6- Descreva o procedimento para criar uma nova conexo com o banco de dados a partir do DBDesigner4. 7- Crie uma tabela para armazenar o nome, a idade e o telefone de todos os seus familiares. 8- Crie um modelo ER, utilizando o DBDesigner4, para representar o sistema que voc construiu no exerccio 8 do captulo 2.

5. REFERNCIAS BIBLIOGRFICAS

FabForce.net: DBDesigner4 online documentation. Disponvel em: http:// www.fabforce.net/dbdesigner4/doc/index.html. Acesso em: 20 dez. 2005.

44

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 4 1. INTRODUO
Os captulos iniciais deste livro tiveram como objetivo a conceituao de um modelo lgico de banco de dados, bem como apresentar uma pequena introduo s aplicaes que utilizam estas estruturas de dados. Com o intuito de formalizar os conceitos da modelagem de um sistema real, foi apresentada uma aplicao para controle de uma empresa de construo civil. A discusso culminou com o diagrama ER ou modelo lgico do banco de dados, que por comodidade ilustrado novamente pela Figura 1 1.
Figura 1: Modelo EntidadeRelacionamento do sistema de construo civil

Posteriormente definio do diagrama ER, abordou-se os aspectos prticos da utilizao de uma ferramenta de modelagem. Este tpico ilustrou os mecanismos para a elaborao de um modelo lgico dentro de um ambiente que permitia a comunicao com o Sistema Gerenciador de Banco de Dados (SGBD). Portanto, neste captulo sero utilizados os conhecimentos adquiridos at o momento para que se possa criar o modelo exibido na Figura 1 1, utilizando a ferramenta DBDesigner4. O objetivo final projetar o diagrama ER e aplicar este modelo ao MySQL, criando um banco de dados que ser chamado de curso. Assim, as sees seguintes ilustram passo a passo, os caminhos que devem ser seguidos para a obteno deste banco de dados.

O BANCO DE DADOS E A CONEXO PARA O MESMO

O primeiro passo a ser dado no sentido de construir o banco de dados para a aplicao de construo civil, justamente criar o banco de dados no MySQL e criar uma conexo no DBDesigner4 que permita acess-lo. Desta forma, ser possvel criar um interface com o SGBD, e permitir sincronizar com o MySQL o modelo lgico gerado. Para criar um banco de dados, inicie uma conexo com o MySQL atravs de um terminal no Linux e execute o comando CREATE DATABASE, conforme ilustra a Figura 2 2.

45

Cadernos de Informtica

2. CRIANDO

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 2: Utilizando o MySQL para a criao do banco de dados curso

Feito isto, o passo seguinte criar uma conexo no DBDesigner4, permitindo que este se comunique com o banco de dados recm criado. A Figura 3 fornece as configuraes da conexo chamada de ConstrucaoCivil.
Figura 3: Conexo para acesso ao banco de dados curso

Vale ressaltar que o endereo do servidor MySQL o mesmo onde se encontra o DBDesigner4, por isto foi utilizado localhost. O banco de dados o curso, e o usurio root, sem senha ser utilizado para estabelecer a conexo com o MySQL. Feito isto, basta clicar em Ok, selecionar a conexo ConstrusoCivil e acionar o boto Connect (Conectar). Assim, estar estabelecida a comunicao do DBDesigner4 com o banco de dados curso.

Cadernos de Informtica

3. CONSTRUO

DAS ENTIDADES DO MODELO

Nesta seo sero criadas as entidades do modelo proposto, que so Empresa, Cargos, Funcionrios, Equipes e Obras. Para isto, a subseo 3.1 faz uma pequena introduo aos tipos de dados suportados pelo MySQL de forma a permitir a criao dos atributos ou colunas de cada entidade identificada anteriormente.

46

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.1. TIPOS

DE DADOS NO

MYSQL

O MySQL apresenta um vasto conjunto de dados que permite a representao das mais variadas informaes existentes no mundo real. Por exemplo, possvel criar uma coluna para armazenar uma msica, um vdeo ou at mesmo uma imagem. Alm de dados mais comuns, tais como datas, nmeros, letras e textos, dentre outros. Para simplificar a discusso, sero descritos aqui apenas os tipos de dados relevantes para a soluo do problema proposto no incio do captulo. Portanto, nem todos os tipos de dados existentes no DBDesigner4, e por conseqncia no MySQL, sero descritos aqui. Maiores informaes sobre todos os tipos de dados existentes no MySQL podem ser encontradas no site http://www.mysql.com/documentation. Os tipos de dados podem ser agrupados em trs grandes grupos que so os nmeros, textos e datas e horas. A Tabela 1 apresenta um resumo dos tipos de atributos que sero utilizados no modelo proposto.

CATEGORIA NMEROS TEXTOS DATA E HORA

TIPO INTEGER DOUBLE CHAR(X) DATE TIME

DESCRIO NMEROS INTEIROS NMEROS REAIS OU PONTO-FLUTUANTE TEXTO COM TAMANHO MXIMO DE X CARACTERES DATA NO FORMATO AAAA-MM-DD HORA NO FORMATO HH:MM:SS

Tabela 1: Principais tipos de dados do MySQL

Desta forma, possvel definir as restries de domnio dos seus atributos, uma vez que os mesmos devero respeitar o tipo de dados definido para ele. Isto , no ser possvel armazenar uma informao textual em uma coluna de data, eliminando assim as inconsistncias. Tendo em vista os tipos de dados ilustrados nesta seo possvel elaborar o diagrama para todas as entidades do sistema, conforme mostrado na seo 3.2.

3.2. DEFINIO

DAS ENTIDADES DO SISTEMA

O procedimento completo para a criao de uma tabela est descrito no captulo 3, e por isto no ser exposto novamente. Vale lembrar que todas as tabelas devem ser criadas como InnoDB para que a integridade referencial funcione com sucesso. A Figura 4 apresenta a tela de edio de tabelas do aplicativo, onde esto descritos todos os atributos da entidade Empresa.

47

Cadernos de Informtica

Esta seo descreve a criao das cinco entidades do sistema de construo civil a partir da utilizao do DBDesigner4. Vale lembrar que esta ferramenta considera uma entidade como sendo uma tabela, onde as colunas definem os atributos, que por sua vez necessitam de um tipo de dado. Por isto, os nomes entidades e tabelas sero empregados neste contexto como sinnimos, isto , representam uma mesma informao.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 4: Definio da tabela Empresa

Portanto a empresa constituda de quatro colunas, uma do tipo numrico representando a chave primria da tabela, e trs atributos do tipo texto para armazenar as demais informaes. Percebe-se na figura a expanso das opes de tipos para a coluna telefone. notria a existncia de outros tipos que no foram apresentados na Tabela 1 1. A segunda entidade do modelo so as obras, que tambm so descritas por um cdigo numrico, um nome e as datas de incio e trmino das mesmas. A Figura 5 descreve esta tabela.

Figura 5: Definio da tabela Obras

Cadernos de Informtica

A prxima tabela do sistema a que armazena os funcionrios da empresa. Esta tabela apresenta uma chave primria definida pelo atributo CPF, que ser representado por um texto de tamanho 20. Alm disto, existem os atributos nome, data de nascimento e telefone de contato do funcionrio. A Figura 6 fornece o esquema deste objeto.

48

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 6: Definio da tabela Funcionrios

As informaes de cargos dos funcionrios sero armazenadas na tabela Cargos, que apresenta apenas dois atributos. O primeiro um cdigo numrico que identifica o cargo, e o segundo o nome ou descrio do cargo. A Figura 7 ilustra a definio desta tabela.
Figura 7: Definio da tabela Cargos

49

Cadernos de Informtica

Finalmente, a Figura 8 fornece a representao da entidade equipe que responsvel por agrupar um conjunto de funcionrios de uma determinada especialidade. Assim como a entidade obras, uma equipe contm apenas um nome e um cdigo que a identifica. Vale ressaltar que no h nenhuma forma de identificar uma entidade fraca quando se utiliza uma ferramenta de modelagem.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 8: Definio da tabela Equipes

Este ponto marca o fim da definio das entidades ou tabelas do sistema. Assim, a situao em que se encontra o modelo exemplificada pela Figura 9 9.

Figura 9: Ilustrao das 5 tabelas do sistema para construo civil

50

Cadernos de Informtica

Assim, tendo construdo todas as tabelas do sistema resta ainda definir os relacionamentos entre os objetos, bem como as restries e cardinalidades pertinentes ao problema. Esta tarefa descrita com detalhes na prxima seo.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.3. D EFININDO

OS RELACIONAMENTOS ENTRE AS TABELAS

O objetivo desta seo elaborar os relacionamentos existentes entre as entidades do sistema. Existem basicamente cinco relacionamentos, que so: 1- Funcionrio gerencia equipe 2- Equipe composta de funcionrios 3- Funcionrios possuem cargos 4- Equipes executam obras 5- Empresa constri obras Cada um destes relacionamentos apresenta a cardinalidade descrita no modelo da Figura 1. Os elementos do DBDesigner4 relativos s relaes foram expostos no captulo anterior e no sero vistos novamente. O primeiro relacionamento que ser definido o funcionrio gerencia equipe. Este possui cardinalidade de um para um, e a ferramenta criar um atributo em uma das tabelas de forma a identificar a interao entre eles. Portanto, razovel que seja colocada na tabela de equipes o cdigo do funcionrio que a gerencia. Para que isto se verifique, deve-se definir a tabela de equipes como o trmino da relao, isto , clicar no elemento 1:1, depois na tabela funcionrios e ento na tabela de equipes. Alm disto, deve-se garantir que caso haja remoo ou alterao de um funcionrio, se o mesmo fizer parte de alguma equipe, esta referncia dever ser excluda tambm. Ou seja, nos campos On delete e On update utiliza-se a restrio CASCADE, que realiza exatamente esta tarefa. A Figura 10 ilustra a situao descrita. Para o caso de relacionamentos do tipo um para muitos, a chave primria da entidade do lado um ser colocada na tabela com vrias ocorrncias (N). Com isto possvel identificar a interdependncia entre as entidades. Neste caso, aciona o elemento 1:N, clica na entidade 1 e depois na entidade N para construir o relacionamento corretamente. As Figuras 11, 12, e 13 13, representam respectivamente os relacionamentos Equipes so compostas por Funcionrios, Funcionrios possuem Cargos e Empresa constri Obras.

51

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 10: Relacionamento Funcionrio gerencia Equipe

Figura 11: Relacionamento Equipes so compostas por Funcionrios

Figura 12: Relacionamento Funcionrios possuem Cargos

Figura 13: Relacionamento Empresa constri Obras

52

Cadernos de Informtica

Vale ressaltar que para todos os relacionamentos foi aplicada a opo RESTRICT. Este recurso garante que nenhuma alterao ou excluso poder ser realizada em registros que apresentem correspondncia na tabela que est no lado N da relao. J o relacionamento ilustrado na Figura 13 13, a restrio utilizada foi o CASCADE, propagando assim toda alterao/excluso ocorrida. Isto significa dizer que se remover ou alterar uma entidade no lado 1 as referncias existentes no lado N sero automaticamente alteradas/excludas.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

O ltimo relacionamento : equipes executam obras. Neste caso o tipo do relacionamento de muitos para muitos, ou seja, a obra executada por vrias equipes, e por conseqncia, uma equipe participa de vrias obras. Ao acionar o elemento N:M da ferramenta de modelagem e clicar nas duas tabelas, ser criada uma nova tabela que conter as chaves primrias de ambas as entidades. A Figura 14 ilustra esta situao.

Figura 14: Relacionamento Equipes executam Obras e Obras so executadas por Equipes

Percebe-se na realidade que um relacionamento de muitos para muitos convertido automaticamente para dois relacionamentos do tipo um para muitos. Isto feito a partir da introduo de uma nova tabela, que no exemplo foi chamada de Obras_has_equipes. Com isto, est concludo o modelo do banco de dados da construo civil e o diagrama gerado apresentado na Figura 15 15.

Figura 15: Diagrama completo da aplicao

53

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.4. CONVERTENDO

O MODELO PARA O BANCO DE DADOS CURSO

Uma vez concluda a modelagem do sistema possvel utilizar a funcionalidade de sincronizao de dados do DBDesigner4 para criar as tabelas dentro do MySQL. O procedimento para realizar esta tarefa foi apresentado com detalhes no captulo anterior, portanto no ser exposto novamente. A Figura 16 ilustra a execuo da rotina de sincronizao de dados. Desta forma, est disponvel no banco curso gerenciado pelo MySQL, todas as tabelas e atributos descritos no modelo lgico. Vale lembrar que toda alterao feita no modelo poder ser refletida no banco curso atravs desta prtica. Isto seria necessrio no caso de outros usurios do banco terem realizados alteraes no modelo ou nas tabelas e desejarem obter a verso mais atual do mesmo.

4. CONCLUSES
Neste captulo foi elaborado um modelo lgico do sistema de construo civil, a partir da utilizao de uma ferramenta de modelagem de dados. Com isto, finaliza-se a discusso sobre os aspectos do desenho da aplicao, possibilitando a extenso destes conhecimentos para desenvolver novos sistemas. Os captulos posteriores abordaro questes mais ligadas utilizao dos dados armazenados no SGBD, isto , tcnicas de consultas e extrao de dados destes bancos de dados projetados at aqui.

Figura 16: Sincronizao do modelo com o banco curso

5. REFERNCIAS

BIBLIOGRFICAS

Cadernos de Informtica

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. FabForce.net: DBDesigner4 online documentation. Disponvel em: http:// www.fabforce.net/dbdesigner4/doc/index.html. Acesso em: 20 dez. 2005.

54

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 5 1. INTRODUO
A utilizao de um Sistema Gerenciador de Banco de Dados (SGBD) tem como objetivo principal facilitar o armazenamento e a manipulao das informaes armazenadas por ele. Para isto inicialmente preciso projetar o banco de dados e document-lo, conforme descrito nos captulos anteriores, onde foram expostos os detalhes da modelagem Entidade-Relacionamento. Uma vez elaborado o projeto lgico do banco de dados e tendo sido realizado o seu mapeamento para um SGBD qualquer, torna-se possvel a sua utilizao para o armazenamento das informaes pertinentes ao sistema em questo. Neste caso, no basta apenas criar o repositrio de dados, preciso tambm que este SGBD possua recursos que permitam o acesso a estas informaes. Basicamente, um SGBD prov um mecanismo de consultas capaz de criar uma interface simples para adicionar, alterar, remover e extrair informaes destas grandes bases de dados. Tudo isto feito a partir da utilizao de uma linguagem de consulta padro conhecida como SQL (Structured Query Language), que significa em portugus, Linguagem de Consulta Estruturada. Esta linguagem foi introduzida de forma rpida no captulo 1, e ser abordada com detalhe nos prximos captulos. Desta forma, deseja-se possibilitar a sua utilizao em uma situao real, isto , para a manipulao do banco de dados curso, projetado anteriormente. A linguagem SQL dividida em duas partes: Linguagem para Definio de Dados (DDL Data Definition Language), e Linguagem para Manipulao de Dados (DML Data Manipulation Language). Na DDL encontram-se comandos para a criao e alterao de dados, tais como bancos de dados e tabelas, permitindo, por exemplo, a definio de uma nova tabela ou at mesmo a incluso de uma coluna em uma tabela j existente. J a DML apresenta os comandos para a insero, alterao, excluso e leitura dos dados contidos nestas tabelas. Nos prximos captulos sero discutidos os detalhes da linguagem SQL, mas para isto, neste captulo ser introduzida uma ferramenta grfica para a elaborao destas consultas. O sistema que ser utilizado neste livro ser o MySQL Query Browser que pode ser obtido gratuitamente a partir do site http://www.mysql.com/downloads. Este produto possui suporte para os Sistemas Operacionais (SO) Linux e Windows e servir como ambiente de suporte ao desenvolvimento de consultas SQL no decorrer deste curso. Portanto, o objetivo deste captulo apresentar as principais caractersticas desta ferramenta de forma a possibilitar o seu entendimento e utilizao para a consulta ao banco de dados.

2. INTRODUO

AO

MYSQL QUERY BROWSER

O MySQL Query Browser, assim como o DBDesigner4, conhecido como um cliente MySQL, j que permite a comunicao entre o usurio do SGBD, que pode ser uma pessoa ou sistema que utilize o MySQL como repositrio de dados, e o prprio SGBD. Neste caso, o MySQL Query Browser fornece uma interface amigvel para a visualizao e manipulao dos bancos de dados mantidos pelo MySQL.

55

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Para utilizar esta ferramenta, inicialmente deve-se estabelecer uma conexo com o SGBD MySQL, assim como ocorre no DBDesigner4 e no cliente mysql utilizado a partir de um terminal Linux. Este processo foi empregado para a criao do banco de dados curso, no captulo anterior. O MySQL Query Browser apresenta diversas caractersticas importantes, dentre as quais se destacam o acesso a todos os bancos de dados ou esquemas armazenados pelo MySQL. Alm disto, possui o manual do MySQL, onde pode-se consultar a sintaxe de comandos e funes pr-definidas, alm de um editor visual de consultas que permite a criao de consultas SQL de forma intuitiva, isto , atravs da seleo de atributos e tabelas exibidos pela ferramenta. Neste caso, no necessrio escrever o comando SQL, a ferramenta o gera automaticamente. As subsees seguintes apresentam uma viso geral de como se conectar ao SGBD a partir do MySQL Query Browser, bem como exibir o banco de dados curso criado anteriormente, e finalmente apresentar as principais funcionalidades desta ferramenta.

2.1. ABRINDO

UMA CONEXO COM O BANCO DE DADOS CURSO

Para iniciar o uso do MySQL Query Browser, basta abrir um terminal no Linux e invocar o programa digitando o seu nome no prompt de comandos. Neste ponto deve-se garantir que o mesmo est instalado e configurado para que esteja disponvel no PATH do Linux. Assim, ao digitar mysql-query-browser no terminal do Linux, a tela exibida na Figura 1 aparecer imediatamente. No campo Stored Connection (Conexes armazenadas), ser informado um nome para a conexo que poder ser utilizado para os futuros acessos ao sistema, sem ter que informar todos os parmetros novamente. Alm disto, deve-se informar o endereo da mquina onde se encontra o MySQL (Server Host, que quer dizer Endereo do servidor). Neste caso, o servidor MySQL e o MySQL Query Browser esto instalados na mesma mquina, por isto utiliza-se localhost para identificar o endereo do servidor MySQL. Outro parmetro para a conexo a porta que o MySQL utiliza, por padro a 3306, conforme indicado na Figura 1 1. Toda conexo ao SGBD requer um usurio Username (nome do usurio), que neste caso ser utilizado o root, da mesma forma que as situaFigura 1: Tela es anteriores, e a senha digitada no campo Password (Senha). No caso o usurio root para conexo do no possui senha, portanto este campo dever ser mantido vazio. Finalmente, deve-se MySQL Query escolher qual o Default Schema, ou seja, o Esquema de banco de dados padro. No Browser com o MySQL contexto de um SGBD um esquema se refere todos os objetos que compe a base de dados do sistema. Neste caso, seriam o banco de dados e suas tabelas, procedimentos, vises, dentre outros. No caso do MySQL, um esquema compreendido como um banco de dados. Neste caso ser informado o nome do banco de dados que se deseja trabalhar durante a conexo com o SGBD. Vale ressaltar que este banco de dados pode ser alterado

56

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

posteriormente caso seja necessrio. Para efeito de ilustrar a ferramenta, ser utilizado o banco de dados curso construdo no captulo 4. Definidos os parmetros basta acionar o boto Ok para estabelecer a conexo com o banco de dados desejado. Assim, a tela exibida na Figura 2 aparecer e possvel ver direita o banco de dados curso selecionado, bem como as tabelas que o compe.

Figura 2: Conexo com o banco de dados curso atravs do MySQL Query Browser

Os principais elementos do sistema so o editor de consultas, localizado no topo da janela e o editor de banco de dados na lateral direita da tela, onde so exibidos todos os bancos de dados disponveis no SGBD. Percebe-se a existncia de apenas trs bancos, e em destaque o banco de dados curso, selecionado durante a conexo com o SGBD. Alm disto, a janela ResultSet (Conjunto Resultante), o local onde os resultado das consultas sero exibidos pelo sistema. Na seo 3 estes elementos do sistema sero apresentados com maior detalhe, salientando as suas utilizaes em situaes de acesso ao banco de dados curso.

3.

EXPLORANDO

OS PRINCIPAIS RECURSOS DO

MYSQL QUERY BROWSER

O Objetivo desta seo ilustrar o editor de banco de dados desta ferramenta exibindo a sua capacidade para a definio e alterao de tabelas e, o editor de consultas SQL. Este permite criar manualmente ou automaticamente as consultas a serem submetidas ao SGBD, facilitando a manipulao das informaes armazenadas.

3.1. UTILIZANDO

O EDITOR DE BANCO DE DADOS

A Figura 3 apresenta em destaque o editor de banco de dados do MySQL Query Browser, que fornece acesso aos diversos repositrios de dados gerenciados pelo MySQL.
Figura 3: Detalhe do editor de banco de dados do MySQL Query Browser

57

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Observa-se na figura a existncia de trs bancos de dados, que so curso que est selecionado o mysql e o test que vm criados por padro no MySQL. Este editor prov, alm da capacidade de visualizar as tabelas de um banco de dados, as funes de criar e excluir um esquema ou banco de dados, ou criar, excluir e alterar uma tabela, bem como copiar o comando SQL para a criao da tabela. Assim como feito atravs do DBDesigner4, possvel criar e alterar a estrutura de uma determinada tabela para isto basta acionar o boto da direita do mouse sobre a tabela desejada e selecionar Edit table (Editar tabela), conforme indica a Figura 4 4.
Figura 4: Acionando o editor de tabela do MySQL Query Browser

A Figura 5 ilustra a edio da tabela de cargos a partir do editor de tabelas do MySQL Query Browser.
Figura 5: Editor de tabelas do MySQL Query Browser

Cadernos de Informtica

Desta forma possvel criar e alterar toda a estrutura de dados do banco de dados de forma simples, e se necessrio gerar os comandos SQL, isto DDL, relativos tarefa. Isto facilita sobremaneira a criao dos dados, caso no haja uma ferramenta de modelagem com recursos de sincronizao de dados, conforme o DBDesigner4 prov.

58

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.2. CONHECENDO

O EDITOR DE CONSULTAS

SQL

DO SISTEMA

O MySQL Query Browser apresenta mecanismos sofisticados para a elaborao de consultas tanto para a escrita quanto para a leitura de dados. O grande benefcio desta ferramenta a possibilidade de manipulao das informaes sem que se tenham profundos conhecimentos da linguagem de consulta SQL. Nas subsees seguintes sero explorados os recursos para a elaborao de consultas disponveis dentro desta ferramenta.

3.2.1. INSERINDO,

ALTERANDO E EXCLUINDO DADOS EM UMA TABELA

Para ilustrar a insero de dados em uma tabela a partir do MySQL Query Browser, considera-se a incluso dos cargos de engenheiro, arquiteto e pedreiro, com os cdigos 1, 2 e 3, respectivamente. O primeiro passo ir at o editor de banco de dados e dar um duplo clique sobre a tabela em que se deseja inserir as informaes, neste caso a tabela cargos. Neste momento, aparecer no editor de resultados ResultSet 1 uma tabela vazia com duas colunas cdigo e nome, que so os atributos da tabela de cargos. Alm disto, no editor de consultas no alto da tela, aparece a consulta SQL que lista todas as colunas da tabela, gerada automaticamente pela ferramenta, que select * from cargos c. A Figura 6 ilustra esta situao.

Figura 6: Tela com a tabela de cargos sem registros

59

Cadernos de Informtica

Para inserir os dados, clique no boto Edit (Editar), localizado na parte inferior da tabela de resultados e em seguida acione o boto direito do mouse sobre a caixa de resultados invocando o boto Add Row (Incluir linha). Neste momento o cursor estar disponvel no campo cdigo, que poder ser preenchido. Depois de informado o cdigo aperte a tecla <tab> e ento digite o nome do cargo. Continue este procedimento at que todos os registros tenham sido inseridos e ento aperte a tecla Apply Changes (Aplicar alteraes), para que as modificaes persistam. A Figura 7 destaca os botes a serem utilizados nesta operao e o resultado final da incluso dos trs registros.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 7: Ilustrao da insero de trs registros na tabela cargos

Supondo que o cargo de engenheiro devesse ser modificado para engenheiro civil, de forma a retratar de forma mais especfica os cargos dos funcionrios, deve-se utilizar o recurso de alterao de dados para realizar esta ao. Para isto, basta clicar no boto Edit e ento dar um duplo clique sobre o nome do cargo que se deseja modificar. Feito isto, digite o novo nome do cargo e ento acione o boto Apply Changes para confirmar a alterao da informao. A Figura 8 ilustra este procedimento e o registro modificado.
Figura 8: Alterao do cargo de engenheiro para engenheiro civil

Cadernos de Informtica

Alm da possibilidade de inserir e alterar um registro de uma tabela preciso que a ferramenta fornea recursos para a excluso de registros ou linhas da tabela. Assim como os demais procedimentos descritos anteriormente, acione o boto Edit, selecione o registro a ser excludo e ento acionando o boto direito do mouse escolha a opo Delete Row(s) (Remover registro(s)), conforme ilustra a Figura 9 9.

60

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 9: Excluso do cargo pedreiro

Finalmente para confirmar a operao acione o boto Apply Changes, localizado na parte inferior da tela de resultados, e assim o registro ser eliminado da tabela definitivamente. Desta forma, conclui-se a execuo das principais tarefas para a manuteno de informaes contidas em um banco de dados, a partir da interface fornecida pelo MySQL Query Browser. Vale ressaltar que este procedimento relativamente simples e intuitivo, j que no exige conhecimentos avanados sobre o SQL para realizar as operaes. Este um dos benefcios desta ferramenta grfica.

3.2.2. LEITURA

DE INFORMAES ARMAZENADAS EM UMA TABELA

Um banco de dados um repositrio de dados cujas informaes esto acessveis para os seus usurios. Portanto, preciso realizar a leitura das informaes armazenadas neste conjunto de tabelas, e o MySQL Query Browser fornece recursos para executar esta tarefa. A leitura de todas as informaes de uma tabela pode ser feita a partir de um duplo clique sobre o nome da tabela. Neste caso so mostrados todos os registros e colunas da tabela, no editor de resultados, conforme visto na subseo anterior. Porm, em situaes reais torna-se necessrio especificar critrios ou filtros para a seleo de dados. A filtragem de dados consiste em escolher um subconjunto de dados dentro de um conjunto maior de informaes. Por exemplo, uma pessoa pode optar por utilizar um determinado nibus dentre as vrias linhas existentes na sua cidade. Isto a filtragem de dados. A escolha de qual nibus utilizar baseada no destino ao qual se pretende chegar, ou seja, dentre as diversas linhas existentes selecionam-se apenas aquelas que levam at ao local desejado. Neste caso, o destino da viagem representa o critrio de filtragem. Alm de filtrar os registros de uma tabela pode-se ainda restringir as colunas que sero retornadas pela consulta. Por exemplo, deseja-se exibir apenas o nome dos funcionrios, em vez de todas as colunas. Neste caso, o MySQL Query Browser oferece um conjunto de ferramentas para a elaborao de consultas mais complexas. Estes componentes so ilustrados na Figura 10 10.

61

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 10: Componentes para a construo de consultas para leitura de dados

Para construir uma consulta, acione o boto SELECT e ento clique sobre as colunas que devem ser exibidas. Considerando que se deseja listar o nome de todos os cargos cadastrados, inicia-se o processo acionando o boto SELECT, e ento clicando na coluna nome da tabela cargos. Feito isto aparecer o comando SQL na parte superior da janela, ento basta apertar as teclas <ctrl> e <enter> simultaneamente e o resultado ser exibido na janela de resultados, conforme ilustra a Figura 11 11. Vale chamar ateno para o fato de que o comando select c.nome from cargos c foi gerado automaticamente pela ferramenta, possibilitando listar a penas o nome dos cargos.

Figura 11: Listagem dos nomes de todos os cargos

Caso seja necessrio informar um critrio de seleo de dados, basta acionar o boto WHERE e ento selecionar a coluna que ser utilizada como critrio de filtragem. Supondo a exibio apenas do cargo com o cdigo 1, clique em WHERE, depois na coluna cdigo, e ento digite no editor de consultas o critrio =1. Assim, o comando select c.nome from cargos c where c.codigo=1 ser gerado, digite as teclas <ctrl> e <enter> e o resultado ilustrado pela Figura 12 ser exibido.
Figura 12: Seleo do nome do cargo com o cdigo 1

62

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Assim, possvel fazer a leitura dos dados armazenados no banco de dados a partir da utilizao de recursos grficos e automticos de navegao, providos pela ferramenta apresentada neste captulo.

4. CONCLUSES
Um banco de dados tem a funo de armazenar informaes e possibilitar o acesso s mesmas. Para isto, deve-se utilizar uma linguagem de consulta para realizar esta tarefa. O objetivo deste captulo foi apresentar uma ferramenta de consulta que permita a interao com o banco de dados de forma automtica e sem que seja necessrio o conhecimento profundo desta linguagem de consulta. Alm disto, este captulo forneceu uma viso geral dos recursos para a manipulao das informaes de um banco de dados, gerando o conhecimento bsico para o entendimento dos conceitos da linguagem SQL que ser abordada com detalhe nos prximos captulos.

5. EXERCCIOS

DE FIXAO

1- Onde pode ser encontrada a ferramenta MySQL Query Browser? 2- Qual o objetivo desta ferramenta? 3- Utilizando o editor de tabelas do MySQL Query Browser, crie uma tabela para armazenar o nome, a data de nascimento, o endereo e cidade de todos os seus amigos. 4- Adicione tabela criada no exerccio anterior, a coluna para armazenar o CEP dos seus amigos. Utilize o editor de tabelas disponvel na ferramenta.

6.

REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL Query Browser. Disponvel em: <http://dev.mysql.com/doc/querybrowser/en/index.html>. Acesso em: 20 dez. 2005. MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005.

63

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 6 1. INTRODUO
No captulo 5 foram introduzidos os primeiros passos para a utilizao dos mecanismos de consultas disponveis em um sistema de banco de dados relacional. Esta interao foi realizada a partir de uma ferramenta de consulta que prov uma interface de manipulao de dados que omite a linguagem nativa de comunicao com o SGBD (Sistema Gerenciador de Banco de Dados). Na verdade, toda a navegao feita de forma visual e automtica, o que facilita a utilizao do banco de dados mesmo para usurios com pouca experincia no assunto. De um modo geral, existem situaes em que pode ser necessria a interao com o sistema de banco de dados sem a utilizao de uma ferramenta como o MySQL Query Browser, e neste caso, deve-se empregar a linguagem de consulta reconhecida pelo sistema. Existe um comit chamado ANSI, que cuida da padronizao de uma linguagem de consulta universal, que permita a comunicao com todos os SGBD que seguem estas normas. Esta linguagem conhecida como SQL (Structured Query Language), que significa em portugus, Linguagem de Consulta Estruturada. Uma lngua significa um conjunto de smbolos e expresses que representam uma forma de comunicao entre povos e naes. Da mesma forma, a linguagem SQL constituda de um conjunto de smbolos que expressam a linguagem ou dialeto de comunicao com os mais variados sistemas de bancos de dados relacionais. Todas as tarefas realizadas no captulo anterior atravs do MySQL Query Browser, podem ser traduzidas em comandos SQL possveis de serem executados em qualquer banco de dados que suporte este padro. Para facilitar o seu entendimento costuma-se dividir a linguagem SQL em duas partes. A primeira parte conhecida como DDL (Data Definition Language), isto Linguagem para Definio de Dados, contm os comandos para a criao de bancos de dados, tabelas, bem como a alterao e excluso dos mesmos. A segunda parte a DML (Data Manipulation Language), ou Linguagem para Manipulao de Dados, que permite a insero, alterao, excluso e leitura das informaes armazenadas no banco de dados. O objetivo deste captulo e dos prximos fornecer uma viso mais ampla destes comandos, permitindo o entendimento e a sua utilizao em situaes reais. Neste captulo sero discutidos os aspectos relacionados DDL, enquanto os captulos posteriores tratam da DML. Portanto, toda a definio de dados feita utilizando o DBDesigner4 e o MySQL Query Browser ser apresentada dentro do contexto da linguagem SQL.

2. INTRODUO

AOS TIPOS DE DADOS

64

Cadernos de Informtica

O processo de modelagem de um banco de dados consiste em representar situaes do mundo real atravs de um sistema. razovel imaginar que diversas informaes podem ser armazenadas em um banco de dados, tais como endereos, imagens, datas, nmeros, moedas, dentre outras. Conforme descrito anteriormente, todo atributo de uma tabela necessita ter um domnio ou conjunto de valores aceitveis. Por exemplo, ao definir a data de nascimento de uma pessoa no desejvel que o sistema permita a insero de um texto neste campo. Em uma coluna que armazena os salrios dos funcionrios devem-se ter apenas valores numricos e no datas e horas, por exemplo.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Portanto, toda definio de tabelas passa pela construo dos seus atributos com seus respectivos tipos de dados ou domnios. Como o MySQL o sistema de banco de dados adotado neste livro, a Tabela 1 apresenta um subconjunto dos possveis tipos de dados a serem empregados, bem como os tipos de informaes que podem ser armazenados nestas colunas.

TIPO DE DADO INTEGER DECIMAL(T,D)

FORMATO NMEROS T = TAMANHO D = NMERO


X.XXXXXXXXXX AAAA-MM-DD AAAA-MM-DD

DESCRIO NMEROS INTEIROS NMEROS COM PRECISO

FIXA TAIS COMO MOEDA.,

LEMBRANDO QUE O PONTO O SEPARADOR DA DE CASAS DECIMAIS PARTE FRACIONRIA OU CENTAVOS

FLOAT DATE DATETIME HH:MM:SS CHAR(T) TEXT BLOB

NMEROS REAIS COM QUANTIDADE DE CASAS DECIMAIS ELEVADA. ARMAZENA A DATA NO FORMATO ANO-MS-DIA ARMAZENA DATA E HORA EM UM NICO CAMPO NO FORMATA ANOINFORMAES TEXTUAIS COM NO MXIMO T CARACTERES INFORMAES TEXTUAIS LONGAS, TAIS COMO CURRCULOS, POEMAS, ARMAZENAM DADOS NO FORMATO BINRIO, TAIS COMO MSICAS,

MS-DIA HORA:MINUTO:SEGUNDOS

TEXTOS TEXTOS LONGOS BINRIOS


VDEOS E IMAGENS

ETC

Tabela 1: Principais tipos de dados do MySQL

Ao inserir uma linha ou registro em uma tabela deve-se informar um valor para cada coluna, respeitando o tipo de dados definido para aquele atributo. Existem situaes em que o valor a ser colocado em uma coluna no conhecido no momento da incluso dos dados na tabela. Por exemplo, se existir uma coluna que armazena a data de falecimento dos funcionrios, esta data em geral no conhecida no momento da incluso do registro. Para contornar esta situao existe um valor especial conhecido como NULL que denota o fato de que a informao no conhecida. No caso da data de falecimento, pode-se utilizar o valor NULL para os funcionrios que ainda esto vivos. possvel definir no momento da criao da tabela se as colunas aceitam ou no este valor especial. Isto feito atravs da clusula NOT NULL, que deve ser colocada nas colunas que no aceitaro o NULL, lembrando que por padro qualquer coluna aceita o NULL. importante lembrar que colunas de qualquer tipo podem receber o valor NULL.

3. DESCRIO

DOS COMANDOS PARA DEFINIO DE DADOS

O objetivo desta seo apresentar a sintaxe dos comandos para a criao de bancos de dados e tabelas, expondo todos os comandos que constituem a linguagem SQL DDL.

3.1. CRIANDO

E REMOVENDO UM BANCO DE DADOS

Um banco de dados entendido como uma coleo de tabelas. De fato uma forma de se organizar as informaes dentro do SGBD, isto , cada aplicao pode ter o seu prprio banco de dados, onde estaro apenas as tabelas que fazem parte daquele problema. A Listagem 1 fornece a sintaxe do comando para a criao do banco de dados.

65

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CREATE DATABASE nome_do_banco Listagem 1: Sintaxe do comando CREATE DATABASE Por conveno, todos os comandos que se referem linguagem SQL sero colocados em letras maisculas, enquanto os valores que sero informados pelos usurios sero exibidos em itlico. No exemplo anterior nome_do_banco dever ser substitudo pelo nome do banco que se deseja criar. Vale ressaltar que este comando pode ser submetido ao SGBD a partir de qualquer cliente SQL, como o MySQL Query Browser, ou o cliente mysql utilizado a partir de um terminal do Linux. Para selecionar um banco de dados deve-se utilizar o comando USE, conforme ilustra a Listagem 2. USE nome_do_banco Listagem 2: Selecionando um banco de dados Uma vez selecionado o banco e dados, pode-se manipular as tabelas contidas nele, ou at mesmo criar novas tabelas dentro deste banco de dados. Para remover um banco de dados e todo o seu contedo, o comando DROP DATABASE deve ser utilizado. A Listagem 3 fornece a sintaxe deste comando. DROP DATABASE nome_do_banco Listagem 3: Removendo um banco de dados e todo seu contedo O comando anterior remove o banco de dados e todas as tabelas contidas nele, portanto deve-se agir com prudncia a fim de que no sejam obtidos resultados indesejados. Este o primeiro passo para a construo de uma base de dados, lembrando que o banco de dados curso utilizado nos captulos anteriores foi criado a partir da execuo do comando exibido na Listagem 1 1. Para isto, deve-se apenas substituir o termo nome_do_banco por curso, que o nome do banco desejado.

3.2. CRIANDO

E REMOVENDO TABELAS

Para criar uma tabela preciso primeiro identificar os atributos e seus tipos de dados, bem como as restries em relao ao valor NULL, isto , se havero colunas com valores indefinidos. Alm disto, necessrio identificar a chave primria da tabela, que o conjunto de colunas que referenciam de forma nica cada registro da tabela. Finalmente, para as tabelas que participam de algum relacionamento necessrio determinar as chaves estrangeiras e as restries que se aplicam sobre elas. Neste caso, o objetivo da chave estrangeira identificar os registros que participam da relao e impor as regras de integridade que regem o relacionamento. Por exemplo, em um relacionamento entre funcionrios e equipes, deve-se garantir que no haver um membro da equipe que no esteja cadastrado na tabela de funcionrios. Ou em um relacionamento entre pais e filhos, deve-se garantir que no haver um filho sem um pai. Para a criao de uma tabela utiliza-se o comando CREATE TABLE, cuja sintaxe bsica est apresentada na Listagem 4 4.

66

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CREATE TABLE nome_da_tabela ( Coluna1 TIPO_COLUNA_1, Coluna 2 TIPO_COLUNA_1, ... Coluna N TIPO_COLUNA_N, PRIMARY KEY (colunas), [FOREIGN KEY (colunas) RESTRIES] ) [ENGINE=tipo]; Listagem 4 4: Sintaxe do comando CREATE TABLE

Como descrito na listagem anterior para criar uma tabela deve-se especificar o nome de cada coluna ou atributo que a constitui, seus tipos e a sua chave primria. Nota-se que a chave estrangeira opcional, portanto aparece entre colchetes ([FOREIGN KEY]). No MySQL possvel escolher o tipo de tabela a ser criado (ENGINE), que para efeito deste livro ser sempre utilizado o InnoDB, que possui suporte ao conceito de restries de chaves estrangeiras. A explicao dos tipos de tabelas do MySQL ficam fora do escopo deste livro. O TIPO_COLUNA dever ser substitudo por alguns dos tipos de dados suportados pelo SGBD utilizado. No caso do MySQL pode-se utilizar os tipos descritos na Tabela 1 ou qualquer outro tipo de dado suportado por ele. Nas subsees seguintes sero apresentados exemplos da utilizao deste comando.

3.2.1 ENTENDENDO

O CONCEITO DE CHAVE PRIMRIA

A Listagem 5 fornece os comandos para a criao das tabelas cargo, empresa e equipes, que seguem a sintaxe apresentada anteriormente. CREATE TABLE cargos ( codigo integer unsigned NOT NULL auto_increment, nome char(50) NOT NULL, PRIMARY KEY (codigo) ) ENGINE=InnoDB; CREATE TABLE empresa ( codigo integer unsigned NOT NULL auto_increment, nome char(60) NOT NULL, telefone char(20) NOT NULL, PRIMARY KEY (codigo) ) ENGINE=InnoDB; CREATE TABLE equipes ( codigo integer unsigned NOT NULL auto_increment, cnpj char(20) NOT NULL,

67

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

nome char(60) NOT NULL, PRIMARY KEY (codigo) ) ENGINE=InnoDB; Listagem 5: Comandos para a criao das tabelas cargo, empresa e equipes

No exemplo, todas as colunas foram criadas com a opo NOT NULL, isto , no possvel informar o valor NULL para nenhuma das colunas. Todas as tabelas tm uma coluna cdigo que a chave primria da tabela. Isto significa dizer que no h nestas tabelas dois registros com o mesmo cdigo, caso contrrio no seria possvel encontrar um determinado registro na base de dados devido ambigidade. Caso ocorra uma tentativa de inserir dois registros com o mesmo cdigo numrico, o SGBD emitir uma mensagem de chave duplicada (Duplicate key entry), e inibir a insero do mesmo. A Figura 1 ilustra a situao onde feita a tentativa de inserir o cargo de pedreiro utilizando o cdigo idntico ao do cargo de arquiteto. Percebe-se, em destaque na figura, a mensagem de erro emitida pelo SGBD ao tentar executar a insero atravs do acionamento do boto Apply Changes (Aplicar alteraes).

Figura 1: Erro na insero de dois cargos com o cdigo 2

Cadernos de Informtica

Na definio dos cdigos foi utilizado o atributo AUTO_INCREMENT, cuja funo gerar um nmero seqencial automtico. Isto significa dizer que durante a insero, se o cdigo for omitido o SGBD criar um cdigo a partir do maior cdigo cadastrado acrescido de um. Ou seja, se o maior cdigo de cargos o valor dois, a prxima insero de cargos gerar o cdigo trs, e assim sucessivamente. Isto reduz a possibilidade de erros devido a chaves duplicadas, j que o cdigo ser gerado automaticamente pelo sistema e nunca se repetir. Para utilizar o recurso do AUTO_INCREMENT, a coluna deve ser declarada como do tipo inteiro e dever ser a chave primria da tabela. Caso contrrio, o sistema no permitir a sua criao. Vale lembrar que no DBDesigner4 a criao da coluna auto-incremento feita a partir da seleo do atributo AI, presente no editor de atributos.

68

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.2.2 ENTENDENDO

O CONCEITO DE CHAVE ESTRANGEIRA

As demais tabelas do banco curso apresentam relacionamentos entre elas, obedecendo s regras de integridade definidas pelo modelo lgico da aplicao. A Listagem 6 contm os comandos para a criao das tabelas funcionrios, obras e obras_tem_equipes. CREATE TABLE funcionarios ( cpf char(20) NOT NULL, Cargos_codigo int(10) unsigned NOT NULL, nome char(60) NOT NULL, nascimento date NOT NULL, telefone char(20) NOT NULL, PRIMARY KEY (cpf), FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo) ) ENGINE=InnoDB; CREATE TABLE obras ( codigo int(10) unsigned NOT NULL auto_increment, Empresa_codigo int(10) unsigned NOT NULL, nome char(50) NOT NULL, inicio date NOT NULL, termino date NOT NULL, PRIMARY KEY (codigo), FOREIGN KEY (Empresa_codigo) REFERENCES empresa (codigo) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB; CREATE TABLE obras_tem_equipes ( Obras_codigo int(10) unsigned NOT NULL, Equipes_codigo int(10) unsigned NOT NULL, PRIMARY KEY (Obras_codigo,Equipes_codigo), FOREIGN KEY (Obras_codigo) REFERENCES obras (codigo) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Equipes_codigo) REFERENCES equipes (codigo) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB;

Percebe-se que nestas tabelas existe alm da chave primria a definio de chaves estrangeiras, j que estas tabelas participam de relacionamentos. No caso da tabela de

69

Cadernos de Informtica

Listagem 6 6: Comandos para a criao das tabelas funcionrio, obras e obras_tem_equipes

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

funcionrios, os registros desta tabela esto associados a registros existentes na tabela de cargos. Ou seja, todo funcionrio tem um cargo, onde esta relao salientada pela coluna Cargos_codigo da tabela de funcionrios. Uma chave estrangeira nada mais que a chave primria de uma tabela colocada em outra tabela para identificar a relao entre elas. Para cri-la deve-se indicar qual o conjunto de colunas que a compe, bem como a tabela e coluna que esta referencia. No exemplo tm-se FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo). Isto significa dizer que os valores armazenados na coluna Cargos_codigo da tabela de funcionrios, deve ser um valor contido na coluna cdigo da tabela de cargos. Desta forma, o SGBD assegura que nenhum funcionrio ter um cargo que no esteja cadastrado na tabela de cargos. A Figura 2 ilustra uma tentativa de insero de um funcionrio com um cargo invlido.

Figura 2: Erro na insero de funcionrio com cargo inexistente

Percebe-se em destaque na figura que o sistema emitiu uma mensagem de erro indicando que uma restrio de integridade foi violada (Cannot add or update a child row: a foreign key contraint fails, em portugus, No possvel adicionar ou alterar o registro: Falha de restrio de chave estrangeira), e desta forma o comando no executado. Existe ainda a situao onde uma alterao ou excluso de um cargo pode levar a uma inconsistncia de dados na tabela de funcionrios. No caso de uma remoo ou modificao de um cargo para o qual existam funcionrios cadastrados, deve-se garantir que o funcionrio no ficar com um cargo invlido.

Cadernos de Informtica

Para isto, foram especificadas as restries de chave estrangeira ON UPDATE CASCADE e ON DELETE RESTRICT. Isto , quando o cdigo de um cargo for alterado o SGBD propagar automaticamente a modificao para todos os funcionrios que estejam cadastrados com este cargo (CASCADE). J no caso da remoo, o sistema no permitir a excluso de cargos que apresentem funcionrios associados a ele (RESTRICT). Vale ressaltar que a opo CASCADE ou RESTRICT pode ser aplicada s clusulas UPDATE e DELETE de acordo com a restrio imposta pelo modelo.

70

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Para ilustrar a utilizao das clusulas RESTRICT e CASCADE, considere um cadastro de funcionrios e os seus dependentes ou filhos. Se o CPF do funcionrio, que a chave primria, for alterado necessrio alterar o CPF na tabela de filhos, pois do contrrio a relao entre as duas entidades se perderia, j que o filho estaria associado com um CPF de um funcionrio inexistente. Desta forma, pode-se inibir a alterao do CPF do pai durante um UPDATE, empregando a clusula RESTRICT. Ou pode-se possibilitar a alterao automtica do CPF em ambas as tabelas atravs do CASCADE. O mesmo raciocnio se aplicaria no momento da excluso de um funcionrio, isto no comando DELETE. Ao excluir um funcionrio no se pode manter os registros e seus eventuais dependentes, pois desta forma teramos registros rfos na tabela de dependentes. Portanto, pode-se inibir a remoo dos funcionrios que tenham filhos com o RESTRICT, ou forar a excluso dos filhos com a opo CASCADE. Todo este mecanismo visa a manuteno da consistncia das informaes, que j foi discutida nos captulos anteriores. Alm disto, uma nica tabela pode conter mais de uma chave estrangeira dependendo de como esto organizados os relacionamentos entre elas. Isto o que ocorre no caso da tabela obras_tem_equipes, que se relaciona com as tabelas obras e equipes, simultaneamente. Por isto apresenta duas chaves estrangeiras, referenciando a chave primria de cada tabela. O grande benefcio das chaves estrangeiras o fato de que o prprio SGBD assegura que as restries de integridade pertinentes ao modelo sero aplicadas, mesmo que o usurio do banco desconhea estas regras.

3.2.3 REMOVENDO

E ALTERANDO UMA TABELA

Finalmente, para remover uma tabela utiliza-se o comando DROP TABLE conforme ilustra a Listagem 7 7. DROP TABLE nome_da_tabela Listagem 7: Comando para a excluso de uma tabela Ao executar este comando a tabela ser apagada por completo, juntamente com os dados que por ventura estejam armazenados nela. Por isto, deve-se ter cuidado na utilizao do mesmo para evitar resultados indesejados. Outra situao comum no dia a dia da utilizao de um sistema de banco de dados a necessidade de alterar a estrutura de uma tabela j existente. Por exemplo, supondo uma alterao no modelo lgico da aplicao de forma que se tenha que armazenar a data de entrada do funcionrio na empresa, o que no era necessrio anteriormente. Para contemplar esta situao seria necessria a incluso de uma nova coluna do tipo data tabela de funcionrios, previamente criada. Em outro cenrio pode-se remover uma coluna, alterar o seu nome, ou at mesmo o tipo de dados que ela armazena. Imaginando que o nome do funcionrio tenha sido definido inicialmente com tamanho mximo de 15 caracteres ou letras, e surgiu um novo funcionrio com um nome extenso e que requer mais que 15 caracteres para ser armazenado. Neste caso, o tipo do dado dever ser alterado para satisfazer esta nova condio. O comando para modificar a estrutura de tabelas o ALTER TABLE, que pode ser utilizado para os propsitos apresentados anteriormente. A Listagem 8 fornece a sintaxe

71

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

para a utilizao do comando ALTER TABLE. ALTER ALTER ALTER ALTER TABLE TABLE TABLE TABLE

nome_da_tabela nome_da_tabela nome_da_tabela nome_da_tabela

ADD nome_da_coluna TIPO; DROP nome_da_coluna; MODIFY nome_da_coluna TIPO; CHANGE coluna_antiga coluna_nova TIPO;

Tabela 2: Comandos para incluir, remover, trocar o tipo e alterar nome e tipo de colunas de uma tabela

Com isto, finaliza-se a descrio da parte de definio de dados da linguagem SQL, tornando possvel o entendimento e aplicao destes mecanismos para a construo de bases de dados reais.

4. CONCLUSES
Neste captulo foram explorados os conceitos associados linguagem de definio de dados do SQL. Neste ponto alguns conceitos relacionados integridade referencial e restries de dados foram abordados com mais propriedade, tornando clara a sua importncia para a resoluo de problemas relacionados a aplicaes reais. Deste ponto em diante possvel empregar os recursos da linguagem SQL a fim de se criar bases de dados para suportar as aplicaes que necessitem destes repositrios de dados. Tendo como base estes conhecimentos acerca da construo do banco de dados, os captulos seguintes tratam da manipulao dos dados armazenados nestes bancos de informaes. Portanto, sero apresentados os comandos para insero, excluso, alterao e leitura de dados, dentro da sintaxe de consulta universal que o SQL.

5. EXERCCIOS

DE FIXAO

1- Qual o significado do termo SQL? 2- Para que serve o SQL? 3- O SQL dividido em duas partes, quais so elas? Descreva o objetivo de cada uma destas linguagens. 4- Crie um banco de dados chamado TESTE, e crie dentro dele as tabelas cujos comandos foram apresentados ao longo deste captulo. 5- Adicione uma coluna para armazenar a cidade natal de todos os funcionrios.

6. REFERNCIAS

BIBLIOGRFICAS

72

Cadernos de Informtica

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec. Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books. Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport. Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus. Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly. Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books. Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 7 1. INTRODUO
Os mecanismos de consultas de um sistema de banco de dados so concebidos de forma a possibilitar a criao da estrutura de dados, bem como o preenchimento e a manipulao das informaes contidas nele. No captulo 6 foi introduzida a linguagem SQL, mais especificamente a parte para a definio de dados (DDL). Assim, foram apresentados os comandos para a criao de bancos de dados, tabelas, alm dos comandos para a alterao da estrutura de uma tabela. Entretanto, existe a segunda parte da SQL que se refere manipulao de dados, conhecida como DML (Data Manipulation Language), que significa Linguagem para Manipulao de Dados. Basicamente esta linguagem permite a insero, alterao, excluso e leitura das informaes mantidas nas diversas tabelas de um banco de dados. Utilizando a ferramenta de consulta MySQL Query Browser possvel realizar estas operaes de forma a no utilizar comandos SQL explicitamente, j que o sistema constri automaticamente os comandos SQL relacionados a cada tarefa. Desta forma os detalhes da sintaxe da linguagem ficam escondidos dos usurios e facilitam o acesso aos dados, uma vez que no necessrio entender profundamente a estrutura desta linguagem. Neste captulo sero apresentados e discutidos todos os comandos que compem a DML. Para facilitar o entendimento destes comandos ser utilizado o banco de dados curso construdo anteriormente. Assim, o objetivo final popular esta base de dados e introduzir alguns relatrios bsicos empregando a linguagem SQL. No captulo seguinte sero discutidos os relatrios avanados, bem como os comandos avanados para a manipulao de dados, tais como JOINs e sub-consultas, ou seja como extrair dados em vrias tabelas. Vale ressaltar que a DML apresenta comandos para a escrita e alterao de dados, bem como para a leitura de informaes. Assim, inicialmente sero discutidos os comandos para a escrita de dados, permitindo preencher o banco de dados, e posteriormente, ser apresentado o comando para ler as informaes previamente armazenadas.

2. ENTENDENDO

OS COMANDOS

DMLLTERAO

DE DADOS

A linguagem SQL apresenta basicamente trs comandos para alterao de dados, que permitem realizar as tarefas de incluso, modificao e excluso de dados em uma tabela qualquer. Nesta seo sero ilustradas a sintaxe e exemplos de cada um destes comandos.

2.1. INCLUINDO

DADOS COM O COMANDO

INSERT

INSERT INTO nome_data_tabela (lista_de_colunas) VALUES (lista_de_valores) Listagem 1: Sintaxe do comando INSERT O comando INSERT consiste em informar o nome da tabela que se deseja inserir os dados, uma lista com o nome das colunas desta tabela para as quais sero informados os dados, e finalmente os dados para cada coluna informada anteriormente. Vale ressaltar que as colunas e os valores so separados por vrgulas, e o nmero de colunas

73

Cadernos de Informtica

Para a incluso de informaes em uma tabela a linguagem SQL define o comando INSERT, cuja sintaxe apresentada na Listagem 1 1.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

deve coincidir com o nmero de valores informados, caso contrrio o sistema emitir uma mensagem de erro e no executar a insero. A Figura 1 ilustra uma tentativa incorreta de inserir dados na tabela de cargos. O comando digitado INSERT INTO cargos (cdigo, nome) VALUES (25).
Figura 1: INSERT com maior nmero de colunas que valores

Na figura anterior percebe-se em destaque a mensagem Column count doesnt match value count at row 1, que significa Contagem de colunas no confere com a contagem de valores no registro 1. Isto , foram informadas duas colunas e apenas um valor para a coluna cdigo, por isto a mensagem de erro. Para ilustrar e facilitar o entendimento deste comando considera-se a insero de mais um cargo na tabela de cargos do sistema. Portanto, um novo cargo ser inserido com o cdigo quatro e com o nome Mestre de obras. A Figura 2 ilustra o comando INSERT INTO cargos (codigo, nome) VALUES (4, Mestre de obras), executado a partir do MySQL Query Browser.
Figura 2: Exemplo de insero do cargo Mestre de obras

74

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

No exemplo foi informado a lista de colunas (codigo e nome), e os valores 4 e Mestre de obras, representando as informaes a serem armazenadas em cada uma das colunas. importante perceber que a ordem dos valores informados segue a ordem das colunas. Isto , primeiro aparece uma coluna cdigo ento o primeiro valor informado deve ser o cdigo do cargo, e assim sucessivamente. Outro detalhe importante de ser salientado que para as colunas do tipo texto ou data, os valores devem ser informados entre aspas simples () ou aspas duplas (), caso contrrio o SGBD emitir uma mensagem de erro e no executar a tarefa. A Figura 3 ilustra a insero do nome onde foi omitida uma das aspas, o comando executado foi INSERT INTO cargos (codigo, nome) VALUES (5, 'Testes sem aspas).
Figura 3: Erro de sintaxe pela ausncia de uma das aspas no nome

A mensagem You have na error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near Testes sem aspas), que significa Voc tem um erro de sintaxe no seu SQL; verifique o manual que corresponde verso do seu servidor MySQL para a sintaxe correta prximo de Testes sem aspas), indica a ausncia das aspas para encerrar o nome. J para a insero de dados numricos no preciso utilizar as aspas, conforme ilustra o exemplo anterior. Como a base de dados est vazia e tendo em vista o preenchimento dos dados para que possam ser feitos relatrios mais adiante, a Tabela 1 fornece os comandos para a insero de empresas, funcionrios, equipes, obras, bem como a incluso de equipes em algumas das obras cadastradas, isto na tabela obras_tem_equipes. Insero de empresas INSERT INTO `empresa` VALUES (1,'Empresa de banco LTDA', '888.888.8888-0001/88', '(31)3333-4444'); INSERT INTO `empresa` VALUES (2,'Empresa do curso LTDA', '999.999.9999-0001/88', '(31)4444-55555');

75

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Insero de equipes INSERT INTO equipes (codigo, nome) VALUES (1, 'Equipe engenheiro'); INSERT INTO equipes (codigo, nome) VALUES (2, 'Equipe pedreiros'); INSERT INTO equipes (codigo, nome) VALUES (3, 'Equipe arquitetos'); Insero de funcionrios INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('111.111.111-11', 1, '1970-10-12', 'Jos de Alencar', '(31)3333-3333', 1); INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('222.222.222-22', 3, '1967-11-21', 'Paulo Goulart', '(31)4444-44444', 2); INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('333.333.333-33', 3, '1987-11-21', 'Antnio Pereira', '', 2); INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('444.444.444-44', 3, '1975-12-10', 'Carlos de Nbrega, '(31)5555-5544', 2); INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('555.555.555-55', 2, '1977-06-23', 'Maria de Souza Melo, '(31)7777-5544', 3); INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('666.666.666-66', 2, '1975-01-03', 'Antnio Csar, '(31)9999-5544', 3); INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES ('777.777.777-77', 4, '1970-05-15', 'Carlos de Castro Silva, '(31)4567-8901', 2); Insero de obras INSERT INTO `obras` VALUES (1,1,'Ponte','2005-01-01','2005-06-01'); INSERT INTO `obras` VALUES (2,1,'Prdio','1999-10-15','2002-05-10'); INSERT INTO `obras` VALUES (3,1,'Praa','2002-05-10','0000-00-00'); Insero de equipes em obras INSERT INTO `obras_tem_equipes` VALUES (1,1); INSERT INTO `obras_tem_equipes` VALUES (1,2); INSERT INTO `obras_tem_equipes` VALUES (1,3); INSERT INTO `obras_tem_equipes` VALUES (2,1); INSERT INTO `obras_tem_equipes` VALUES (2,2); INSERT INTO `obras_tem_equipes` VALUES (3,3);
Tabela 1: Insero dos dados iniciais do banco de dados curso

Cadernos de Informtica

Os comandos apresentados anteriormente podem ser executados via MySQL Query Browser de forma a construir a base de dados do curso. Um detalhe importante a ser lembrado o fato de que a data deve ser informada de forma invertida, respeitando a regra ano-

76

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

ms-dia, conforme ocorre na data de nascimento dos funcionrios. Esta a sintaxe bsica do comando INSERT, existem variaes aceitveis deste comando, mas estas ficam fora do escopo deste livro, visto que este tem como objetivo apenas fornecer uma viso geral acerca da linguagem SQL.

2.2. ALTERANDO

DADOS COM O COMANDO

UPDATE

Existem situaes em que h a necessidade de modificar uma informao armazenada na tabela, por exemplo, considera-se a alterao de telefone de um determinado funcionrio, ou ainda a mudana na data de trmino de uma determinada obra. Neste caso, a tarefa de alterar o dado de uma coluna realizada pelo comando UPDATE, cuja sintaxe bsica apresentada na Listagem 2 2. UPDATE nome_data_tabela SET coluna=valor [, coluna=valor] [WHERE critrio_de_seleo] Listagem 2: Sintaxe do comando UPDATE O primeiro passo para a execuo do comando UPDATE definir a tabela que ser modificada. Feito isto, informam-se as colunas e os novos valores que sero atribudos a elas, especificando-as dentro da clusula SET. Percebe-se que podem ser alteradas mais de uma coluna separando-as por vrgulas, sendo que este recurso opcional, por isto est entre colchetes ([]). A atualizao de dados pode ser restrita a um conjunto de registros ou se aplicar a todas as linhas da tabela. Neste caso, existe a clusula opcional WHERE (exibida entre colchetes []), que permite informar o critrio de seleo de linhas, de forma a identificar apenas os registros que sero modificados pelo comando. Caso esta clusula seja omitida, todos os registros da tabela sero alterados para o novo valor. A Figura 4 fornece o comando para alterar o telefone do funcionrio cujo CPF igual a 111.111.111-11, isto , UPDATE funcionarios SET telefone = (31) 1234-5678 WHERE cpf = 111.111.111-11.
Figura 4: Atualizando o telefone do funcionrio com o CPF 111.111.111-11

No exemplo anterior se o WHERE for omitido, o telefone de todos os funcionrios passa a ser (31)1234-5678. Portanto, deve-se ter cuidado ao executar este comando para

77

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

que no seja obtido um resultado indesejado.

2.3. EXCLUINDO

DADOS COM O COMANDO

DELETE

Finalmente, os dados armazenados em uma base de dados podem ser excludos por vrias razes. Por exemplo, a sada de um funcionrio da empresa deve eliminar o registro deste indivduo da tabela de funcionrios. Outra situao seria a sada de uma equipe da execuo de uma determinada obra, isto , o registro que relata este fato deve ser eliminado da tabela Obras_tem_equipes. Para a excluso de linhas de uma tabela utiliza-se o comando DELETE, cuja sintaxe apresentada na Listagem 3 3. DELETE FROM nome_data_tabela [WHERE critrio_de_seleo] Listagem 3: Sintaxe do comando DELETE Assim, para a execuo do comando DELETE deve-se informar o nome da tabela cujos registros sero eliminados, e opcionalmente o critrio de seleo de linhas de forma a excluir apenas aquelas que atendam a um determinado requisito. Vale ressaltar que na omisso do WHERE sero retirados todos os registros da tabela. A Figura 5 ilustra a remoo da empresa com o cdigo igual a dois, cujo comando DELETE FROM empresa WHERE codigo = 2.

Figura 5: Excluso da empresa com o cdigo igual a 2

Assim como o UPDATE, no comando DELETE a clusula WHERE opcional por isto devese agir com prudncia para que no sejam removidos ou alterados dados que no deveriam ser modificados.

Cadernos de Informtica

3. INTRODUO

AOS COMANDOS PARA LEITURA DE DADOS

A tarefa de acessar o contedo armazenado em uma base de dados de extrema importncia, j que sem o mesmo seria impossvel utilizar estas informaes como ferramenta de anlise e controle do sistema que ela representa. O objetivo desta seo fornecer uma introduo ao comando SELECT que possibilita a leitura dos dados existentes nas

78

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

tabelas do banco de dados. Aqui sero abordados apenas os relatrios simples, ou seja, que acessam apenas uma tabela, bem como a utilizao de funes, que sero explicadas e exemplificadas no contexto em que forem empregadas.

3.1. O

COMANDO

SELECT

BSICO

O comando SELECT a estrutura da linguagem SQL que permite ler as informaes de uma tabela, ou de um conjunto de tabelas que se relacionam. A sintaxe bsica deste comando apresentada na Listagem 4 4, e a explicao de cada clusula que o constitui sero apresentados no decorrer desta seo. SELECT lista_de_colunas FROM nome_da_tabela WHERE critrio_de_seleo GROUP BY lista_de_colunas HAVING critrio_de_seleo_no_resultado ORDER BY lista_de_colunas
Listagem 4: Sintaxe do comando SELECT

Na clusula SELECT sero colocadas as colunas que sero exibidas pelo relatrio, por exemplo, se for necessrio mostrar apenas as colunas nome e CPF dos clientes, apenas estas colunas devero ser escritas no SELECT. Caso queira exibir todas as colunas podese escrever o nome de todas as colunas ou, para simplificar a digitao, utilizar o caractere *, que significa todas as colunas. Na clusula FROM ser especificada a tabela de onde os dados sero extrados. Neste captulo sero abordados apenas os relatrios com apenas uma tabela, mas podem aparecer vrias tabelas nesta clusula, permitindo ler dados de tabelas que se relacionam. Estes recursos sero explorados no prximo captulo. Para ilustrar estes mecanismos, considera-se o relatrio que fornece o nome e o CPF de todos os funcionrios cadastrados. A consulta que resolve esta pergunta est apresentada na Figura 6 6, representada pelo comando SELECT nome, cpf FROM funcionarios.

Figura 6: Exibir o nome e o CPF de todos os funcionrios

79

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Para ilustrar a utilizao do *, seja exibir todos os atributos de todas as equipes cadastradas no sistema. A consulta SELECT * FROM equipes fornece este resultado e ilustrada pela Figura 7 7.

Figura 7: Exibir todos os atributos de todas as equipes

3.2. SELECIONANDO

REGISTROS COM O

WHERE

Como ocorre nos comandos UPDATE e DELETE possvel listar os dados de uma tabela de acordo com um critrio de filtragem qualquer. De um modo geral, estes critrios so definidos em funo dos atributos das tabelas utilizadas na clusula FROM. Para ilustrar o fato, considera-se a listagem do nome de todos os funcionrios cujo cdigo do cargo seja igual a trs, isto , listar todos os funcionrios que atuam como pedreiros. A Figura 8 ilustra o comando SELECT * FROM funcionrios WHERE Cargos_codigo = 3, que soluciona este problema.

Figura 8: Listar o nome dos funcionrios que atuam como pedreiro

Cadernos de Informtica

Podem existir ainda critrios mais complexos, como exibir apenas os funcionrios que atuam como pedreiro e que tenham nascido depois do ano de 1970. Neste caso, haver uma combinao de critrios para selecionar os registros desejados. A Figura 9 fornece

80

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

a consulta SELECT nome, Cargos_codigo, nascimento FROM funcionarios WHERE Cargos_codigo = 3 AND nascimento >= 1970-01-01, que responde a esta pergunta.

Figura 9: Listar o nome dos funcionrios que atuam como pedreiro e que nasceram depois de 1970

Neste exemplo, a clusula AND foi utilizada para separar os vrios critrios de seleo de dados, lembrando que no h limite em relao quantidade de critrios de filtragem de dados. Existem situaes onde existem vrios critrios e caso um deles se verifique j seria suficiente para satisfazer a busca. Por exemplo, deseja-se listar todos os funcionrios que sejam pedreiros ou que se chamem Jose de Alencar. A Figura 10 ilustra a consulta que resolve este problema, neste caso, os registros que atendam a algum dos critrios apareceram no resultado. Se fosse utilizado o AND, apenas os registros que satisfizessem a ambos os critrios seriam listados. O comando ilustrado SELECT * FROM funcionrios WHERE Cargos_codigo = 3 OR nome = Jos de Alencar.

Figura 10: Listar o nome dos funcionrios que atuam como pedreiro ou que se chamam Jos de Alencar

Para colunas textuais possvel realizar consultas para comparar apenas uma parte do texto. Por exemplo, deseja-se listar o nome de todos os funcionrios que comecem com Carlos. A consulta SELECT nome FROM funcionarios WHERE nome LIKE Carlos% fornece este resultado e apresentada na Figura 11 11.

81

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 11: Listar o nome dos funcionrios com nome comeando com Carlos

3.3. AGRUPANDO

DADOS COM O

GROUP BY

E SELECIONANDO COM O

HAVING

Existem relatrios que tm como objetivo calcular a soma ou totalizao de dados dentro de um critrio especfico. Para ilustrar esta situao deseja-se saber a quantidade de equipes que atuaram em cada uma das obras da empresa. Para isto, deve-se acessar a tabela de obras_tem_equipes e contar, para cada obra, quantos registros existem apara cada equipe. A Figura 12 contm a soluo para esta pergunta, que dada pelo comando SELECT.obras_codigo, COUNT(*) FROM obras_tem_equipes GROUP BY obras_codigo.

Figura 12: Listar as obras e o total de equipes envolvidas

Cadernos de Informtica

No exemplo, utiliza-se a funo COUNT(*) que realiza a contagem dos registros encontrados dentro do critrio de agrupamento GROUP BY. Ou seja, para cada obra distinta contam-se as ocorrncias distintas de equipes. O mesmo raciocnio aplicado para a soma dos valores de uma coluna, feito com a funo SUM(nome_da_coluna). Alm do agrupamento de dados, pode ser necessrio estabelecer critrios sobre o resultado calculado, neste caso, o filtro no aparecer no WHERE, mas sim na clusula HAVING.

82

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Isto , sempre que houver o GROUP BY e for desejvel a pesquisa sobre o resultado gerado, utiliza-se o HAVING e no o WHERE como nos exemplos anteriores. Para ilustrar a utilizao do HAVING a Figura 13 fornece a consulta que exibe o cdigo das obras que tiveram mais que uma equipe envolvida em sua elaborao. O comando ilustrado SELECT obras_codigo, COUNT(*) FROM obras_tem_equipes GROUP BY obras_codigo HAVING COUNT(*) > 1.

Figura 13: Listar as obras que tenham mais que uma equipe envolvida

3.4. ORDENANDO

O RESULTADO COM O

ORDER BY

Finalmente, a ltima clusula do comando SELECT se refere ordenao dos dados da consulta. Pode-se exibir a listagem de acordo com o critrio de ordenao que for mais conveniente para o relatrio. No caso da listagem de funcionrios pode-se orden-la por nome, data de nascimento, ou at mesmo pelo telefone. Esta tarefa feita por meio do ORDER BY, que faz referncia a uma coluna ou um conjunto de colunas separadas por vrgulas, caso tenha mais de um critrio. A Figura 14 ilustra uma lista de todos os cargos ordenando-os pelo nome. O comando para este propsito o SELECT * FROM cargos ORDER BY nome.
Figura 14: Listar os cargos ordenados por nome

83

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

4. CONCLUSES
Este captulo encerra a apresentao de toda a linguagem SQL, tanto a definio quanto a manipulao de dados. Neste contexto foram discutidos os comandos para escrita de dados, bem como as tcnicas para a criao de relatrios bsicos utilizando-se a linguagem SQL. A estrutura do SELECT apresentada neste captulo ser utilizada em situaes mais sofisticadas nos captulos seguintes, mas todas as clusulas que o define foram estudadas neste captulo. Vale ressaltar que o objetivo deste curso formar uma viso geral do que a linguagem SQL e como esta pode ser utilizada na prtica. Portanto, existem variaes ou incrementos para estes comandos que foram omitidos para simplificar a discusso. Mas, mesmo assim, estas sintaxes bsicas so suficientes para utilizar um banco de dados em um sistema qualquer.

5. EXERCCIOS

DE FIXAO

1- Listar o nome de todas as equipes que comeam com a letra p. 2- Listar o nome de todos os funcionrios que trabalham como engenheiro. 3- Listar o total de registros da tabela de obras. 4- Insira voc como um funcionrio da empresa, no cargo de arquiteto. 5- Altere o seu cargo para engenheiro. 6- Remova da tabela todos os funcionrios que comeam com a letra C.

6.

REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec. Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books. Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport. Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus. Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly. Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books. Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.

84

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 8 1. INTRODUO
O captulo 7 abordou a linguagem de manipulao de dados do SQL, descrevendo os principais comandos para escrita e leitura no banco de dados. Mais especificamente o comando SELECT bsico foi apresentado, sendo discutidas as principais clusulas que o constitui. O objetivo inicial era introduzir os recursos bsicos para a leitura de informaes, extraindo dados de uma nica tabela do sistema. Para isto foram exibidas consultas simples, onde foi possvel compreender as tcnicas para a construo de filtros de dados atravs do WHERE, definio de agrupamentos por meio do GROUP BY, e finalmente, ordenar o resultado da pesquisa atravs do ORDER BY. Desta forma foram apresentados todos os aspectos da linguagem SQL, possibilitando o entendimento e a utilizao do comando SELECT para a construo de relatrios simplificados. Porm, em sistemas reais comum a existncia de relatrios mais complexos, j que h um conjunto grande de tabelas e relacionamentos entre elas. Portanto, a extrao de dados a partir do acesso a uma nica tabela bastante limitada em alguns casos, e no capaz de prover todas as informaes necessrias para os usurios do sistema. Tomando como base o banco de dados sobre a empresa de construo civil, seria bastante razovel que um usurio quisesse listar o nome de todos os funcionrios e equipes s quais estes pertencem. Ou ainda, exibir o nome das equipes que participaram do desenvolvimento de uma obra especfica. E assim, poderiam ser criados os mais diversos relatrios baseando-se nas tabelas que armazenam informaes relacionadas. A linguagem SQL prov mecanismos para resolver este tipo de questo atravs da especificao de uma lista de tabelas na clusula FROM do SELECT. Este recurso permite extrair informaes de mais de uma tabela, desde que haja um relacionamento entre elas, isto , caso haja uma coluna em comum entre estas entidades. Este recurso conhecido como JOIN (juno), e ser descrito com detalhes no decorrer deste captulo. Alm dos agrupamentos de tabelas, a linguagem SQL fornece uma abordagem conhecido como sub-consulta, isto , a estrutura do comando SELECT pode ser utilizada dentro das clusulas SELECT, FROM e WHERE de um outro comando SELECT. Este um recurso poderoso e tambm ser estudado com detalhes neste captulo. Desta forma torna-se possvel elaborar consultas sofisticadas para resolver questes mais complexas em sistemas de bancos de dados. Alm disto, ser introduzido o conceito de funes, que na verdade so artifcios para realizar clculos ou transformaes de dados. Um exemplo de funo o DATE_FORMAT que utilizado para formatar uma data de acordo com o padro de data conhecido, e no no estilo ano-ms-dia, utilizado pelo MySQL.

2. TCNICAS

PARA EXTRAO DE DADOS EM MLTIPLAS TABELAS

- JOIN

Em um sistema de banco de dados relacional as informaes so armazenadas em diversas tabelas, e na maioria dos casos, o contedo destas tabelas compe um descritivo complexo a respeito da aplicao que ele representa. Na modelagem entidade-relacionamento define-se os elementos que constituem o sistema, bem como a forma como eles se relacionam. Estes relacionamentos so identificados pelas chaves primrias e

85

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

estrangeiras, que so na verdade os atributos comuns entre duas tabelas. Para ilustrar esta situao, se considerada as tabelas cargos e funcionrios do sistema de construo civil, existe um relacionamento entre estas entidades, j que cada funcionrio da empresa possui um cargo. Esta interao entre os dois objetos descrita pelo atributo cdigo, que chave primria da tabela cargos, e que inserido na tabela de funcionrios, identificando o cargo do mesmo (coluna Cargos_codigo). Partindo do princpio de que h algo em comum entre tabelas relacionadas torna-se possvel a elaborao de uma estrutura de pesquisa que faa a combinao destes registros e traga o resultado desejado. Este mecanismo conhecido como JOIN, e para ilustrar o seu funcionamento, seja exibir o nome do cargo de todos os funcionrios da empresa. Basicamente, o que precisa ser feito informar as tabelas cargos e funcionrios na clusula FROM do comando SELECT. A Figura 1 ilustra a primeira tentativa de resolver o problema da listagem dos cargos de funcionrios, atravs da submisso do comando SELECT nome FROM funcionrios, cargos.
Figura 1: Utilizando o JOIN, problema de ambigidade de nomes de colunas.

86

Cadernos de Informtica

Na figura percebe-se que no FROM aparecem as duas tabelas separadas por vrgulas, e que conforme o destaque, o sistema emitiu uma mensagem de erro Column nome in field list is ambiguous, que quer dizer Coluna nome na lista de campos ambgua. Isto , a coluna nome ambgua e a consulta no pode ser processada. Este um problema tpico de consultas que fazem acesso a mais de uma tabela. Como as tabelas cargos e funcionrios possuem uma coluna chamada nome, o sistema no sabe qual delas listar, ou seja, o nome do funcionrio ou o nome do cargo. Neste caso, preciso prefixar o nome da coluna com o nome da tabela, resolvendo assim a ambigidade. Portanto, todas as vezes que for necessrio relacionar duas tabelas que possuam nomes iguais, deve-se utilizar a sintaxe nome_da_tabela.nome_da_coluna, conforme ilustra a Figura 2 2, com o comando SELECT funcionrios.nome, cargos.nome FROM funcionrios, cargos.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 2: Resolvendo a ambigidade de nomes de colunas

2.1. O

PRODUTO CARTESIANO, UM ERRO COMUM NA ELABORAO DO

JOIN

A Figura 2 ilustra uma situao comum que ocorre com iniciantes na linguagem SQL, que conhecido como produto cartesiano. Percebe-se que o resultado gerado associa todos os cargos com todos os funcionrios cadastrados, ou seja, uma combinao de todos os registros das tabelas envolvidas no JOIN. No caso o conjunto resultante contm 28 registros, que a combinao dos quatro cargos com os sete funcionrios existentes na base de dados. Vale ressaltar que este relatrio no possui significado, j que associa um nico funcionrio com vrios cargos. Desta forma, impossvel saber qual o cargo real do mesmo. possvel perceber esta situao se observado o funcionrio Jos de Alencar, exibido como engenheiro, arquiteto, pedreiro e mestre de obras, o que est incorreto ou inconsistente. Alm de no fornecer um resultado vlido, esta consulta apresenta um alto custo para ser executada, pois exige que o SGBD calcule a combinao dos registros existentes em todas as tabelas. Para resolver esta situao preciso informar no comando SQL, qual o critrio comum para as tabelas, de forma a evitar o produto cartesiano. No exemplo, as colunas cdigo da tabela cargos e Cargos_codigo da tabela de funcionrios constituem o elo entre estas tabelas. Assim, deve-se especificar na clusula WHERE, que apenas os registros que apresentem valores iguais nestas colunas devem ser exibidos. A Figura 3 ilustra o comando que lista corretamente o nome dos funcionrios e os seus cargos, que o SELECT funcionrios.nome, cargos.nome FROM funcionrios, cargos WHERE codigo = cargos_codigo.

87

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 3: Listando o nome e os cargos dos funcionrios

Neste caso, torna-se possvel extrair as informaes contidas em tabelas que se relacionam. Vale destacar que podem existir relacionamentos entre mais de duas tabelas, como o caso das tabelas cargos, funcionrios e equipes. Portanto, o raciocnio utilizado para duas tabelas pode ser estendido para qualquer nmero de tabelas, desde que os critrios de ligao entre elas sejam estabelecidos na clusula WHERE. A Figura 4 exemplifica um relatrio onde deve ser mostrado o nome do funcionrio, o seu cargo e o nome da equipe ao qual ele pertence. Neste caso, trs tabelas devero ser relacionadas e o critrio de juno das mesmas so as colunas cdigo (tabela cargos), Cargos_codigo e Equipes_codigo da tabela de funcionrios e cdigo da tabela de equipes. O comando ilustrado o SELECT funcionrios.nome, cargos.nome, equipes.nome FROM funcionrios, cargos, equipes WHERE cargos.codigo = cargos_codigo AND equipes.codigo = Codigo_equipe.

Figura 4: Listando o nome e os cargos dos funcionrios e as suas equipes

Cadernos de Informtica

Desta forma, possvel construir relatrios complexos atravs da unio de diversas tabelas em um nico comando SELECT.

88

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

2.2. INNER JOIN,

UMA SINTAXE ALTERNATIVA PARA A JUNO DE TABELAS

A juno de tabelas apresentada na seo anterior permite a soluo de problemas complexos, mas trs um problema em relao organizao do comando. Neste caso os critrios de relacionamento das tabelas e os filtros de dados so colocados juntos na clusula WHERE, o que dificulta sobremaneira a leitura e o entendimento do comando. Para uma abordagem mais didtica e mais organizada para a criao de junes de tabelas, existe a sintaxe do INNER JOIN, conforme ilustra a Figura 5 5. Esta figura exibe um relatrio com todos os funcionrios que nasceram depois de 1970, exibindo tambm os seus cargos e equipes. O comando SELECT funcionrios.nome, cargos.nome FROM funcionrios INNER JOIN cargos ON (cargos.cdigo = cargos_codigo) INNER JOIN equipes ON (equipes.codigo = Cdigo_equipe) WHERE nascimento >= 1970-01-01.

Figura 5: Relatrio de funcionrios, cargos e equipes utilizando o INNER JOIN

No comando fcil identificar como as tabelas se relacionam, j que o critrio de juno especificado imediatamente aps as tabelas utilizando-se a clusula ON. Neste caso apenas os filtros sero colocados na clusula WHERE isolando os critrios de relacionamento entre tabelas. Vale lembrar que o resultado obtido com a vrgula o mesmo do INNER JOIN, utiliza-se o ltimo apenas por questes de estilo e para facilitar a manuteno da consulta gerada.

3. ENTENDENDO

OS MECANISMOS DE SUB-CONSULTAS

Neste caso, o comando SELECT ilustrado at aqui poder compor a clusula SELECT, FROM ou WHERE de um outro comando SELECT, criando assim uma hierarquia de comandos que permite resolver problemas bastante complexos, e que em algumas situaes

89

Cadernos de Informtica

Os recursos da linguagem SQL para a juno de tabelas permitem elaborar relatrios envolvendo diversas tabelas, como ilustra a seo anterior. Contudo, os JOINs no so a nica possibilidade para a extrao de dados em vrias tabelas. A linguagem SQL fornece uma estrutura conhecida como sub-consulta ou sub-selects onde possvel utilizar um comando SELECT dentro de outro comando SELECT.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

no so passveis de serem resolvidos via JOIN. Nesta seo sero apresentadas trs formas de sub-consultas, bem como o comando UNION que permitem agrupar o resultado de dois comandos SELECT de forma a compor um nico conjunto resultante.

3.1. UTILIZANDO

UM

SELECT

DENTRO DA CLUSULA

SELECT

Para ilustrar o uso de uma consulta dentro da clusula SELECT, considera-se o seguinte relatrio: listar o nome dos funcionrios e as suas datas de nascimento. A Figura 6 ilustra a soluo deste problema utilizando-se uma sub-consulta. O comando ilustrado o SELECT nome, (SELECT nascimento FROM funcionrios f WHERE f.cpf = f1.cpf) FROM funcionarios f1.

Figura 6: Exibindo o nome e a data de nascimento dos funcionrios

bvio que a soluo trivial seria listar diretamente a coluna nascimento, mas o objetivo aqui apresentar o funcionamento de uma consulta SELECT colocada dentro da SELECT de outra consulta.

3.2. UTILIZANDO

UM

SELECT

DENTRO DA CLUSULA

FROM

90

Cadernos de Informtica

Uma consulta pode aparecer dentro da clusula FROM de outra consulta e, neste caso, a consulta colocada dentro da clusula FROM ser resolvida e seu resultado ser entendido pela consulta externa como se fosse uma nova tabela. Esta situao pode ser ilustrada pela consulta que lista o nome de todos os funcionrios que compem a equipe de pedreiros. A Figura 7 ilustra esta consulta atravs do comando SELECT * FROM (SELECT funcionrios.nome FROM equipes INNER JOIN funcionrios ON (cdigo = Cdigo_equipe WHERE equipes.nome = Equipe pedreiros) t.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 7: Listar o nome de todos os funcionrios da equipe de pedreiros

Vale observar que esta consulta poderia ser resolvida facilmente atravs do JOIN, mas esta abordagem pode ser mais atraente ou intuitiva para aqueles que esto iniciando o uso da linguagem SQL.

3.3. UTILIZANDO

UM

SELECT

DENTRO DA CLUSULA

WHERE

As consultas dentro da clusula WHERE so de grande utilidade especialmente para extrair informaes em relacionamentos do tipo muitos para muitos, pois facilita comparar uma determinada coluna com uma lista de valores retornados por uma outra SELECT. Um exemplo prtico da utilizao deste tipo de consulta descrito pela Figura 8 , onde sero exibidos os nomes de todas as equipes que possuem funcionrios associados a elas, atravs do comando SELECT equipes.nome FROM equipes WHERE EXISTS (SELECT * FROM funcionrios WHERE cdigo=cdigo_equipe).

Figura 8: Nome das equipes contendo funcionrios

91

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

No exemplo anterior foi utilizada a estrutura EXISTS para verificar se existem registros na consulta externa associados ao resultado da consulta interna. Vale ressaltar que qualquer tipo de operador pode ser utilizado neste caso, como na lista dos nomes das equipes que participaram da obra denominada Ponte. Este relatrio apresentado na Figura 9 9, definido pelo comando SELECT nome FROM equipes WHERE codigo IN (SELECT equipes_codigo FROM obras_tem_equipes WHERE obras_codigo IN (SELECT codigo FROM obras WHERE nome = Ponte)).

Figura 9: Nome das equipes envolvidas na obra Ponte

No exemplo possvel perceber que existem mais de uma consulta dentro da outra, e representa o fato de que no h limite para a utilizao de sub-consultas. Isto , podem existir tantas sub-selects quantas forem necessrias para solucionar a questo, da mesma forma que ocorre no JOIN. De um modo geral, emprega-se as sub-consultas para a soluo de problemas que no sejam solucionveis via JOIN, ou que a soluo atravs da juno de tabelas seja muito complexa e de difcil construo. No entanto, a maioria dos casos podem ser resolvidos com o JOIN, e o custo para a execuo destes , em geral, menor que o das sub-consultas. Portanto, ambos podem ser utilizados, e a opo por uma ou outra abordagem fica a critrio do programador. De um modo geral a deciso ser tomada de forma arbitrria, levando em conta a capacidade e experincia do programador para utilizar estes mecanismos de consultas.

3.4. AGRUPANDO

RESULTADOS COM O COMANDO

UNION

Cadernos de Informtica

Por ltimo, existem situaes em que se deseja agrupar o resultado de duas consultas formando um nico conjunto resultante. O comando que possibilita esta tarefa o UNION e a sua utilizao ilustrada pela Figura 10 10, cujo comando o (SELECT nome FROM funcionrios WHERE Cargos_codigo = (SELECT codigo FROM cargos WHERE nome = Pedreiro)) UNION (SELECT nome FORM funcionarios WHERE Cargos_codigo = (SELECT cdigo FROM cargos WHERE nome=Engenherio)).

92

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 10: Nome dos funcionrios pedreiros e engenheiros

A consulta do exemplo anterior lista o nome dos funcionrios com os cargos de pedreiro e engenheiro, visando apresentar esta estrutura do SQL. importante ressaltar que a melhor soluo para este relatrio utilizar uma nica consulta com o filtro pelos cargos desejados. O objetivo desta consulta apenas introduzir o comando UNION.

4. UTILIZANDO

FUNES PARA TRANSFORMAO DE DADOS

A maioria dos SGBD fornecem um recurso importante para a elaborao das consultas SQL que so as funes. Uma funo utilizada na prtica para realizar transformaes nos dados. Pegando como exemplo a data do MySQL, esta armazenada no formato aaaa-mm-dd, ou seja ano, ms e dia. fcil perceber que este no um formato de data com o qual as pessoas estejam habituadas. Portanto seria de extrema relevncia que as datas armazenadas pelo MySQL fossem exibidas em relatrios no formato dd/ mm/aaaa, ou seja, dia, ms e ano separados por barras. Para resolver este tipo de problema existem as funes, que so projetadas para os mais variados propsitos, tais como formatao de datas, manipulao de textos, clculos matemticos, dentre outras. Uma funo definida por trs elementos que so o nome, os argumentos e o valor de retorno, que constituem a sua assinatura. A Listagem 1 apresenta a sintaxe de uma funo. valor_de_retorno nome_da_funo(lista_de_argumentos) Listagem 1: Sintaxe de uma funo Uma funo pode ter um ou vrios argumentos, bem como pode no ter argumentos, como o caso da funo NOW, que retorna a data e hora atual do sistema, conforme ilustra a Figura 11 11, com o comando SELECT NOW().

93

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 11: Retornando a data e hora do sistema com a funo NOW

Uma funo retorna um valor como ocorre na funo NOW, ou podem existir situaes em que nenhum valor retornado, como ocorre na funo LOAD_FILE, que carrega um arquivo para uma coluna da tabela. Existe um vasto conjunto de funes no MySQL, mas fica fora do escopo deste livro abordar todas elas. Portanto, estas podem ser encontradas no manual do MySQL Query Browser. Apenas para ilustrar a questo da data, a Figura 12 fornece um relatrio com o nome e a data de nascimento de todos os funcionrios, exibindo a data no formato dd/mm/aaaa. A consulta para isto SELECT nome, DATE_FORMAT(nascimento, %d/ %m/%Y) FROM funcionrios.

Figura 12: Utilizando a funo DATE_FORMAT para formatar uma data

Cadernos de Informtica

A funo DATE_FORMAT recebe dois argumentos que so a data a ser transformada e o padro de formatao. Neste caso, existem vrios caracteres de formatao, tais como o %d que fornece o dia com dois dgitos, o %m para construir o ms com dois dgitos e, finalmente o %Y que retorna o ano com quatro dgitos. Outros caracteres de formatao e outras funes podem ser vistas no manual do MySQL Query Browser, encontrado no canto inferior direito desta ferramenta.

94

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

5.

CONCLUSES
Este captulo ilustra a leitura de dados atravs da linguagem SQL, e fornece uma viso geral de como construir relatrios avanados atravs desta linguagem. importante ressaltar que o objetivo deste livro introduzir os recursos desta linguagem, apresentando exemplos simples de utilizao da mesma. Portanto, possvel com os conhecimentos vistos ao longo dos ltimos captulos, entender e elaborar relatrios em um banco de dados qualquer. Alm disto, este captulo forneceu a estrutura bsica do SQL, possibilitando a sua utilizao em situaes reais. Nos prximos captulos sero abordados os aspectos da administrao do banco de dados, discutindo as principais tarefas que devem ser realizadas pelo administrador do sistema. Alm disto, sero abordados os recursos avanados de um sistema de banco de dados, tais como replicao de dados e controle de transao.

6.

EXERCCIOS

DE FIXAO

1- Escreva um relatrio (SELECT) para listar o nome, a data de nascimento e nome da equipe para todos os funcionrios que nasceram no ano de 1970? 2- Escreva um relatrio (SELECT) para listar o nome de todas as equipes e o total de funcionrios em cada uma delas. 3- Crie um relatrio (SELECT) com o nome de todas as obras e o total de equipes que participaram de sua execuo.

7.

REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. MySQL AB: MySQL Query Browser. Disponvel em: <http://dev.mysql.com/doc/querybrowser/en/index.html>. Acesso em: 20 dez. 2005. Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec. Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books. Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport. Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus. Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly. Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books. Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.

95

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 9 1. INTRODUO
Neste captulo sero estudados os aspectos relacionados administrao de um Sistema Gerenciador de Banco de Dados (SGBD), mais especificamente o MySQL, que a ferramenta utilizada neste livro para ilustrar uma aplicao real de um SGBD. Um SGBD constitui um servio ou engrenagem responsvel por armazenar e prover acesso s informaes atravs da linguagem SQL. Para isto, estes sistemas mantm as suas tabelas e bancos de dados dentro do sistema de arquivos fornecido pelo Sistema Operacional (SO). Este por sua vez o responsvel por controlar todos os recursos da mquina, bem como a execuo de todos os programas instalados nela. Portanto, o SGBD cria um conjunto de arquivos e diretrios a fim de armazenar a sua estrutura de dados. Com isto, preciso configurar o SGBD indicando os parmetros para utilizao de discos, ou seja, quais arquivos e diretrios sero criados e onde sero colocados. Alm disto, preciso definir a quantidade de memria que o sistema utilizar, bem como definir as polticas de acessos aos dados e os usurios que tero acesso a estas informaes. A administrao do banco de dados realizada pelo Administrador de Banco de Dados, conhecido como DBA (DataBase Administrator). Esta a pessoa responsvel pela configurao do SGBD e pela manuteno dos dados, isto , criao, alterao e excluso de bancos de dados e tabelas de acordo com a necessidade de modificaes do sistema. Alm disto, o DBA deve criar os usurios para acessar os dados, bem como definir e garantir o respeito s regras de acesso aos mesmos. Por exemplo, pode-se limitar o acesso de um determinado usurio a ler somente uma tabela do sistema, enquanto outro usurio tem acesso a todas as tabelas. Isto ocorreria, por exemplo, em um sistema de uma empresa onde nem todos os usurios devem ter acesso aos dados sobre faturamento e folha de pagamento. Portanto esta restrio deve ser respeitada via controle de acessos do SGBD. Por ltimo, mas no menos importante vem a questo das cpias de segurana dos dados, conhecidas como backups. Estas cpias tm o objetivo de criar uma imagem dos dados que possa ser utilizada caso haja alguma perda de informaes do sistema. Estas perdas podem ser acarretadas por falhas em equipamentos, tais como discos ou por usurios que realizam operaes indevidas. Por exemplo, apagam por engano toda a base de dados de um sistema ou at mesmo uma nica tabela. Nestes casos, o DBA deve utilizar esta cpia de segurana para restaurar os dados originais. O objetivo deste captulo apresentar tcnicas para a execuo de tarefas administrativas do banco de dados, tais como as apresentadas anteriormente. Isto , devem-se entender os papis do DBA, e compreender as operaes delegadas a ele. Para realizar a administrao do MySQL, ser utilizada uma ferramenta conhecida como MySQL Administrator, que fornece uma interface amigvel para a criao de usurios, configurao de parmetros do servidor, realizao de cpias de segurana e restaurao das mesmas, e finalmente, o monitoramento da execuo do servidor. Para isto, ser dada inicialmente uma viso geral desta ferramenta, e posteriormente sero discutidas as principais tarefas administrativas do sistema.

96

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

2. INTRODUO

AO

MYSQL ADMINISTRATOR

O MySQL Administrator uma ferramenta desenvolvida com o propsito de facilitar as tarefas de administrar o banco de dados MySQL. Esta ferramenta distribuda gratuitamente e pode ser obtida gratuitamente a partir da internet no endereo www.mysql.com/ downloads. Assim como todos os clientes vistos at aqui, esta ferramenta requer uma conexo com o SGBD MySQL, que ser feita utilizando o usurio root, que possui todos os privilgios do sistema. A Figura 1 ilustra a tela do sistema que utilizada para estabelecer esta conexo. Neste ponto informado um nome para a conexo, o endereo do servidor MySQL, o usurio e senha. No caso, a conexo ser estabelecida com um MySQL que est instalado na mesma mquina do MySQL Administrator (localhost), o usurio o root, sem senha. Depois de informado os parmetros deve-se acionar o boto Ok e a conexo ser estabelecida, exibindo a tela ilustrada pela Figura 2 2.
Figura 1: Abrindo a conexo com o MySQL

Figura 2: Tela inicial do MySQL Administrator

Na tela inicial so exibidas as informaes sobre o servidor MySQL, que podem ser visualizadas atravs da opo Server Information (Informao do servidor), na lateral esquerda da janela. Todas as tarefas da administrao do sistema podem ser desempenhadas atravs da utilizao deste grupo de funes disponveis esquerda da janela. Nas sees seguintes sero discutidas cada uma das opes ilustradas na figura anterior.

97

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.

EXPLORANDO

AS OPES DA FERRAMENTA

MYSQL ADMINISTRATOR

Nesta seo sero discutidas as principais tarefas da administrao do banco de dados, atravs da explorao das opes disponveis no MySQL Administrator. O conjunto de tarefas do sistema exibido em destaque na Figura 3 3. As subsees a seguir discutem a utilizao de cada um dos itens exibidos na figura anterior.

3.1. CONTROLE

DO SERVIO

MYSQL

A opo Service control (Controle do servio), exibe a situao do servidor MySQL indicando se o mesmo est em execuo ou no. A Figura 4 fornece a tela que mostra as informaes contidas neste item do sistema.

Figura 3: Menu de tarefas do MySQL Administrator

Figura 4: Explorando a opo Controle do servio

Cadernos de Informtica

Caso seja necessrio interromper a execuo do servidor MySQL, basta acionar o boto Stop service (Parar o servio). Neste momento aparecer na janela Log messages (Registro de mensagens), a indicao de que o servidor foi parado. Alm disto, o texto do boto mudar para Start service (Iniciar o servio), permitindo assim reiniciar a execuo do mesmo. Para colocar o MySQL em funcionamento novamente, basta acionar este boto e a mensagem de que o servidor est no ar ser exibida no registro de mensagens. Com este recurso possvel controlar a execuo do SGBD, e verificar se o mesmo se encontra em operao, e caso esteja parado, possvel determinar o motivo da interrupo via as mensagens exibidas na janela Log messages (Registro de mensagens).

98

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.2. CONFIGURANDO

OS PARMETROS DO SERVIDOR

MYSQL

Existe um vasto conjunto de parmetros relacionados ao servidor de banco de dados, responsveis pelo funcionamento do mesmo. Por exemplo, existem configuraes para controlar o nmero mximo de conexes simultneas ao SGBD, ou seja, o nmero mximo de usurios fazendo uso do sistema. Vale lembrar que em um sistema de banco de dados podem existir vrias pessoas fazendo uso dele ao mesmo tempo. Para ilustrar, basta observar um sistema bancrio, onde vrios clientes utilizam seus caixas eletrnicos ao mesmo tempo. Alm disto, existem variveis que controlam a utilizao de memria e disco pelo sistema, controlando assim o uso de recursos da mquina e do sistema operacional. Todas as configuraes do MySQL esto disponveis a partir do item Startup variables (Variveis de iniciao), que so popularmente conhecidas como variveis de configurao. A Figura 5 fornece uma viso geral de todas as variveis do sistema.

Figura 5: Explorando as configuraes do sistema

Portanto para alterar um parmetro qualquer, por exemplo, Key buffer (rea de memria para chaves ou ndices), basta digitar o novo valor desejado e ento acionar o boto Apply changes (Confirmar alteraes), para confirmar a alterao. Assim, o novo valor ser assumido pelo sistema imediatamente. Caso a alterao deva ser desfeita, basta acionar o boto Discard changes (Descartar alteraes). Desta forma podem ser alterados quaisquer parmetros do servidor de forma a adequ-los aplicao que o utiliza, obtendo assim um melhor desempenho da aplicao como um todo.

99

Cadernos de Informtica

possvel notar que existe um conjunto considervel de parmetros, que esto organizados de acordo com os seus propsitos. A distribuio destes parmetros feita em oito grupos: 1. General parameters (Parmetros gerais), 2. Security (Segurana), 3. Networking (Configuraes de rede), 4. Advanced (Avanado), 5. Performance (Desempenho), 6. Log files (Arquivos de monitoramento), 7. Replication (Replicao de dados) e 8. InnoDB, MyISAM parameters (Parmetros para MyISAM e InnoDB ). Este livro no abordar todos os conjuntos de parmetros disponveis, ficando restrito apenas a exemplificar como alterar uma determinada configurao. O ajuste avanado das configuraes do servidor fica fora do escopo deste livro.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.3. ADMINISTRAO

DOS USURIOS DO SISTEMA

No decorrer deste livro foram utilizadas diversas ferramentas para acessar o MySQL, sendo que em todos os casos foi necessrio estabelecer uma conexo com o mesmo informando um usurio e senha. Um sistema de banco de dados contm mecanismos para controlar o acesso dos seus usurios, disponibilizando recursos para adicionar um novo usurio e para conceder privilgios. Desta forma, possvel definir quais aes estes usurios podero executar dentro do SGBD. O MySQL contm uma abordagem para controle de acessos onde permitido controlar quais os comandos podero ser executados, por exemplo, SELECT, INSERT, UPDATE, dentre outros. Portanto possvel criar um usurio que possa somente ler os dados do SGBD (privilgio SELECT), mas que no possa remover ou alter-los. Alm de controlar quais comandos podero ser submetidos ao banco, pode-se ainda controlar o nvel ao qual este privilgio se aplica. Por exemplo, pode-se limitar o acesso a apenas um banco, tabela ou at mesmo uma coluna. Desta forma seria possvel ter um usurio que pode ler (SELECT) o nome de todos os funcionrios, mas no a data de nascimento dos mesmos. Assim, para a criao de um novo usurio devero ser informados o seu nome, senha e os privilgios que lhe cabem. Esta tarefa executada a partir da opo User administration (Administrao de usurios), conforme ilustra a Figura 6 6. Na parte inferior esquerda da janela, so exibidos todos os usurios cadastrados. Percebe-se a existncia do usurio root, que foi utilizado durante todos os acessos ao servidor no decorrer deste livro.

Figura 6: Explorando a opo de administrao de usurios

Cadernos de Informtica

Para criar um novo usurio basta acionar o boto New user (Novo usurio), e ento preencher as informaes do usurio, tais como nome, senha e at mesmo incluir uma imagem ou foto do mesmo. A Figura 7 ilustra a criao do usurio UsuarioCurso, com a senha abacaxi. Percebe-se que o sistema coloca um asterisco (*) para cada letra digitada no campo senha, isto previne que pessoas prximas mquina vejam a senha de outros usurios.

100

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 7: Criando um novo usurio chamado UsuarioCurso

Definida as informaes do usurio necessrio informar os seus privilgios acionando a aba contendo Schema privileges (Privilgios do esquema). Vale ressaltar que um esquema de banco de dados um conjunto de elementos que constituem o banco, tais como tabelas, colunas, vises, procedimentos, dentre outros. Neste momento devemse selecionar o banco de dados que o usurio ter acesso e definir quais os comandos podero ser executados por ele. Para atribuir um privilgio, selecione-o na janela Available privileges (Privilgios disponveis), e ento clique na seta para a esquerda <, e para excluir o privilgio marque-o na janela Assigned privileges (Privilgios atribudos), e ento acione a seta para direita >. As setas duplas << e >> podem ser empregadas para atribuir ou excluir todos os privilgios de uma s vez. A Figura 8 mostra a atribuio do privilgio para executar os comandos SELECT e UPDATE em todas as tabelas do banco de dados curso.

Figura 8: Definindo o esquema de privilgios do usurio UsuarioCurso

Por ltimo possvel controlar a utilizao de recursos do sistema atravs do item Resources (Recursos), tais como o nmero de atualizaes e conexes por hora. Concluda a entrada dos dados do usurio acione o boto Apply changes (Confirmar alteraes) para confirmar a criao do usurio. Para descartar a incluso, o boto

101

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Discard changes (Descartar alteraes) dever ser utilizado. A Figura 9 ilustra o sistema aps a confirmao da insero, percebe-se que o usurio UsuarioCurso est mostrado na parte inferior da tela, ou seja, um usurio vlido no sistema.

Figura 9: Concluindo a insero do usurio UsuarioCurso

Para exibir os privilgios do usurio basta utilizar um clique duplo sobre o seu nome que est exibido na parte inferior da tela. Caso seja necessrio fazer alteraes neste usurio, basta utilizar a abordagem apresentada para a criao de um novo usurio, vista anteriormente.

3.4. MONITORANDO

A ATIVIDADE DO SERVIDOR

O MySQL administrator apresenta quatro opes para realizar o monitoramento do servidor de banco de dados. A primeira delas o item Server connections (Conexes ao servidor), que permite visualizar todos os usurios conectados ao sistema. A Figura 10 ilustra o cenrio onde apenas o usurio root est conectado ao sistema. Vale lembrar que o usurio root possui todos os privilgios do sistema, portanto considerado o administrador.

Figura 10: Exibindo as conexes de usurios

102

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Alm de monitorar as conexes ou processos em execuo no SGBD, a segunda opo fornecida para o monitoramento a visualizao da utilizao dos recursos do sistema, tais como memria e conexes disponveis. A Figura 11 exibe os grficos de utilizao de memria, chamado Memory Health (Sade da memria), vistos a partir da opo Health (Sade). Entende-se por sade da memria o modo como o MySQL est utilizando este recurso. Por exemplo, em uma residncia o hidrmetro responsvel pelo acompanhamento do consumo de gua. Neste caso, a sade da memria fornece como est sendo consumida a memria da mquina ao logo da execuo do SGBD.

Figura 11: Monitorando a utilizao de memria

A terceira e ltima opo para monitorar a execuo do MySQL feita atravs dos arquivos de registros de operaes, conhecidos como Log files. Estes arquivos so responsveis por armazenar as atividades realizadas pelo servidor, tais como a hora em que este foi iniciado e parado, quais os comandos foram executados, e por qual (is) usurio (s). O contedo destes arquivos com os registros das atividades do banco podem ser acessados por meio da opo Server logs (Arquivos de monitoramento do servidor), conforme ilustra a Figura 12 12.

Figura 12: Acessando os arquivos de log do sistema

103

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Finalmente, esta ferramenta permite visualizar os bancos de dados do sistema, bem como manipula-los. Ou seja, possvel criar tabelas, alterar suas estruturas ou at mesmo remover tabelas e bancos, assim como era feito no DBDesigner4 e MySQL Query Browser. Para acessar a estrutura de dados do sistema acione a opo Catalogs (Catlogos), e ento selecione o banco de dados desejado. Um catlogo nada mais que o conjunto de todos os esquemas de banco de dados gerenciados pelo servidor MySQL. Assim, ao selecionar um banco de dados todas as tabelas que compem este banco sero exibidas. A Figura 13 ilustra a estrutura do banco de dados curso criado nos captulos anteriores.

Figura 13: Acessando a estrutura do banco de dados curso

3.5. REALIZANDO

CPIAS DE SEGURANA DO BANCO DE DADOS

Uma cpia de segurana consiste em armazenar as informaes do banco de dados em um local diferente de onde se encontra o SGBD. Isto feito com o intuito de proteger os dados contra falhas de equipamentos ou de usurios. No primeiro caso, se a mquina ou o disco onde esto os dados forem danificados, toda a informao contida nele ser perdida. Desta forma, tendo a cpia de segurana, conhecida como backup possvel fazer a restaurao dos dados e eliminar a perda de informaes. No caso de falhas de usurios, se o mesmo remover por engano uma base de dados qualquer, esta pode ser recuperada atravs do backup. As cpias de segurana devem ser feitas periodicamente garantindo que haver disponvel uma cpia atual dos dados, minimizando as perdas de dados. No MySQL Administrator esta tarefa realizada a partir da opo Backup, onde ser criado um projeto para a cpia dos dados desejados. Para isto, acionam-se boto New project (Novo projeto), definem-se o nome do projeto, selecionam-se os bancos de dados a serem copiados, e finalmente armazena o projeto acionando-se o boto Save project (Salvar projeto), conforme ilustra a Figura 14 14.

104

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 14: Criando um projeto para realizar backup do banco curso

Neste momento o projeto salvo aparecer na parte inferior da janela e ficar disponvel para utilizao a qualquer momento em que se desejar realizar uma cpia do banco de dados curso. Para realizar esta operao, basta selecionar o projeto e ento acionar o boto Execute backup (Executar cpia de segurana). Ento o sistema abrir uma janela para informar o local e o nome do arquivo de backup, conforme ilustra a Figura 15 15. Ao acionar o boto Salvar, a cpia ser armazenada no local indicado com o nome previamente especificado.

Figura 15: Especificando o local e o arquivo de backup

Caso haja um problema com os dados, para restaurar a cpia de segurana deve-se acionar a opo Restore (Restaurar), e acionar o boto Open backup file (Abrir arquivo de backup). Neste momento abrir uma janela para que seja selecionado o

105

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

arquivo de backup desejado, isto , a cpia realizada no passo anterior. A Figura 16 ilustra esta situao.

Figura 16: Restaurao de uma cpia de segurana

Finalmente, acionando o boto Start restore (Iniciar restaurao), o banco de dados ser restaurado para a posio em que se encontrava no momento em que o backup foi realizado. Desta forma, toda a informao perdida devolvida para o sistema.

4. CONCLUSES
Este captulo ilustrou as principais rotinas para administrao de um sistema de banco de dados, salientando as principais tarefas realizadas pelo DBA. O objetivo introduzir a ferramenta MySQL Administrator como um sistema auxiliar, bem como formar conhecimento bsico sobre este procedimento para a manuteno do seu SGBD. importante ressaltar, que o objetivo deste livro no formar um DBA em MySQL, mas sim apresentar as rotinas pertinentes manuteno de um sistema de banco de dados, construindo uma viso geral dos mesmo. No captulo seguinte sero abordados recursos avanados de um sistema de banco de dados, tais como o controle de transao e a replicao de dados. Desta forma, estar encerrada a discusso de todos os aspectos de um sistema de banco de dados real.

Cadernos de Informtica

5. EXERCCIOS

DE FIXAO

1- Descreva as 11 tarefas disponveis no MySQL Administrator. 2- O que um DBA? 3- Quais as tarefas atribudas ao DBA? 4- Quantos grupos de configurao existem no MySQL Adminstrator? Cite-os.

106

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

5- Execute o MySQL Administrator e liste todos os privilgios disponveis nesta ferramenta. 6- O que um esquema de banco de dados? E um catlogo? 7- O que voc entende por backup? D exemplos de sua utilizao. 8- O que a restaurao de uma cpia de segurana? Em quais situaes esta operao seria realizada?

6. REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. MySQL AB: MySQL Administrator. Disponvel em: <http://dev.mysql.com/doc/ administrator/en/index.html>. Acesso em: 20 dez. 2005.

107

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CAPTULO 10 1. INTRODUO
No decorrer deste livro foram apresentados diversos conceitos acerca de um sistema de banco de dados relacional. Para a elaborao de um sistema baseado em um banco de dados relacional preciso passar por vrias etapas a fim de se determinar qual a estrutura final do mesmo. Inicialmente foram apresentadas as questes ligadas modelagem de dados. Nesta etapa foram definidas as entidades que compem o sistema, bem como os seus atributos e as regras de integridade que se aplicam aos dados. O produto final da etapa de modelagem o modelo lgico do banco de dados conhecido como modelo Entidade-Relacionamento, ou somente modelo ER. Esta uma forma de representar o banco de dados graficamente permitindo a documentao do sistema. A segunda etapa do processo se refere construo do banco de dados utilizando um Sistema Gerenciador de Banco de Dados (SGBD), neste livro foi adotado o MySQL como exemplo. Esta definio do banco de dados foi elaborada a partir do modelo ER, e foi empregada a ferramenta DBDesigner4 para esta tarefa. Uma vez construdo um banco de dados exemplo, denominado curso, foram apresentadas as tcnicas de consulta s informaes. Para efeito prtico a linguagem SQL foi introduzida, sendo exibida a sua Linguagem de Definio de Dados (DDL), e a Linguagem para Manipulao de Dados (DML). Sobre a linguagem de consulta, esta uma ferramenta que permite manipular as informaes contidas no banco de dados. Deste modo, vrios exemplos de relatrios bsicos e avanados foram ilustrados, permitindo o entendimento da mesma. Vale lembrar, que o MySQL Query Browser foi introduzido possibilitando a sua utilizao para a extrao de dados do MySQL, sem a utilizao do SQL explicitamente. Um sistema de banco de dados mantido pelo SGBD, e algumas tarefas tm que ser executadas periodicamente a fim de se garantir o funcionamento adequado do sistema. Para isto, foram discutidas as principais tcnicas de administrao de um sistema desta natureza, alm de apresentar a ferramenta MySQL Administrator como um mecanismo eficiente para a execuo destas operaes. Neste ponto todos os aspectos importantes relativos utilizao de um sistema de banco de dados j foram conceituados e exemplificados, possibilitando a sua aplicao em um sistema real. No entanto as aplicaes reais operam em um contexto onde h uma grande complexidade nos dados, bem como nas regras de utilizao dos mesmos. Alm disto, em um ambiente prtico, ao contrrio do que ocorreu nos exemplos deste livro, o banco de dados utilizado por diversos usurios simultaneamente. Isto introduz dificuldades e requer mecanismos para realizar o controle de concorrncia sobre os dados. Exemplificando, no seria impossvel que em um sistema dois usurios tentassem alterar um mesmo registro ao mesmo tempo, e neste caso, deve-se garantir a integridade da informao. Outro problema comum so as falhas que podem ocorrer durante uma operao, isto , pode haver uma queda de energia durante a manipulao das informaes e isto poderia levar a uma inconsistncia nos dados. No entanto, para contornar estas dificuldades um SGBD prov mtodos para controlar o acesso simultneo aos dados, bem como eliminar inconsistncias de informaes devido s falhas de sistema ou at mesmo de usurios. Este recurso conhecido como controle de transaes, e ser apresentado

108

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

posteriormente neste captulo. Existem ainda as aplicaes que exigem que o banco de dados esteja disponvel o tempo todo, ou seja, 24 horas por dia e sete dias por semana. Este o caso de um sistema bancrio, que deve permitir que os seus correntistas tenham acesso s suas movimentaes ou recursos financeiros a qualquer hora do dia. Estes tipos de aplicao exigem uma alta disponibilidade dos dados, e para isto existem alguns recursos presentes no SGBD para fornecer este nvel de confiabilidade. Neste captulo ser conceituada e exemplificada a replicao de dados que utilizada com o propsito de manter vrias cpias dos dados, permitindo que mesmo em caso de falhas do sistema, o dado ainda esteja disponvel para uso. Finalmente, a maioria dos SGBD permite a definio de rotinas que ficam armazenadas dentro deles e que podem ser acessadas a qualquer momento pelos usurios do sistema. Estas rotinas, conhecidas como Stored Procedure (Procedimentos armazenados), so como pequenos programas que podem ser construdos de forma a realizar uma manipulao complexa sobre os dados, e garantir a obedincia s regras de negcios da aplicao. Para ilustrar, na insero de um funcionrio no banco curso, preciso verificar se o cargo informado est cadastrado na tabela cargos, caso contrrio, a insero no pode ocorrer. Uma forma de se fazer esta operao atravs de uma rotina que ficaria guardada no SGBD e que poderia ser invocada pelo usurio que desejasse fazer a incluso de um novo funcionrio, garantindo assim a no violao da regra anterior. Na verdade esta uma rotina dispensvel, pois como mostrado anteriormente as restries de chave estrangeira j garantem que no haver um funcionrio com um cargo inexistente, mas vale para ilustrar o uso das rotinas armazenadas. Assim, este captulo tem como objetivo discutir os recursos avanados de um sistema de banco de dados, sendo que estes so de extrema importncia em sistemas que realizam tarefas corriqueiras ou comuns no dia a dia das pessoas. Todas as caractersticas anunciadas nesta seo sero conceituadas e exemplificadas no decorrer das prximas sees.

2.

ENTENDENDO

O CONTROLE DE TRANSAES

Para ilustrar a utilizao do controle de transao ser considerada uma tabela que armazena os saldos de todos os correntistas de um determinado banco. Este cadastro de clientes ilustrado pela Tabela 1 1, lembrando que esta tabela ser reproduzida no MySQL, dentro do banco curso.

109

Cadernos de Informtica

Um SGBD transacional aquele que suporta uma transao ACID, ou seja, Atomicidade, Consistncia, Isolamento e Durabilidade. Atomicidade consiste em executar um grupo de comandos como se fosse nico, sendo que caso ocorra uma falha em um destes comandos, toda a transao ser descartada levando a base de dados situao inicial. O conceito de consistncia conseqncia da atomicidade, j que em caso de falhas do sistema os dados sero restaurados para a situao inicial, eliminando assim as perdas de informaes. O isolamento consiste em permitir que vrias transaes ocorram sobre o mesmo dado e estas no interfiram umas nas outras, isto , garante o controle de concorrncia sobre os dados. Finalmente, a durabilidade est associada ao fato de que uma vez encerrada a sua transao os efeitos dela persistiro mesmo que haja uma falha do sistema.

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

CDIGO 1 2

NOME JOS DA SILVA MARIA APARECIDA

SALDO 2.000 4.000

CREATE TABLE clientes ( codigo INTEGER NOT NULL, nome CHAR(30) NOT NULL, saldo DECIMAL(10, 2) NOT NULL, PRIMARY KEY(codigo) ) ENGINE=InnoDB; INSERT INTO clientes (codigo, nome, saldo) VALUES (1, 'Jos da Silva', 2000.00); INSERT INTO clientes (codigo, nome, saldo) VALUES (2, 'Maria Aparecida', 4000.00);
Tabela 1: Tabela de saldos dos correntistas de uma agncia bancria

A Figura 1 1, ilustra a tabela de clientes aps a execuo dos comandos exibidos na Tabela 1 1, atravs do MySQL Query Browser.

Figura 1: Tela com a tabela de saldos dos correntistas

Cadernos de Informtica

Percebe-se que a tabela possui o cdigo do cliente, seu nome e o seu saldo em reais, e cada registro desta tabela representa um correntista. O objetivo deste cenrio ilustrar a aplicao do controle de transao, e para isto, ser realizada uma transferncia de valores entre contas de clientes, assim como ocorre em um caixa eletrnico de uma agncia bancria. O exemplo consiste em transferir a quantia de R$100,00 da conta do cliente com o cdigo 1 para a conta do cliente com o cdigo 2.

110

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Figura 2: Falha em uma transferncia de fundos entre contas

A operao de transferncia, no ponto de vista do SGBD, consiste em executar dois comandos UPDATE de forma a retirar a quantia de uma conta e depositar na outra. Ou seja, um comando UPDATE ser responsvel pela reduo do saldo da conta do cliente 1 em R$100,00, e o segundo comando UPDATE deve fazer um acrscimo da mesma quantia no saldo do cliente 2. Desta forma, o total em reais existentes nas duas contas no se alterar ao final da operao, j que R$100,00 foram sacados da primeira conta e depositado na segunda. O cenrio descrito anteriormente seria perfeito desde que houvesse garantia de que os dois comandos seriam executados sem problemas. Na verdade, em um sistema real no h como garantir que no haver uma queda de energia durante a operao de transferncia. Neste caso, pode ocorrer de o primeiro comando ser executado com sucesso, realizando o saque na conta do cliente 1, e devido esta falta de energia, o segundo comando no ser executado. Deste modo, o depsito da mesma quantia no seria feito na conta 2, o que levaria a base de dados uma situao inconsistente, ou seja, desapareceriam R$100,00. A Figura 2 ilustra a execuo desta operao e a situao final em que se encontram os saldos das contas. Vale destacar que para simular a queda de energia, a ferramenta encerrada no meio da transao acionando o X no canto superior direito da tela. Desta forma, impe-se uma interrupo abrupta no processo durante a sua execuo, similar quela que ocorreria durante a falha de energia. Para resolver este problema deve-se entender a operao de transferncia como uma nica transao, composta de mais de um comando. Desta forma, a transao s seria processada se todos os comandos que a constitui forem executados com sucesso. Para isto, preciso indicar para o SGBD o incio e o trmino da sua transao. No MySQL Query Browser existem as teclas para o controle de transao, conforme ilustra igura 3 a Figura 3. Existem trs comandos bsicos que so o START TRANSACTION, COMMIT e ROLLBACK. O primeiro marca o incio da transao, o segundo confirma todos os comandos executados at o momento, ou seja, a confirmao da transao. Caso queira desfazer todos os comandos de uma transao basta enviar um ROLLBACK, que todos os comandos executados at este momento sero desfeitos automaticamente. Assim, quando ocorrer uma falha no meio da transao o SGBD no receber a confirmao (COMMIT), e ento desfar todo o processo retornando a base de dados para a situao em que se encontrava no incio da operao. A Figura 4 ilustra a mesma operao de transferncia utilizando o controle de transao.

111

Cadernos de Informtica

Figura 3: Painel para o controle de transao no MySQL Query Browser

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

Neste caso, ao encerrar o MySQL Query Browser no meio da transao o primeiro comando UPDATE que havia sido executado foi desfeito pelo SGBD, devolvendo a quantia para a conta 1, eliminado assim a perda de dados ocorrida no caso onde no foi utilizado este controle. A Figura 5 ilustra a transao completa aps a execuo do comando COMMIT, neste caso todas as alteraes foram aplicadas com sucesso, e a quantia foi movimentada entre contas sem perdas de informaes, ou seja, de modo consistente. Pode ocorrer ainda de aps terem sido executados os dois comandos para realizar a transferncia de fundos, haja a necessidade de desistir da operao. Neste caso, utilizando o controle de transao isto bem simples de ser feito, basta acionar o comando ROLLBACK. Desta forma tudo que tenha sido realizado at o momento ser desfeito. Assim, o saque e o depsito sero desfeitos e o saldo inicial ser restabelecido, da mesma forma como ocorre no exemplo da Figura 4 4. Este um pequeno exemplo do uso do controle de transaes em um sistema real. Este um mecanismo complexo e indispensvel em determinados sistemas, visto que ele fornece uma garantia de consistncia das informaes contidas no banco de dados, mesmo em situaes de falhas, muito corriqueiras na prtica. importante ressaltar que existem outros aspectos a respeito do controle de transaes que sero omitidos neste livro, j que o objetivo aqui apenas fornecer os conceitos bsicos acerca deste recurso.

Figura 4: Transferncia bancria com controle de transao

112

Cadernos de Informtica

Figura 5: Confirmando a transferncia bancria com o COMMIT

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

3.

UTILIZANDO

A REPLICAO PARA OBTER ALTA DISPONIBILIDADE

Aplicaes crticas exigem, em geral, que as informaes estejam sempre disponveis para o usurio, independentemente de quaisquer problemas que possam ocorrer com a mquina ou o SGBD que mantm estes dados. Para garantir este nvel de segurana preciso manter uma redundncia destas informaes, permitindo assim que caso um servidor falhe, as informaes contidas nele estejam disponveis para uso em algum outro local. Uma das tcnicas mais difundidas entre os SGBD disponveis atualmente a replicao de dados. Este mecanismo consiste em manter uma cpia idntica do banco de dados em diversas mquinas, sendo que qualquer alterao ocorrida em um destes servidores propagada imediatamente para os demais participantes da replicao. A Figura 6 fornece uma viso esquemtica de uma replicao de dados onde participam trs mquinas. No cenrio descrito pela figura anterior, existem trs cpias idnticas dos dados e a aplicao acessa o servidor de nmero 1. Os demais SGBD presentes nos outros locais fazem a leitura das modificaes ocorridas no primeiro servidor, garantindo que todas as mquinas estaro sincronizadas, isto , idnticas. Esta cpia de dados realizada constantemente, de forma a garantir a menor diferena possvel de informaes. Vale ressaltar que cada SGBD disponibiliza o recurso de replicao de uma forma diferente, mas o objetivo maior desta seo apresentar a idia bsica deste artifcio.
Figura 6: Esquema de um sistema de replicao de dados

O grande benefcio desta abordagem que como existem diversas cpias idnticas dos dados, em mquinas distintas, a aplicao no fica vulnervel a um problema localizado no servidor que acessado primariamente pela aplicao. Considerando que caso ocorra um dano no equipamento, a aplicao pode ser redirecionada para um dos demais servidores e continuar operando como se nada tivesse ocorrido ao sistema de banco de dados. Alm desta segurana um sistema de replicao permite que mais usurios acessem as informaes simultaneamente, j que estes acessos podem ser distribudos entre os vrios servidores existentes. Dado que a informao contida nestas mquinas igual, permitida a distribuio de carga, aumentando consideravelmente o desempenho do sistema como um todo.

4.

TRABALHANDO

COM ROTINAS ARMAZENADAS NO

SGBD

Uma rotina pode ser entendida como um conjunto de instrues que devem ser executadas com um propsito de realizar uma tarefa qualquer. No contexto de banco de dados, estas tarefas so em geral relacionadas manipulao das informaes armazenadas por ele. As instrues contidas em uma rotina so definidas em cima da linguagem SQL, e estas rotinas podem ser armazenadas no SGBD e serem utilizadas posteriormente por qualquer usurio do sistema.

113

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

O objetivo deste recurso permitir uma padronizao do acesso aos dados e garantir que a base de dados no ser levada para uma situao de inconsistncia. Para ilustrar este recurso, ser considerada a tabela de clientes criada na seo anterior. Tomando como exemplo a transao de transferncia bancria, existem algumas regras que devem ser cumpridas durante este procedimento. Por exemplo, no se deve permitir que um cliente faa uma transferncia de uma quantia superior ao saldo de sua conta. Assim, para garantir o cumprimento deste requisito, interessante criar uma rotina que antes de realizar a operao, verifica se h saldo suficiente. A execuo do procedimento s prossegue se houver uma quantia suficiente de dinheiro na conta de onde ser feito o saque. Desta forma, todo usurio do sistema que venha a realizar esta operao no precisar conhecer os detalhes que cercam esta operao, bastaria apenas invocar esta rotina que j est escrita e armazenada no SGBD. A Figura 7 ilustra a criao e utilizao de uma rotina que transfere uma quantia qualquer entre duas contas quaisquer. A rotina chamada transfere_quantia recebe trs argumentos como parmetros, que so uma conta de origem (conta_origem), a conta de destino (conta_destino), e a quantia a ser transferida entre elas (quantia). A rotina executa uma consulta para verificar se o saldo da conta de origem superior quantia a ser transferida. Caso no tenha saldo suficiente, a mensagem Saldo insuficiente ser impressa. Caso contrrio, a transferncia ser realizada. A Figura 7 ilustra a chamada desta rotina exemplificando o resultado nas duas situaes ilustradas anteriormente. Os comandos executados so CALL transfere_quantia(1, 2, 300000), CALL transfere_quantia(1, 2, 100) e SELECT * from clientes c. Perceba que para executar um procedimento basta utilizar o comando call (Chamar). Portanto, com a utilizao de rotinas armazenadas possvel esconder a complexidade dos dados dos usurios, e padronizar o acesso base de dados. O exemplo serve apenas como uma motivao para a utilizao deste recurso. Vale ressaltar que existem detalhes sobre esta abordagem que foram omitidos por estar fora do escopo deste livro. Com isto, tem-se uma viso geral do que e qual a aplicao prtica deste recurso, possibilitando um entendimento bsico deste mecanismo que amplamente utilizado em aplicaes reais.

Figura 7: Rotina para transferncia bancria

Cadernos de Informtica

5. CONCLUSES
Neste captulo foi apresentada uma viso geral dos principais recursos avanados em um sistema de banco de dados relacional. Todos os aspectos gerais ligados construo e utilizao de um sistema de banco de dados foram discutidos ao longo deste livro com o intuito de promover o entendimento bsico destes sistemas. Vale ressaltar que o objetivo deste livro possibilitar o entendimento do que um banco de dados, bem como tornar vivel a construo de um banco de dados para resolver problemas reais

114

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

com uma baixa complexidade. Entretanto, a meta deste livro no formar um DBA (Administrador de Banco de Dados), nem tampouco discutir todos os aspectos de um SGBD. A partir deste ponto, todo conhecimento bsico familiar, o que torna factvel o emprego desta ferramenta para modelar e representar sistemas reais dentro das necessidades especficas de cada um. Alm disto, com esta base terica mais fcil avanar no conhecimento de banco de dados atravs de um estudo de aplicaes especficas, bem como de outros SGBD disponveis no mercado.

6. EXERCCIOS

DE FIXAO

1- O que uma transao ACID? Descreva o que representa cada letra desta sigla. 2- Qual o principal objetivo do controle de transaes? 3- Para que servem os comandos START TRANSACTION, COMMIT e ROLLBACK? 4- O que a replicao de banco de dados? 5- Para qual propsito utilizada a replicao de dados? 6- O que um procedimento armazenado? 7- Qual o propsito das stored procedures? 8- O que acontece ao tentar transferir uma quantia superior ao saldo da conta de origem, utilizando a procedure transfere_quantia?

7. REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/ documentation>. Acesso em: 20 dez. 2005. Gulutzan, Peter: MySQL 5.0 Stored Procedures. MySQL AB, march 2005. Disponvel em: <http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html>. Acesso em: 20 dez. 2005. Gulutzan, Peter: MySQL 5.0 Triggers. MySQL AB, march 2005. Disponvel em: <http:// dev.mysql.com/tech-resources/articles/mysql-triggers.html>. Acesso em: 20 dez. 2005. Pelzer, Trudy: MySQL 5.0 Views. MySQL AB, march 2005. Disponvel em: <http:// dev.mysql.com/tech-resources/articles/mysql-views.html>. Acesso em: 20 dez. 2005.

115

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

116

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS Secretaria de Estado de Educao MG

117

Cadernos de Informtica

You might also like