Cadernos de Informtica
Cadernos de Informtica
Coordenador
Carlos Eduardo Hermeto S Motta
Cadernos de Informtica
Cadernos de Informtica
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.
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
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.
Cadernos de Informtica
1. CURSO
SOBRE O
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.
DE
INTRODUO
AO
BANCOS
DE
DADOS
Cadernos de Informtica
3. CURSO
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
Cadernos de Informtica
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.
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
4. CURSO
de sada. Animao bsica. Movimentao de cmera e objetos. Renderizao da animao. Formatos de sada.
5. CURSO
DE
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.
Cadernos de Informtica
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.
10
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.
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
CAPTULO 3 ................................................................................... 35
1 - Introduo ferramenta de modelagem DBDesigner4 .......................... 35
2 - Introduo ao DBDesigner4 .............................................................. 36
Cadernos de Informtica
5 - Concluses ..................................................................................... 33
11
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
Cadernos de Informtica
12
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
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
Cadernos de Informtica
CAPTULO 8 ................................................................................... 85
13
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
Cadernos de Informtica
14
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.
Cadernos de Informtica
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.
15
1.1. DESCRIO
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.
Tabela 1:
Definio da
ENTIDADE
alunos
MATRCULA
1
2
3
4
5
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.
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
Cadernos de Informtica
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.
16
Tabela 2:
Definio da
ENTIDADE
pontuao
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
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.
Cadernos de Informtica
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 11, 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.
17
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.4. RELAES
E INTEGRIDADE DE DADOS
Cadernos de Informtica
18
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.
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
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
Cadernos de Informtica
2.1. CRIANDO
19
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 11.
Figura 1
Abrindo um
terminal no
Linux
Cadernos de Informtica
Feito isto, o terminal se abrir e ento a conexo com o MySQL poder ser estabelecida
conforme a Figura 22.
20
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.
Figura 3:
Conexo com o
MySQL
estabelecida
com sucesso
2.2. CRIANDO
MYSQL
Figura 4: Criando e
selecionando o
banco de dados
curso
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.
Cadernos de Informtica
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 44.
21
2.3. CRIANDO
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 66.
Observe que nela esto definidas as restries de chave estrangeira desta entidade.
Cadernos de Informtica
Figura 6:
Criao da
tabela de
pontuaes
22
Tendo executado os comandos para a criao das tabelas, podem-se examinar as suas
estruturas atravs do comando DESCRIBE, como ilustrado na Figura 77.
Figura 7:
Verificando a
estrutura das
tabelas atravs
do comando
DESCRIBE
2.4. INSERINDO
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 .
Cadernos de Informtica
Figura 8:
Insero dos
dados na tabela
de alunos
23
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
Cadernos de Informtica
A Figura 10 exibe duas consultas que listam todas as colunas e registros das tabelas de
alunos e pontuaes, respectivamente.
24
Figura 10:
Listando o
contedo das
tabelas de
alunos e
pontuaes
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.
Cadernos de Informtica
Figura 12:
Listagem do
nome e dos
pontos obtidos
em maro de
2004
25
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
Cadernos de Informtica
26
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.
DE UM SISTEMA PARA CONTROLE DE UMA EMPRESA
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.
2.1.DESCRIO
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,
Cadernos de Informtica
2. DESCRIO
27
3. ASPECTOS
Cadernos de Informtica
Figura 1:
Smbolos
utilizados para o
desenho de um
diagrama ER
28
GERAIS DO MODELO
ENTIDADE-RELACIONAMENTO
3.1. DESCRIO
ENTIDADE
EMPRESA
TIPO
FORTE
OBRAS
FUNCIONRIOS
FORTE
FORTE
CARGOS
FORTE
CDIGO
EQUIPES
FRACA
ATRIBUTOS
CDIGO, NOME, CNPJ E
TELEFONE
E DESCRIO
CDIGO
E NOME
E TRMINO
E ENDEREO
Cadernos de Informtica
O problema proposto constitudo de vrias entidades que esto apresentadas de forma resumida na Tabela 11.
29
Figura 2:
Diagrama
contendo as
entidades do
modelo e seus
atributos
3.2. DESCRIO
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.
Cadernos de Informtica
30
1- Um para um
2- Um para muitos
Figura 3:
Relacionamento
funcionrio
gerencia equipe
Figura 5:
Relacionamento
de equipes que
executam obras
Figura 6:
Modelo ER
completo da
aplicao
proposta
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-
Cadernos de Informtica
equipe
composta por
funcionrios
31
4. MODELANDO
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.
Cadernos de Informtica
32
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
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
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.
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
Cadernos de Informtica
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.
33
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
7. REFERNCIAS BIBLIOGRFICAS
Batini, C., Ceri, S., and Navathe, S. [1992] Database Design: An Entity-Relationship
Approach, Benjamin/Cummings, 1992.
Campbell,
D., Embley, D., and Czejdo, B. [1985] "A Relationally Complete Query Language
for the Entity-Relationship Model," in ER Conference [1985].
Cadernos de Informtica
34
Dumpala, S., and Arora, S. [1983] "Schema Translation Using the Entity-Relationship
Approach," in ER Conference [1983].
CAPTULO 3
1. INTRODUO
FERRAMENTA DE MODELAGEM
DBDESIGNER4
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.
Cadernos de Informtica
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.
35
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 11. 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 22.
Cadernos de Informtica
Figura 2: Janela
principal do
DBDesigner4
36
COMPONENTES DO
DBDESIGNER4
Figura 3: Menu
de opes do
DBDesigner4
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
Cadernos de Informtica
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.
37
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
Cadernos de Informtica
38
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.
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.
Ao criar uma nova conexo ser exibida uma janela, conforme ilustra a Figura 77.
Cadernos de Informtica
Figura 6: Abrindo
uma conexo com
o banco de dados
39
Figura 7:
Criando uma
nova conexo
com o banco
de dados
Cadernos de Informtica
Figura 8:
Sincronizao
do modelo com
o SGBD
40
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,
Figura 9:
Engenharia
reversa de um
banco de
dados
Cadernos de Informtica
41
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.
Cadernos de Informtica
Figura 12:
Tabela para
armazenar os
pais
42
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
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
1 PARA MUITOS
1 PARA 1
OS RELACIONAMENTOS
Figura 14:
Relacionamento 1:N
entre Pais e Filhos
Cadernos de Informtica
43
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.
Cadernos de Informtica
4. EXERCCIOS
44
DE FIXAO
5. REFERNCIAS BIBLIOGRFICAS
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 11.
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 11, 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.
2. CRIANDO
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 22.
Cadernos de Informtica
Assim, as sees seguintes ilustram passo a passo, os caminhos que devem ser seguidos
para a obteno deste banco de dados.
45
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.
Cadernos de Informtica
Figura 3:
Conexo
para acesso
ao banco
de dados
curso
46
3. CONSTRUO
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.
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
TIPO
INTEGER
DOUBLE
DESCRIO
NMEROS INTEIROS
NMEROS REAIS OU PONTO-FLUTUANTE
TEXTOS
DATA E HORA
CHAR(X)
DATE
TIME
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.
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.
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.
Cadernos de Informtica
3.2. DEFINIO
47
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 11.
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.
Cadernos de Informtica
Figura 5:
Definio da
tabela Obras
48
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.
Cadernos de Informtica
Figura 7:
Definio da
tabela
Cargos
49
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 99.
Cadernos de Informtica
Figura 9:
Ilustrao das
5 tabelas do
sistema para
construo
civil
50
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.
3.3. D EFININDO
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.
Cadernos de Informtica
51
Figura 11:
Relacionamento Equipes
so compostas por
Funcionrios
Figura 10:
Relacionamento
Funcionrio
gerencia Equipe
Figura 12:
Relacionamento
Funcionrios
possuem
Cargos
Cadernos de Informtica
Figura 13:
Relacionamento
Empresa
constri Obras
52
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.
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
Cadernos de Informtica
Figura 15:
Diagrama
completo da
aplicao
53
3.4. CONVERTENDO
4. CONCLUSES
Figura 16:
Sincronizao
do modelo com
o banco curso
Cadernos de Informtica
5. REFERNCIAS
54
BIBLIOGRFICAS
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.
2. INTRODUO
AO
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.
Cadernos de Informtica
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.
55
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
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.
Cadernos de Informtica
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 11.
56
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
3.
EXPLORANDO
OS PRINCIPAIS RECURSOS DO
3.1. UTILIZANDO
Cadernos de Informtica
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.
57
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 44.
Figura 4:
Acionando o
editor de
tabela do
MySQL Query
Browser
Cadernos de Informtica
Figura 5: Editor
de tabelas do
MySQL Query
Browser
58
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.
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,
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.
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.
Cadernos de Informtica
Figura 6:
Tela com a
tabela de
cargos sem
registros
59
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.
Cadernos de Informtica
Figura 8:
Alterao do
cargo de
engenheiro
para
engenheiro
civil
60
Figura 9:
Excluso do
cargo pedreiro
3.2.2. LEITURA
Cadernos de Informtica
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.
61
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.
Cadernos de Informtica
Figura 12:
Seleo do
nome do cargo
com o cdigo 1
62
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
REFERNCIAS
BIBLIOGRFICAS
MySQL AB: MySQL Query Browser. Disponvel em: <http://dev.mysql.com/doc/querybrowser/en/index.html>. Acesso em: 20 dez. 2005.
Cadernos de Informtica
6.
63
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.
Cadernos de Informtica
2. INTRODUO
64
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
DESCRIO
NMEROS INTEIROS
NMEROS COM PRECISO
FLOAT
DATE
DATETIME
HH:MM:SS
CHAR(T)
TEXT
BLOB
X.XXXXXXXXXX
AAAA-MM-DD
AAAA-MM-DD
MS-DIA HORA:MINUTO:SEGUNDOS
TEXTOS
TEXTOS LONGOS
BINRIOS
ETC
VDEOS E IMAGENS
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
3.1. CRIANDO
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.
Cadernos de Informtica
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.
65
3.2. CRIANDO
E REMOVENDO TABELAS
Cadernos de Informtica
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.
66
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 44.
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
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,
cnpj char(20) NOT NULL,
telefone char(20) NOT NULL,
PRIMARY KEY (codigo)
) ENGINE=InnoDB;
CREATE TABLE equipes (
codigo integer unsigned NOT NULL auto_increment,
Cadernos de Informtica
67
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).
Cadernos de Informtica
Figura 1: Erro
na insero
de dois
cargos com o
cdigo 2
68
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.
3.2.2 ENTENDENDO
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
Cadernos de Informtica
) ENGINE=InnoDB;
69
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.
Cadernos de Informtica
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.
70
3.2.3 REMOVENDO
Finalmente, para remover uma tabela utiliza-se o comando DROP TABLE conforme ilustra a Listagem 77.
DROP TABLE nome_da_tabela
Listagem 7: Comando para a excluso de uma tabela
Cadernos de Informtica
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.
71
TABLE
TABLE
TABLE
TABLE
nome_da_tabela
nome_da_tabela
nome_da_tabela
nome_da_tabela
Tabela 2: Comandos para incluir, remover, trocar o tipo e alterar nome e tipo de colunas de
uma tabela
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
6. REFERNCIAS
Cadernos de Informtica
72
BIBLIOGRFICAS
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.
INSERT
Cadernos de Informtica
2.1. INCLUINDO
73
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
Cadernos de Informtica
Figura 2:
Exemplo de
insero do
cargo Mestre de
obras
74
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.
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');
Cadernos de Informtica
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.
75
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);
Cadernos de Informtica
76
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-
2.2. ALTERANDO
UPDATE
Cadernos de Informtica
Figura 4:
Atualizando o
telefone do
funcionrio com o
CPF
111.111.111-11
77
2.3. EXCLUINDO
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 33.
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
Cadernos de Informtica
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.
78
3. INTRODUO
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
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
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 66, representada pelo comando SELECT nome, cpf FROM funcionarios.
Cadernos de Informtica
Figura 6: Exibir
o nome e o CPF
de todos os
funcionrios
79
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 77.
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.
Cadernos de Informtica
Figura 8: Listar
o nome dos
funcionrios que
atuam como
pedreiro
80
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
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.
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.
Cadernos de Informtica
81
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.
Cadernos de Informtica
Figura 12:
Listar as obras
e o total de
equipes
envolvidas
82
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.
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
Cadernos de Informtica
Figura 14:
Listar os
cargos
ordenados por
nome
83
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
Cadernos de Informtica
6.
84
REFERNCIAS
BIBLIOGRFICAS
Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.
Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.
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.
2. TCNICAS
- 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
Cadernos de Informtica
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.
85
Cadernos de Informtica
Figura 1:
Utilizando o
JOIN, problema
de ambigidade
de nomes de
colunas.
86
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 22, com o comando SELECT funcionrios.nome, cargos.nome FROM funcionrios,
cargos.
Figura 2:
Resolvendo a
ambigidade
de nomes de
colunas
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.
Cadernos de Informtica
2.1. O
87
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.
Cadernos de Informtica
Figura 4:
Listando o
nome e os
cargos dos
funcionrios e
as suas
equipes
88
Figura 5:
Relatrio de
funcionrios,
cargos e
equipes
utilizando o
INNER JOIN
Cadernos de Informtica
3. ENTENDENDO
89
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.
Cadernos de Informtica
3.2. UTILIZANDO
90
UM
SELECT
DENTRO DA CLUSULA
FROM
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.
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
Cadernos de Informtica
Figura 8: Nome
das equipes
contendo
funcionrios
91
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 99, 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.
Cadernos de Informtica
3.4. AGRUPANDO
92
UNION
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)).
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
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)
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().
Cadernos de Informtica
93
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.
Cadernos de Informtica
Figura 12:
Utilizando a
funo
DATE_FORMAT
para formatar
uma data
94
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
REFERNCIAS
BIBLIOGRFICAS
MySQL AB: MySQL Query Browser. Disponvel em: <http://dev.mysql.com/doc/querybrowser/en/index.html>. Acesso em: 20 dez. 2005.
Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.
Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.
Cadernos de Informtica
7.
95
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.
Cadernos de Informtica
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.
96
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.
2. INTRODUO
AO
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.
Cadernos de Informtica
Figura 2: Tela
inicial do MySQL
Administrator
97
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 33.
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
Cadernos de Informtica
Figura 4:
Explorando a
opo Controle do
servio
98
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).
3.2. CONFIGURANDO
OS PARMETROS DO SERVIDOR
MYSQL
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.
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.
Cadernos de Informtica
Figura 5:
Explorando as
configuraes
do sistema
99
3.3. ADMINISTRAO
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 66. 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.
Cadernos de Informtica
Figura 6:
Explorando a
opo de
administrao
de usurios
100
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.
Figura 7:
Criando um
novo
usurio
chamado
UsuarioCurso
Cadernos de Informtica
Figura 8:
Definindo o
esquema de
privilgios do
usurio
UsuarioCurso
101
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.
Cadernos de Informtica
Figura 10:
Exibindo as
conexes de
usurios
102
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.
Cadernos de Informtica
Figura 12:
Acessando os
arquivos de log
do sistema
103
Figura 13:
Acessando a
estrutura do
banco de dados
curso
3.5. REALIZANDO
Cadernos de Informtica
104
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.
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.
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
Cadernos de Informtica
Figura 15:
Especificando
o local e o
arquivo de
backup
105
Figura 16:
Restaurao
de uma cpia
de segurana
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.
Cadernos de Informtica
106
5. EXERCCIOS
DE FIXAO
BIBLIOGRFICAS
Cadernos de Informtica
6. REFERNCIAS
107
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.
Cadernos de Informtica
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.
108
ENTENDENDO
O CONTROLE DE TRANSAES
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.
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 11, lembrando que esta tabela ser reproduzida no
MySQL, dentro do banco curso.
Cadernos de Informtica
2.
109
CDIGO
1
NOME
JOS DA SILVA
SALDO
2.000
MARIA APARECIDA
4.000
A Figura 11, ilustra a tabela de clientes aps a execuo dos comandos exibidos na
Tabela 11, atravs do MySQL Query Browser.
Cadernos de Informtica
Figura 1: Tela
com a tabela de
saldos dos
correntistas
110
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.
Figura 2:
Falha em uma
transferncia
de fundos
entre contas
Figura 3:
Painel para o
controle de
transao no
MySQL Query
Browser
Cadernos de Informtica
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 33.
a Figura
111
Cadernos de Informtica
Figura 4: Transferncia
bancria com controle de
transao
112
Figura 5:
Confirmando a
transferncia
bancria com o
COMMIT
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 44.
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.
3.
UTILIZANDO
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.
4.
TRABALHANDO
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.
Cadernos de Informtica
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.
113
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.
Figura 7:
Rotina para
transferncia
bancria
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.
Cadernos de Informtica
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.
114
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
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?
BIBLIOGRFICAS
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.
Cadernos de Informtica
7. REFERNCIAS
115
Cadernos de Informtica
116
Cadernos de Informtica
117