You are on page 1of 118

C

a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
1
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
C
a
d
e
r
n
o
s
d
e
I
n
f
o
r
m
a
t
i
c
a
CURSO DE CAPACITAO EM INFORMTICA INSTRUMENTAL
CURSO DE MONTAGEM E MANUTENO DE COMPUTADORES
CURSO SOBRE O SISTEMA OPERACIONAL LINUX
CURSO DE PROGRAMAO EM JAVA
CURSO DE INTRODUO A BANCOS DE DADOS
CURSO DE CONSTRUO DE WEB SITES
CURSO DE EDITORAO ELETRNICA
CURSO DE ILUSTRAO DIGITAL
CURSO DE PRODUO FONOGRFICA
CURSO DE COMPUTAO GRFICA
CURSO DE PROJETO AUXILIADO POR COMPUTADOR
CURSO DE MULTIMDIA NA EDUCAO
PROJETO ESCOLAS - REFERNCIA
Compromisso com a Excelncia na Escola Pblica
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
2
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
3
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
ber Machado Duarte
Coordenador
Carlos Eduardo Hermeto S Motta
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
4
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
5
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
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 extra-
turno.
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 capa-
citados pela SEE. Esses professores iro atuar como multiplicadores, ministrando-os a
outros servidores da escola e aos alunos.
CURSO DE CAPACITAO EM INFORMTICA INSTRUMENTAL
Este curso ser implantado obrigatoriamente em todas as escolas estaduais em que for
instalado laboratrio de informtica. Iniciando pelas Escolas-Referncia, todos os pro-
fessores 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 pro-
gramas 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
APRESENTAO
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
6
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
valor de incorpor-las ao seu trabalho cotidiano. Os participantes sero preparados
para navegar e pesquisar na internet; enviar, receber e administrar correspondncia
eletrnica, alm de criar e editar documentos (textos, planilhas e apresentaes) de
interesse acadmico e profissional. Esse um curso fundamental, base e pr-requisito
para todos os demais.
CURSO DE MONTAGEM E MANUTENO DE COMPUTADORES
Este curso ser implantado em, pelo menos, uma escola do municpio sede de cada
Superintendncia Regional de Ensino. A indicao da escola dever ser feita pela pr-
pria 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 ofe-
recido 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 dis-
ponvel.
Neste curso o participante aprender a funo de cada um dos componentes do
microcomputador. Aprender como montar um computador e como configur-lo, insta-
lando o sistema operacional, particionando e formatando discos rgidos, instalando pla-
cas de fax/modem, rede, vdeo, som e outros dispositivos. Conhecer, ainda, as tcnicas
de avaliao do funcionamento e configurao de microcomputadores que esteja preci-
sando de manuteno preventiva ou corretiva, alm de procedimentos para especificao
de um computador para atender as necessidades requeridas por um cliente.
Dos cursos que se seguem, as Escolas-Referncia devero escolher pelo menos dois para
implantar em 2006.
No perodo de 13 a 25 de maro/2006, estar disponvel no stio da SEE
(www.educacao.mg.gov.br) um formulrio eletrnico para que cada diretor das Escolas-
Referncia possa informar quais os cursos escolhidos pela sua escola e quais os profes-
sores que devero ser capacitados. Durante o perodo de capacitao, os professores
sero substitudos por professores-designados para que as atividades didticas da es-
cola no sejam prejudicadas.
1. CURSO SOBRE O SISTEMA OPERACIONAL LINUX
destinado queles que desejam conhecer ferramentas padro do ambiente Unix. um
curso voltado para a explorao e organizao de contedo. So ferramentas tipica-
mente usadas por usurios avanados do sistema operacional. Tem por finalidade apre-
sentar alguns dos programas mais simples e comuns do ambiente; mostrar que, mesmo
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
7
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
com um conjunto pequeno de programas, possvel resolver problemas reais; explicar
a comunicao entre programas via rede e estender o ambiente atravs de novos pro-
gramas. O texto didtico deste curso apresenta os recursos a serem estudados e prope
exerccios. um curso para aqueles que gostam de enfrentar desafios.
Ementa: Histrico e desenvolvimento do Unix e Linux. Login no computador. Exploran-
do o computador (processos em execuo, conexes abertas). Descrio dos conceitos
de arquivo e diretrio. Operaes simples sobre arquivos e diretrios. Sistema de per-
misses e quotas.
Procurando arquivos e fazendo backups. Executando e controlando programas.
Processamnto de texto. Expresses regulares. Estendendo o ambiente. Trabalho em
rede. Um sistema de chat. Comunicao segura no chat (criptografia). Ainda criptografia.
Sistema de arquivos como um Banco de Dados. Um programa grfico. Programando
para rede.
2. CURSO DE PROGRAMAO EM JAVA
um curso de programao introdutrio que utiliza a linguagem Java. Essa linguagem
se torna, a cada dia, mais popular entre os programadores profissionais. O curso foi
desenvolvido em forma de tutorial. O participante vai construir na prtica um aplicativo
completo (um jogo de batalha naval) que utiliza o sistema grfico e que pode ser utili-
zado 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 exe-
cuo 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. Pro-
gramao da interface grfica. Arrays. Nmeros aleatrios.
3. CURSO DE INTRODUO AO BANCOS DE DADOS
Este curso mostrar aos participantes os conceitos fundamentais do armazenamento,
gerenciamento e pesquisa de dados em computadores. Um banco de dados um
repositrio de informaes que modelam entidades do mundo real. O Sistema Gerenciador
do Banco de Dados permite introduzir, modificar, remover, selecionar e organizar as
informaes armazenadas. O curso mostra como os bancos de dados so criados e
estruturados atravs de exemplos prticos. Ao final, apresenta os elementos da lingua-
gem SQL (Structured Query Language Linguagem Estruturada de Pesquisa) que uma
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
8
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
linguagem universal para gerenciamento de informaes de bancos de dados e os ele-
mentos 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 volu-
mes 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 estru-
tura 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 mer-
cado.
Construo de uma pgina HTML simples respeitando os padres W3C. Recursos de
formatao de texto. Recursos de listas, multimdia e navegao. Tabelas e Frames.
Folha de Estilo. Elementos de Formulrio. Linguagem Javascript. Interao do Javascript
com os elementos HTML. Linguagem PHP. Conceitos de Transmisso de Site e critrios
para avaliao de servidores.
1. CURSO DE EDITORAO ELETRNICA
Voltado para a produo de documentos fsicos (livros, jornais, revistas) e eletrnicos.
Apresenta as ferramentas de produo de texto e as ferramentas de montagem de ele-
mentos grficos numa pgina. O texto tratado como elemento de composio grfica,
juntamente com a pintura digital, o desenho digital e outros elementos grficos utiliza-
dos para promover a integrao dos elementos grficos.
O curso explora de maneira extensiva os conceitos relacionados aparncia do texto
relativos aos tipos de impresso (fontes). Mostra diversos mecanismos de produo
dos mais variados tipos de material impresso, de texto comum s frmulas matemti-
cas. Finalmente, discute a metodologia de gerenciamento de documentos.
Ementa: Editor de textos. Formatadores de texto. Tipos e Fontes. Gerenciamento de
projetos.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
9
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Publicaes. Programas para editorao. Programas acessrios. Impresso. Desenvolvi-
mento de um projeto.
2. CURSO DE ILUSTRAO DIGITAL
Desenvolvido sobre um nico aplicativo de tratamento de imagens e pintura digital, o
GIMP (GNU Image Manipulation Program Programa de Manipulao de Imagens GNU).
Este curso ensina, passo a passo, como utilizar ferramentas do programa para produzir
ilustraes de qualidade que podem ser utilizadas para qualquer finalidade. A pintura
digital diferente do desenho digital. O desenho se aplica a diagramas e grficos, por
exemplo. A pintura tem um escopo muito mais abrangente e uma forma de criao
mais livre, do ponto de vista formal. basicamente a diferena que h entre o desenho
artstico e o desenho tcnico. , portanto, um curso voltado para aqueles que tm inte-
resses 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 pro-
duzir arranjos musicais. um curso introdutrio com uma boa viso da totalidade dos
procedimentos que levam produo de um disco.
Ementa: O Fenmeno Sonoro. O Ambiente Sonoro. A Linguagem Musical. Pr-Produo.
O Padro MIDI. A Gravao. A Edio. Ps-processamento. Mixagem. Finalizao.
4. CURSO DE COMPUTAO GRFICA
Curso introdutrio de modelagem, renderizao e animao de objetos tridimensionais.
Esse curso a base para utilizao de animaes tridimensionais em filmes. Conduzido
como um tutorial do programa BLENDER, apresenta a interface do programa e suas
operaes elementares. Destinado queles que tm ambies de produzir animaes de
alta qualidade para a educao ou para a mdia.
Ementa: Introduo Computao Grfica. Conceitos bsicos 2D e 3D. Interface princi-
pal 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
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
10
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
de sada. Animao bsica. Movimentao de cmera e objetos. Renderizao da anima-
o. Formatos de sada.
5. CURSO DE PROJETO AUXILIADO POR COMPUTADOR
Os programas de CAD (Computer Aided Design Projeto Auxiliado por Computador) so
utilizados para composio de desenhos tcnicos. Diferentemente dos programas de
pintura eletrnica (como o GIMP), fornecem ao usurio ferramentas para desenhar com
preciso e anotar os desenhos de acordo com as normas tcnicas. Alm de ensinar ao
usurio a utilizar um programa de CAD (QCad), o curso apresenta elementos bsicos de
desenho tcnico e construes geomtricas diversas visando preparar o participante
para um aprimoramento em reas tpicas das engenharias e da arquitetura..Ementa:
Informtica aplicada ao desenho tcnico. Conceitos bsicos: construes geomtricas,
escalas, dimensionamento, projees ortogrficas e perspectivas. Sistemas de coorde-
nadas cartesiano e polar. Novas entidades geomtricas bsicas: polgonos e crculos.
Operaes geomtricas bsicas. Tipos de unidades de medida. Criao de um padro de
formato. Organizao de um desenho por nveis. Construes geomtricas diversas. A
teoria dos conjuntos aplicada ao desenho. Propriedades dos objetos. Edio do dese-
nho.
Movimento, rotao, escalamento e deformao de objetos. Agrupamento de objetos
em blocos.
6. CURSO DE MULTIMDIA NA EDUCAO
O curso est dividido em trs partes: a) utilizao da multimdia no contexto educa-
cional; b) autoria de apresentaes multimdia; c) projetos de aprendizagem mediada
por tecnologia. Este curso o fundamento para a criao dos cursos de educao a
distncia.
Apresenta os elementos que compem os sistemas de multimdia, as comunidades vir-
tuais de aprendizagem, o planejamento e a preparao de uma apresentao e de uma
lio de curso e, finalmente, a tecnologia de objetos de aprendizado multimdia.
Ementa: Introduo Multimdia e seus componentes. Multimdia na Educao. Comu-
nidades Virtuais de Aprendizagem. Webquest: Desafios Investigativos baseados na
Internet (Web).
Preparao de uma apresentao multimdia.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
11
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
SUMRIO
CAPITULO 1 ................................................................................... 15
1 - Introduo ..................................................................................... 15
1.1 - Descrio do banco de dados acadmico ..................................... 16
1.2 - Atributos definem uma entidade................................................ 17
1.3 - Os registros so as ocorrncias de uma entidade no mundo real .... 18
1.4 - Relaes e integridades de dados .............................................. 18
2 - Utilizando o MySQL para criar o banco de dados escolar ...................... 19
2.1 - Criando o banco de dados escolar atravs do MySQL .................... 19
2.2 - Criando e selecionando um banco de dados no MySQL ................. 21
2.3 - Criando as tabelas definidas no modelo ..................................... 22
2.4 - Inserindo informaes no banco de dados ................................. 23
2.5 - Exibindo as informaes contidas no banco de dados .................. 24
3 - Concluses ..................................................................................... 26
4 - Referncias Bibliogrficas ................................................................ 26
CAPTULO 2 ................................................................................... 27
1 - Introduo modelagem de dados ................................................... 27
2 - Descrio de um sistema para controle de uma empresa....................... 27
2.1. Descrio de uma empresa de construo civil .............................. 27
3 - Aspectos gerais do modelo entidade-relacionamento .......................... 28
3.1 - Descrio das entidades problema ............................................. 29
3.2 - Descrio dos relacionamentos do sistema .................................. 30
4 - Modelando as restries de dados do modelo ..................................... 32
4.1 - Restries de atributos ............................................................. 32
4.2 - Integridade referencial ............................................................. 32
4.3 - Normalizao de dados, eliminando a redundncia ...................... 33
5 - Concluses ..................................................................................... 33
6 - Exerccios de fixao........................................................................ 34
7 - Referncias Bibliogrficas ................................................................ 34
CAPTULO 3 ................................................................................... 35
1 - Introduo ferramenta de modelagem DBDesigner4.......................... 35
2 - Introduo ao DBDesigner4 .............................................................. 36
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
12
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
2.1 - Apresentao dos componentes do DBDesigner4 ......................... 36
2.1.1 - Descrio da opo File ..................................................... 37
2.1.2 - Descrio da opo Database ............................................. 38
2.2 - Apresentando a barra de tarefas do DBDesigner4......................... 41
2.2.1 - Criando entidades no DBDesigner4 ..................................... 42
2.2.2 - Definindo os relacionamentos ............................................ 43
3 - Concluses ..................................................................................... 44
4 - Exerccios de fixao........................................................................ 44
5 - Referncias Bibliogrficas ................................................................ 44
CAPTULO 4 ................................................................................... 45
1 - Introduo ..................................................................................... 45
2 - Criando o banco de dados e a conexo para o mesmo ......................... 45
3 - Construo das entidades do modelo ................................................ 46
3.1 - Tipos de dados no MySQL ......................................................... 47
3.2 - Definio das entidades do sistema............................................ 47
3.3 - Definindo os relacionamentos entre as tabelas ............................ 51
3.4 - Convertendo o modelo para o banco de dados curso ................... 54
4 - Concluses ..................................................................................... 54
5 - Referncias Bibliogrficas ................................................................ 54
CAPTULO 5 ................................................................................... 55
1 - Introduo ..................................................................................... 55
2 - Introduo ao MySQL Query Browser .................................................. 55
2.1 - Abrindo uma conexo com o banco de dados curso ..................... 56
3 - Explorando os principais recursos do MySQL Query Browser .................. 57
3.1 - Utilizando o editor de banco de dados ....................................... 57
3.2 - Conhecendo o editor de consultas SQL do sistema ....................... 59
3.2.1 - Inserindo, alterando e excluindo dados em uma planilha...... 59
3.2.2 - Leitura de informaes armazenadas em uma tabela ............. 61
4 - Concluses ..................................................................................... 63
5 - Exerccios de fixao........................................................................ 63
6 - Referncias Bibliogrficas ................................................................ 63
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
13
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 6 ................................................................................... 64
1 - Introduo ..................................................................................... 64
2 - Introduo aos tipos de dados ......................................................... 64
3 - Descrio dos comandos para definio de dados ............................... 65
3.1 - Criando e removendo um banco de dados ................................... 65
3.2 - Criando e removendo tabelas .................................................... 66
3.2.1 - Entendendo o conceito de chave primria ........................... 67
3.2.2 - Entendendo o conceito de chave estrangeira ....................... 69
3.2.3 - Removendo e alterando uma tabela .................................... 71
4 - Concluses ..................................................................................... 72
5 - Exerccios de fixao........................................................................ 72
6 - Referncias Bibliogrficas ................................................................ 72
CAPTULO 7 ................................................................................... 73
1 - Introduo ..................................................................................... 73
2 - Entendendo os comandos DML .......................................................... 73
2.1 - Incluindo dados com o comando INSERT .................................... 73
2.2 - Alterando dados com o comando UPDATE ................................... 77
2.3 - Excluindo dados com o comando DELETE .................................... 78
3 - Introduo aos comandos para leitura de dados ................................. 78
3.1 - O comando SELECT bsico ......................................................... 79
3.2 - Selecionando registros com o WHERE ......................................... 80
3.3 - Agrupando dados com o GROUP BY e selecionando com o HAVING 82
3.4 - Ordenando o resultado com o ORDER BY ..................................... 83
4 - Concluses ..................................................................................... 84
5 - Exerccios de fixao........................................................................ 84
6 - Referncias Bibliogrficas ................................................................ 84
CAPTULO 8 ................................................................................... 85
1 - Introduo ..................................................................................... 85
2 - Tcnicas para extrao de dados em mltiplas tabelas-JOIN ................. 85
2.1 - O produto cartesiano, um erro comum na elaborao do JOIN ...... 87
2.2 - INNER JOIN, uma sintaxe alternativa para a juno de tabelas ...... 89
3 - Entendendo os mecanismos de sub-consultas ..................................... 89
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
14
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
3.1 - Utilizando um SELECT dentro da clusula SELECT ......................... 90
3.2 - Utilizando um SELECT dentro da clusula FROM ........................... 90
3.3 - Utilizando um SELECT dentro da clusula WHERE ......................... 91
3.4 - Agrupando resultados com o comando UNION ............................ 92
4 - Utilizando funes para transformao de dados ................................ 93
5 - Concluses ..................................................................................... 95
6 - Exerccios de fixao........................................................................ 95
7 - Referncias Bibliogrficas ................................................................ 95
CAPTULO 9 ................................................................................... 96
1 - Introduo ..................................................................................... 96
2 - Introduo ao MySQL Administrator .................................................. 97
3 - Explorando as opes da ferramenta MySQL Administrator ................... 98
3.1 - Controle do servio MySQL ........................................................ 98
3.2 - Configurando os parmetros do servidor MySQL .......................... 99
3.3 - Administrao dos usurios do sistema .................................... 100
3.4 - Monitorando a atividade do servidor ........................................ 102
3.5 - Realizando cpias de segurana do banco de dados................... 104
4 - Concluses ................................................................................... 106
5 - Exerccios de fixao...................................................................... 106
6 - Referncias Bibliogrficas .............................................................. 107
CAPTULO 10 ............................................................................... 108
1 - Introduo ................................................................................... 108
2 - Entendendo o controle de transaes .............................................. 109
3 - Utilizando a replicao para obter alta disponibilidade...................... 113
4 - Trabalhando com rotinas armazenadas no SGBD................................ 113
5 - Concluses ................................................................................... 114
6 - Exerccios de fixao...................................................................... 115
7 - Referncias Bibliogrficas .............................................................. 115
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
15
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 1
1. INTRODUO
O conceito de banco de dados bem como as tecnologias de bancos de dados tm ganhado
mais importncia e esto se tornando cada vez mais populares com a expanso da
utilizao dos computadores. No dicionrio encontramos: Computador adj.s.m. 1 (o)
que computa ou calcula, s.m. 2 mquina eletrnica que guarda, analisa e processa da-
dos. 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 pes-
soais. 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, bibliote-
cas, 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 fo-
ram projetados os primeiros sistemas de bancos de dados, objetivando uma sistemati-
zao do acesso aos dados.
Um banco de dados uma coleo de dados relacionados. Entende-se por dado, toda a
informao que pode ser armazenada e que apresenta algum significado implcito den-
tro do contexto ao qual ele se aplica. Por exemplo, ao visualizar uma pessoa conduzin-
do 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 emprega-
do em sistemas distintos. No caso de um sistema bancrio, uma pessoa identificada
pelo seu CPF (cliente). Em um sistema escolar a pessoa identificada pelo seu nmero
de matrcula (aluno). Alm disto, os dados que sero armazenados em cada situao
podem se diferir consideravelmente.
Esta definio de banco de dados bastante genrica, da pode-se considerar como um
banco de dados uma coleo de textos sobre um determinado assunto. No contexto
deste curso, utiliza-se uma definio mais restrita para banco de dados, onde o mesmo
ser sempre a representao de uma situao encontrada no mudo real. Ou seja, um
banco de dados definido dentro de um universo de discurso, isto , a situao real
que ele representa. Para ilustrar, seja um banco de dados para armazenar informaes
referentes s linhas de nibus urbanos existentes em uma cidade. Neste cenrio,
relevante armazenar o nmero, placa e cor dos veculos, j que as linhas so identificadas
pelas cores dos nibus. Portanto, as linhas de nibus urbanas o universo de discurso
desta aplicao, sendo que as informaes somente se aplicam a este ambiente. Certa-
mente se for necessrio manter dados sobre nibus intermunicipais, os requisitos de
dados mudaro, uma vez que alterou o universo de discurso. O universo de discurso
tambm entendido como escopo da aplicao, que na verdade so os limites ou pro-
psitos para os quais os dados serviro.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
16
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Neste mdulo ser apresentado um pequeno banco de dados com o intuito de
exemplificar o que um sistema de banco de dados. Para isto ser utilizado como
exemplo, um sistema acadmico muito rudimentar, onde sero armazenados os alunos
da instituio e as notas obtidas por eles nas avaliaes escolares. Estes elementos
serviro de base para apresentar e conceituar os elementos bsicos que constituem um
banco de dados.
1.1. DESCRIO DO BANCO DE DADOS ACADMICO
O banco de dados descrito nesta seo concebido para representar um pequeno siste-
ma escolar, onde existem basicamente dois componentes que so os alunos matricula-
dos na instituio, bem como as notas obtidas por eles em todas as avaliaes realiza-
das 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 en-
tidades, e que por questes de facilidade, so representadas por tabelas.
Uma entidade todo e qualquer elemento que participa do contexto definido para a
aplicao, e que geralmente se refere a um objeto real dentro deste escopo. Para o sistema
proposto, percebe-se a existncia de duas entidades: 1. Alunos e 2. Pontuao dos alunos
nas avaliaes. A primeira delas tem como objetivo manter um registro de cada aluno matri-
culado na escola. A Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1 ilustra uma estrutura de armazenamento desta entidade.
MATRCULA NOME SRIE TURMA TELEFONE DATA DE NASCIMENTO
1 JOS DA SILVA OITAVA 1 (31)1234-5678 05-10-1982
2 ANA MARIA STIMA 1 (31)3421-5678 17-11-1981
3 PAULO SIMON QUINTA 1 (11)1234-5678 11-04-1983
4 CARLA BEATRIZ SEXTA 1 (21)3344-5678 30-07-1979
5 ANA PAULA OITAVA 2 (92)5555-8888 22-01-1980
A segunda entidade identificada no problema so as pontuaes obtidas por cada alu-
no. Vale ressaltar que durante um perodo letivo podero existir vrias avaliaes, ge-
ralmente em datas diferentes, onde devero ser armazenados os resultados de todos os
alunos para cada um destes testes. A Tabela 2 Tabela 2 Tabela 2 Tabela 2 Tabela 2 descreve a entidade pontuaes, que
serve para o propsito exposto anteriormente.
MATRCULA DATA DO TESTE PONTO
1 25-03-2004 5.5
2 25-03-2004 6
3 25-03-2004 8
4 25-03-2004 10
5 25-03-2004 7.8
1 18-05-2004 4.6
2 18-05-2004 7.2
5 18-05-2004 9.5
Tabela 2:
Definio da
ENTIDADE
pontuao
Tabela 1:
Definio da
ENTIDADE
alunos
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
17
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Percebe-se que cada entidade representada por uma tabela, sendo que neste universo
de discusso ou modelo, existem apenas duas tabelas e um relacionamento entre elas,
j que cada entidade aluno est ligada entidade pontuao. Em aplicaes mais com-
plexas, podero existir inmeras tabelas e relacionamentos de forma a permitir a repre-
sentao do problema abordado.
Dado o banco de dados sugerido anteriormente, as sees seguintes, abordaro os
conceitos de atributos, relacionamentos, integridade de dados e instncias de forma a
contextualiz-los dentro do problema proposto.
1.2. ATRIBUTOS DEFINEM UMA ENTIDADE
Uma entidade, no exemplo alunos e pontuaes, so representadas por tabelas que por
sua vez so constitudas de linhas e colunas. Cada coluna representa um fragmento de
dado e o conjunto de todas as colunas constitui a entidade propriamente dita. No
contexto de banco de dados cada coluna chamada de atributo e uma entidade ser
formada por um ou vrios atributos.
Um atributo define uma caracterstica da entidade, por exemplo, um aluno tem nome,
idade, altura cor dos cabelos, sexo, dentre outras caractersticas. Neste caso o nmero
de atributos existente na tabela, que definem o grau da entidade, depender nica e
exclusivamente de quais dados sero relevantes para representar uma entidade dentro
do escopo que est sendo representado. Isto , no contexto do sistema escolar a cor
dos cabelos no importante, por isto no est representada na tabela.
No sistema descrito a entidade alunos constituda por seis atributos que so o nme-
ro 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 apare-
cer 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 as-
sim a ambigidade. Em um banco de dados caso ocorram registros com valores idnti-
cos no ser possvel determinar um contexto que os identifiquem unicamente, como
ocorre no dicionrio. Por isto, deve existir uma chave ou atributo que identifique unica-
mente cada registro. Ao observar a Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1, percebe-se que no h dois alunos cadas-
trados com o mesmo nmero de matrcula. Portanto, este o atributo chave da entida-
de, utilizado para a pesquisa de um registro nesta tabela.
A entidade pontuaes necessita identificar o aluno, a data da avaliao e a pontuao
atingida pelo aluno. Neste caso, como cada aluno identificado unicamente pela sua
matrcula, este atributo ser inserido na tabela de pontuaes para permitir associar o
aluno nota registrada, conforme visto na Tabela 2 Tabela 2 Tabela 2 Tabela 2 Tabela 2.
Percebe-se que cada atributo possui um conjunto de valores vlidos e aceitveis, que
definido como domnio do atributo. Todas as informaes vistas na tabela so textuais,
isto , seqncias de letras e nmeros, mas notrio que o conjunto de dados contido
em cada coluna diferente umas das outras. No caso da matrcula do aluno, o domnio
dos dados o conjunto dos nmeros inteiros positivos, j que para cada aluno atribu-
do um cdigo numrico que denota a ordem em que este foi matriculado na escola. Ou
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
18
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
seja, o texto contido nesta coluna formado por uma combinao de nmeros, portan-
to no existem letras.
Desta forma cada coluna apresenta restries de dados inerentes ao seu domnio. Por
exemplo, no existir um nmero de matrcula constitudo de letras, j que o mesmo tem
como objetivo marcar a ordem de inscrio dos alunos na instituio. Outros domnios
existentes no modelo, so textos e datas, que so utilizados para representar as demais
informaes das entidades.
1.3. OS REGISTROS SO AS OCORRNCIAS DE UMA ENTIDADE NO MUNDO REAL
Alm das colunas ou atributos, as tabelas possuem tambm uma ou mais linhas ou
registros, conforme visto nas Tabelas 1 Tabelas 1 Tabelas 1 Tabelas 1 Tabelas 1 e 2 22 22. Cada registro representa uma ocorrncia
daquela entidade no mundo real. Por exemplo, na Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1, o registro com o nmero
de matrcula igual a 1 se refere ao aluno Jos da Silva. Existiro tantos registros na
tabela de alunos quantos forem o nmero de alunos matriculados na escola.
A quantidade de registros existentes em uma tabela define a cardinalidade da entidade,
ou seja, o nmero de elementos no conjunto de alunos. Por exemplo, se a escola possui
dez alunos ento o conjunto de alunos desta escola possui dez elementos. Da a sua
cardinalidade tambm ser dez. Vale ressaltar que, como no h dois alunos idnticos
em uma mesma escola, no haver dois registros iguais em uma mesma tabela. Isto
garantido pelo cdigo de matrcula que nico e conhecido como chave primria.
Neste caso, a chave primria no permitir a existncia de valores duplicados para este
atributo.
1.4. RELAES E INTEGRIDADE DE DADOS
No modelo exposto, h um relacionamento entre a tabela de alunos e pontuao. Este
relacionamento caracterizado pelo atributo matrcula que est presente em ambas as
tabelas. Dado que este atributo a chave primria da tabela, isto , no existem dois
alunos com o mesmo nmero de matrcula, esta coluna quando inserida na tabela de
pontuaes permite relacionar um aluno a uma nota obtida.
Na entidade pontuao, no ser possvel utilizar apenas a matrcula do aluno como
chave primria, j que um mesmo aluno poder realizar avaliaes em datas distintas.
Neste caso, o identificador nico para a entidade pontuao ser a combinao da matr-
cula com a data do evento. Mais uma vez, no ser possvel que um mesmo aluno realize
mais de uma avaliao no mesmo dia.
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 assegura-
do pelo sistema de banco de dados a fim de se manter as caractersticas do mundo repre-
sentado por ele. Este conceito implementado atravs das chaves estrangeiras, que nada
mais so que colunas que definem o relacionamento entre entidades. No modelo apresen-
tado a matrcula do aluno representa a chave estrangeira do relacionamento.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
19
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Assim, no se deve permitir a insero de pontuaes para alunos que no estejam cadas-
trados, 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 O MYSQL PARA CRIAR O BANCO DE DADOS ESCOLAR
Um banco de dados armazenado e gerenciado por um Sistema Gerenciador de Banco
de Dados (SGBD). Este sistema tem o objetivo de permitir a definio da sua estrutura
de dados, isto , tabelas e relacionamentos, e gerenciar o acesso a estas informaes. O
SGBD possui mecanismos de consultas que possibilitam a insero, alterao, excluso
e listagem das informaes armazenadas por ele.
Este curso utilizar o SGBD MySQL para ilustrar todos os aspectos prticos de um siste-
ma de banco de dados. A escolha deste SGBD se d pelo fato de o mesmo ser distribudo
gratuitamente e pela sua simplicidade e facilidade de uso. Este sistema pode ser obtido
a partir do site http://www.mysql.com/downloads.
2.1. CRIANDO O BANCO DE DADOS ESCOLAR ATRAVS DO MYSQL
O MySQL um SGBD que ser utilizado durante todo o curso com o intuito de ilustrar o
funcionamento prtico de um banco de dados. Alm de ser obtido gratuitamente a sua
utilizao bastante simples, facilitando o entendimento do mesmo e possibilitando
uma melhor aprendizagem dos conceitos discutidos neste material.
O objetivo desta seo criar, dentro do MySQL, o banco de dados descrito na seo 1.
Aqui sero apresentados os passos a serem seguidos a fim de se realizar esta tarefa.
Para manipular o SGBD preciso iniciar uma conexo com o mesmo. Esta conexo esta-
belece 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 opera-
o dentro do MySQL. Este diferente do root do Linux, que o responsvel pela
administrao do sistema operacional. Possivelmente o acesso ao Linux durante o cur-
so 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
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
20
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
outro lado existem aplicaes que no apresentam estes elementos grficos e, portan-
to, so executadas a partir de um terminal. Utilizando-se a interface grfica KDE, deve-
se proceder conforme indicado na Figura 1 Figura 1 Figura 1 Figura 1 Figura 1.
Feito isto, o terminal se abrir e ento a conexo com o MySQL poder ser estabelecida
conforme a Figura 2 Figura 2 Figura 2 Figura 2 Figura 2.
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 Figura 3 Figura 3 Figura 3 Figura 3 ser mostrada.
Figura 1
Abrindo um
terminal no
Linux
Figura 2:
Estabelecendo
a conexo com
o MySQL
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
21
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Percebe-se que o sistema exibe uma mensagem de boas-vindas e algumas informaes
a respeito do SGBD, tais como a sua verso. A partir deste momento, possvel subme-
ter os comandos para a criao do banco de dados e tabelas. Vale observar que o prompt
mysql>, indica que o SGBD MySQL est sendo utilizado.
2.2. CRIANDO E SELECIONANDO UM BANCO DE DADOS NO MYSQL
Uma vez estabelecida uma conexo com o SGBD, o prximo passo criar um banco de
dados e selecion-lo para uso. Para isto devem-se utilizar os comandos CREATE DATABASE
e USE, conforme ilustrado na Figura 4 Figura 4 Figura 4 Figura 4 Figura 4.
O esquema ilustrado define um banco de dados chamado curso e o seleciona para ser
utilizado nos passos seguintes. Vale ressaltar que um banco de dados neste SGBD repre-
senta uma coleo de tabelas.
Figura 3:
Conexo com o
MySQL
estabelecida
com sucesso
Figura 4: Criando e
selecionando o
banco de dados
curso
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
22
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
2.3. CRIANDO AS TABELAS DEFINIDAS NO MODELO
Uma vez criado e selecionado o banco de dados, possvel definir as tabelas que consti-
tuem 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 con-
forme discutido nas sees 1.2 e 1.4. A Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 ilustra o comando para a criao da
tabela alunos.
A tabela que armazenar a relao de pontos dos alunos criada conforme a Figura 6 Figura 6 Figura 6 Figura 6 Figura 6.
Observe que nela esto definidas as restries de chave estrangeira desta entidade.
Tendo executado os comandos para a criao das tabelas, podem-se examinar as suas
estruturas atravs do comando DESCRIBE, como ilustrado na Figura 7 Figura 7 Figura 7 Figura 7 Figura 7.
Figura 5:
Criao da
tabela de
alunos
Figura 6:
Criao da
tabela de
pontuaes
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
23
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
2.4. INSERINDO INFORMAES NO BANCO DE DADOS
O objetivo desta seo ilustrar a insero dos registros exibidos nas Tabelas 1 Tabelas 1 Tabelas 1 Tabelas 1 Tabelas 1 e 2 22 22,
apresentadas na seo 1. A insero de dados consiste em informar valores para cada atri-
buto 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 Figuras 8 Figuras 8 Figuras 8 Figuras 8 e 9 99 99.
Figura 7:
Verificando a
estrutura das
tabelas atravs
do comando
DESCRIBE
Figura 8:
Insero dos
dados na tabela
de alunos
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
24
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Neste caso, foram inseridos cinco alunos, bem como os oito registros de notas destes alu-
nos. Vale ressaltar que o MySQL armazena datas no formato ano-ms-dia, por isto, na hora
de informar a data de nascimento dos alunos, bem como a data das avaliaes, as mesmas
foram apresentadas no formato compreendido pelo SGBD. Com isto, tem-se a base de dados
preenchida e a partir da torna-se possvel extrair as informaes nela contida.
2.5. EXIBINDO AS INFORMAES CONTIDAS NO BANCO DE DADOS
Nesta seo ilustrado o mecanismo de consultas do banco de dados. O objetivo deste
processo de extrao de informaes de extrema importncia para que se possa acessar
o contedo do banco de dados. Para consultar as informaes deve-se definir 3 ele-
mentos bsicos: 1- as colunas ou atributos que e deseja listar, 2- a(s) tabela(s) que
possui(em) 3- os dados, e finalmente os critrios para a busca dos registros.
A Figura 10 Figura 10 Figura 10 Figura 10 Figura 10 exibe duas consultas que listam todas as colunas e registros das tabelas de
alunos e pontuaes, respectivamente.
Figura 9:
Insero dos
dados na
tabela de
pontuaes
Figura 10:
Listando o
contedo das
tabelas de
alunos e
pontuaes
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
25
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Para ilustrar a utilizao de critrios para a recuperao dos dados, suponha uma listagem
do nome de todos os alunos que nasceram depois de 1980. A Figura 11 Figura 11 Figura 11 Figura 11 Figura 11 ilustra a con-
sulta para a resoluo desta pergunta.
Finalmente, possvel extrair informaes armazenadas em tabelas relacionadas, espe-
cificando 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 Figura 12 Figura 12 Figura 12 Figura 12 fornece a soluo para
este problema.
Figura 11:
Listagem do
nome dos
alunos que
nasceram
depois de
1980
Figura 12:
Listagem do
nome e dos
pontos obtidos
em maro de
2004
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
26
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 mecanis-
mos 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 adian-
te, a fim de que se tenha um entendimento mais aprofundado dos mesmos. O objetivo
principal deste mdulo a introduo e a familiarizao do aluno com os conceitos
bsicos de uma aplicao de banco de dados real.
4. REFERNCIAS BIBLIOGRFICAS
Houaiss, Antnio; Villar, Mauro de Salles. Houaiss Dicionrio da Lngua Portuguesa Houaiss Dicionrio da Lngua Portuguesa Houaiss Dicionrio da Lngua Portuguesa Houaiss Dicionrio da Lngua Portuguesa Houaiss Dicionrio da Lngua Portuguesa.
Rio de Janeiro: Objetiva, 2003.
MySQL AB: MySQL 5.0 Reference Manual MySQL 5.0 Reference Manual MySQL 5.0 Reference Manual MySQL 5.0 Reference Manual MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
Abiteboul, S. Hull, R., and Vianu, V. [1995] Foundations of Databases, Foundations of Databases, Foundations of Databases, Foundations of Databases, Foundations of Databases, Addison-
Wesley, 1995.
Elmasri, Ramez A.; Navathe, Shamkant (200). Fundamentals of Database System Fundamentals of Database System Fundamentals of Database System Fundamentals of Database System Fundamentals of Database System,
Third Edition, Addison-Wesley, Menlo Park, CA.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
27
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 2
1. INTRODUO MODELAGEM DE DADOS
No captulo 1 foi abordada uma pequena aplicao de banco de dados, onde o objetivo
era armazenar informaes sobre alunos de uma determinada escola. Vale lembrar que
um banco de dados na verdade uma representao de entidades inerentes a um pro-
blema 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 siste-
ma 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 tor-
na-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 informa-
es relevantes.
Portanto, para a modelagem de um banco de dados so utilizados diagramas que per-
mitem descrever de forma simples e universal, todos os aspectos importantes do siste-
ma 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 constru-
o e documentao de sistemas de bancos de dados relacionais.
2. DESCRIO 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 DE UMA EMPRESA DE CONSTRUO CIVIL
A empresa de construo civil tem como objetivo projetar e construir obras tais como
prdios, casas, pontes, estradas, para citar algumas de suas atividades. Para isto,
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
28
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
preciso que a empresa possua pessoas ou funcionrios capazes de desempenhar as
diversas tarefas relacionadas a este ramo de negcios. Por exemplo, necessrio que a
empresa contenha em seu quadro de funcionrios engenheiros e arquitetos responsveis
pelo projeto e clculo da infra-estrutura da obra. Alm disto, necessrio ainda que haja
pedreiros e mestres de obras que sero incumbidos de executar o projeto definido pela
equipe de engenheiros. Finalmente, devem-se ter profissionais como eletricistas, bombei-
ros hidrulicos e carpinteiros para que a obra possa ser executada com sucesso.
Para facilitar a coordenao dos trabalhos destes profissionais, a empresa organiza as
pessoas em equipes de acordo com as suas especialidades. Desta forma, estas equipes
so alocadas em uma ou mais obras que estejam sendo desenvolvidas pela empresa de
construo civil. Vale ressaltar que para fazer parte de uma equipe a pessoa deve fazer
parte do quadro de funcionrios da empresa, e caso um funcionrio seja afastado da
empresa, o mesmo deve ser imediatamente retirado da equipe qual ele pertena.
Cada equipe possui um gerente, responsvel por coordenar os trabalhos delegados a
ela, sendo que este deve ser necessariamente um funcionrio da prpria empresa.
preciso salientar que ocorrem situaes onde h mais de uma obra em andamento,
simultaneamente. Da, cada obra ter vrias equipes envolvidas, j que vrias habilida-
des so necessrias para executar a construo da mesma.
Existem equipes que participam de vrias obras ao mesmo tempo, j que as suas tarefas
no requerem dedicao exclusiva a um projeto. Este o caso dos engenheiros, que
podem projetar e acompanhar o desenvolvimento de diversas obras simultaneamente,
sem que haja comprometimento na qualidade do seu trabalho ou at mesmo prejuzos
para o cronograma de execuo das mesmas.
Este um cenrio que descreve uma aplicao real de um sistema de banco de dados.
Percebe-se que este apresenta vrias entidades e restries que devem ser respeitadas a
fim de que o sistema funcione da forma esperada. Para isto, ser criado nas prximas
sees, um modelo ER que descreva todas as particularidades expostas anteriormente,
servindo de base para ilustrar os conceitos que envolvem a modelagem de um banco de
dados relacional.
3. ASPECTOS GERAIS DO MODELO ENTIDADE-RELACIONAMENTO
O modelo Entidade-Relacionamento (ER ou MER) constitui-se em uma simbologia que
permite representar de forma grfica os elementos que definem um sistema de banco
de dados. Basicamente existem smbolos para representar as entidades e os seus atri-
butos, bem como os seus relacionamentos e restries. A Figura 1 Figura 1 Figura 1 Figura 1 Figura 1 ilustra estes compo-
nentes empregados para elaborar um diagrama ER.
Na figura o retngulo simples representa uma enti-
dade forte, enquanto o retngulo com borda dupla
referencia uma entidade fraca. As entidades fortes so
aquelas que no dependem de outras entidades para
que existam. Por outro lado as entidades fracas s
sero encontradas quando houver uma entidade for-
te associada a ela, ou seja, so dependentes de ou-
tras entidades para que existam.
Figura 1:
Smbolos
utilizados para o
desenho de um
diagrama ER
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
29
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Como discutido no captulo 1, toda entidade descrita por um conjunto de atributos
ou colunas, representando as suas qualidades ou caractersticas. No exemplo adotado,
os alunos eram definidos por um nome, nmero de matrcula, srie, turma e data de
nascimento, sendo que o nmero de matrcula era o identificador nico do aluno, co-
nhecido tambm como chave primria.
Os atributos so representados na Figura 1 Figura 1 Figura 1 Figura 1 Figura 1 por crculos preenchidos e no preenchi-
dos, posicionados sobre uma pequena linha. Estes smbolos so colocados sobre as entida-
des as quais eles pertencem, onde sobre eles so especificados os nomes de cada atributo.
Os atributos que formam a chave primria da tabela so representados pelos crculos preen-
chidos, enquanto os demais atributos so representados pelos crculos em branco.
Alm das entidades e seus atributos ou colunas, existem ainda relacionamentos que ocor-
rem entre elas, como o caso de um funcionrio que gerencia uma equipe. Estes relacio-
namentos so representados por losangos que so conectados por linhas s entidades
envolvidas. Da mesma forma que acontece com a representao de entidades, um losango
com borda simples ou dupla denota, respectivamente, relacionamentos fortes e fracos.
Um relacionamento fraco ocorre quando h a participao de pelo menos uma entidade
dependente ou fraca, caso contrrio esta relao ser considerada forte.
importante salientar que os relacionamentos assim como as entidades podem conter
atributos. Como exemplo, se for necessrio armazenar as data de incio e trmino dos
trabalhos de uma equipe em uma determinada obra, estas informaes pertencem ao
relacionamento entre as entidades e no s entidades envolvidas.
Finalmente, no diagrama indica-se a quantidade de participantes de cada entidade no
relacionamento atravs de nmeros colocados sobre as arestas, ou linhas, que conectam
as entidades ao relacionamento. Estes nmeros definem a cardinalidade do relaciona-
mento. No exemplo, um funcionrio poder gerenciar apenas uma equipe.
Com isto esto disponveis os principais elementos que sero utilizados para a constru-
o de um modelo ER. Assim, as sees seguintes elaboram o modelo ER do sistema de
construo civil, utilizando os smbolos apresentados e discutidos at aqui. Este dia-
grama constitui uma linguagem universal, utilizada pelos arquitetos e engenheiros de
software para a documentao dos requisitos de cada aplicao modelada.
3.1. DESCRIO DAS ENTIDADES PROBLEMA
O problema proposto constitudo de vrias entidades que esto apresentadas de for-
ma resumida na Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1.
ENTIDADE TIPO ATRIBUTOS
EMPRESA FORTE CDIGO, NOME, CNPJ E TELEFONE
OBRAS FORTE CDIGO, NOME, DATAS DE INCIO E TRMINO
FUNCIONRIOS FORTE CPF, NOME, DATA DE NASCIMENTO E ENDEREO
CARGOS FORTE CDIGO E DESCRIO
EQUIPES FRACA CDIGO E NOME
Tabela 1: Entidades do banco de dados da construo civil
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
30
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Para facilitar o trabalho de elaborao do diagrama ER, destacam-se na tabela o tipo de
cada entidade, bem como os atributos que as constituem. Estes foram definidos de
forma arbitrria, e a definio dos mesmos estar sempre vinculada ao problema abor-
dado, no existindo nenhuma regra formal para a definio de quais atributos existi-
ro. Observa-se a partir da tabela que os funcio-
nrios so uma entidade forte j que existem in-
dependentemente das demais entidades do mo-
delo. J as equipes so consideradas entidades
fracas, visto que s existiro caso haja funcion-
rios para a sua constituio.
A Figura 2 Figura 2 Figura 2 Figura 2 Figura 2 ilustra um diagrama que descreve os
elementos apresentados na Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1, utilizando
os smbolos apresentados na Figura 1 Figura 1 Figura 1 Figura 1 Figura 1. Este mo-
delo contm todas as entidades do problema pro-
posto na seo 2.1, bem como os atributos que
sero considerados para a soluo do mesmo.
Na figura esto presentes todos os atributos e
aqueles que foram considerados como chave pri-
mria da entidade. Vale ressaltar que, assim como
a escolha dos atributos, a definio de qual (is) atributo (s) compor (o) a chave
primria depende nica e exclusivamente das necessidades especficas da aplicao. Ou
seja, os requisitos de dados do problema determinaro quais os atributos devero exis-
tir para cada entidade do modelo, bem como quais sero o identificador nico ou chave
primria da entidade.
3.2. DESCRIO DOS RELACIONAMENTOS DO SISTEMA
Um relacionamento define uma interao entre duas entidades do modelo. No exem-
plo, existe um relacionamento entre as entidades fun-
cionrios e equipes definindo que toda equipe
gerenciada por um funcionrio, e que um funcion-
rio poder gerenciar apenas uma equipe. Na Figura 3 Figura 3 Figura 3 Figura 3 Figura 3
est apresentado o diagrama que descreve
esquematicamente esta situao.
Todo relacionamento possui uma cardinalidade que
define o nmero de participantes de cada entidade
que estaro presentes nesta interao. Neste caso,
existem trs tipos de relacionamentos:
1- Um para um
2- Um para muitos
3- Muitos para muitos
No relacionamento funcionrio Gerencia equipe, percebe-se que o mesmo possui
cardinalidade de um para um (denotado por 1:1). A cardinalidade representada por
nmeros colocados sobre as arestas que conectam o relacionamento s entidades parti-
cipantes, conforme ilustra a Figura 3 Figura 3 Figura 3 Figura 3 Figura 3. Isto implica que uma equipe possui apenas um
Figura 2:
Diagrama
contendo as
entidades do
modelo e seus
atributos
Figura 3:
Relacionamento
funcionrio
gerencia equipe
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
31
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
gerente, e ao mesmo tempo um funcionrio poder
gerenciar apenas uma equipe.
Existem situaes em que pode haver a participao,
no relacionamento, de um ou mais elementos de uma
das entidades presentes na interao. Se considerar
a formao de uma equipe, nota-se que uma equipe
composta por um grupo de funcionrios. Neste caso,
o relacionamento conhecido como um para mui-
tos, sendo denotado por 1:N. A Figura 4 Figura 4 Figura 4 Figura 4 Figura 4 ilustra esta
situao.
De um modo geral, os relacionamentos um para mui-
tos so os mais comumente encontrados em siste-
mas de bancos de dados. No modelo existem outros
relacionamentos deste tipo, como o caso do relacionamento entre empresa e obras.
Isto , a empresa pode desenvolver vrias obras simultaneamente.
O terceiro e ltimo tipo de relacionamento so aqueles onde podem existir vrias ocor-
rncias de ambas as entidades que participam desta
colaborao. Neste caso, a cardinalidade do relacio-
namento dita de muitos para muitos, e denotada
por N:M. A Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 trs o diagrama que representa
um relacionamento muitos para muitos, ocorrido en-
tre equipes e obras.
No exemplo apresentado na Figura 5, Figura 5, Figura 5, Figura 5, 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 engenha-
ria. 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 en-
to, o diagrama ou modelo ER completo para a aplicao proposta. Assim, deve constar
no modelo todas as
entidades existen-
tes no problema,
seus atributos e re-
l a c i o na me nt o s .
Alm disto, preci-
so salientar no dia-
grama a
cardinalidade de
cada relacionamen-
to, possibilitando
que as restries
inerentes ao pro-
blema sejam docu-
mentadas, propaga-
Figura 4:
Relacionamento
equipe
composta por
funcionrios
Figura 5:
Relacionamento
de equipes que
executam obras
Figura 6:
Modelo ER
completo da
aplicao
proposta
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
32
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
das e respeitadas pelos desenvolvedores do sistema. A Figura 6 Figura 6 Figura 6 Figura 6 Figura 6 contm o diagrama ER
completo para a aplicao da construo civil, descrita na seo 2.1.
4. MODELANDO AS RESTRIES DE DADOS DO MODELO
A fase de modelagem de um banco de dados consiste em identificar os elementos que
compem o problema, bem como a forma como se d a interao entre os mesmos.
Todo modelo deve ressaltar as restries que se aplicam sobre os elementos que cons-
tituem o sistema. Basicamente existem dois tipos de restries que so aquelas aplica-
das aos atributos de cada entidade e as restries de relacionamento. As sees seguin-
tes apresentam mais detalhes sobre estes aspectos.
4.1. RESTRIES DE ATRIBUTOS
Conforme descrito anteriormente, uma entidade definida por um conjunto de atribu-
tos ou colunas. Estes atributos armazenam os dados referentes entidade, por exem-
plo, 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 determina-
da 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 obede-
cidas. 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 uti-
lizando uma ferramenta de modelagem, como o caso do DBDesigner4, que ser apre-
sentado no prximo captulo. Desta forma, cada atributo ter o seu tipo definido pelo
conjunto de dados suportados pelo Sistema Gerenciador de Banco de Dados (SGBD),
que ser utilizado para a soluo do problema.
4.2. INTEGRIDADE REFERENCIAL
A integridade referencial se refere ao cumprimento das restries existentes nos relaci-
onamentos 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
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
33
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
um pai cadastrado no banco devem-se remover os filhos dele, pois do contrrio ficaria
um registro de um filho para um pai desconhecido pelo sistema. Isto geraria uma in-
consistncia 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 comporta-
mentos de cada entidade caso haja uma remoo ou alterao de um dado que participe
de um relacionamento qualquer. Desta forma, garante-se que no haver violao das
restries impostas pelo modelo.
Estas restries so apresentadas no modelo atravs da cardinalidade, que exibida
para cada relacionamento. A construo das chaves estrangeiras foi introduzida no
captulo 1 e sero detalhadas no mdulo que trata do mapeamento do modelo ER para
as tabelas do banco de dados.
4.3. NORMALIZAO DE DADOS, ELIMINANDO A REDUNDNCIA
O conceito de normalizao est ligado ao fato de que no se devem manter informa-
es 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 pode-
ria gerar inconsistncias na base de dados. Caso haja uma alterao do endereo do
funcionrio, esta informao dever ser modificada na tabela de equipes, o que gera
um esforo maior e pode gerar problemas, caso a alterao no seja efetuada em ambos
os locais. Neste caso, existem no sistema dois endereos distintos para um mesmo
funcionrio, o que incorreto ou inconsistente e pode levar a uma concluso errada.
Alm disto, esta abordagem geraria um desperdcio de espao para armazenar a mesma
informao duas vezes. Para evitar estas situaes, deve-se eliminar a redundncia de
dados a fim de se fazer um uso racional do banco de dados. Esta questo ser abordada
com mais detalhes no captulo seguinte, que trata da criao do banco de dados a partir
do modelo ER.
Vale ressaltar que o modelo ER no apresenta nenhuma simbologia que indique qual o
nvel de normalizao desejado. Mas, existem algumas regras que devem ser aplicadas
durante o mapeamento fsico do banco de dados. Estas regras sero abordadas nos
captulos seguintes.
5. CONCLUSES
Este captulo apresentou os fatores relacionados modelagem do banco de dados,
exibindo as notaes e smbolos empregados para desenhar o modelo lgico do banco
de dados. O objetivo prover o conhecimento mnimo a respeito dos constituintes de
um diagrama ER, bem como salientar as restries que devem estar presentes neste
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
34
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
desenho.
Alm disto, os conhecimentos vistos neste captulo sero amplamente utilizados nos
captulos seguintes para que se possa construir o banco de dados para a aplicao
proposta.
6. EXERCCIOS DE FIXAO
1- O que voc entende por atributo?
2- Para que serve uma chave primria de uma entidade?
3- Explique a diferena entre entidades fracas e fortes.
4- D um exemplo de cada uma das entidades do exerccio anterior.
5-. Existem trs tipos de relacionamentos, cite-os.
6- O que um relacionamento? Ilustre com um exemplo.
7- Crie um modelo ER para representar um sistema para armazenar o nome, endereo
(rua, bairro, cidade e estado), telefone e celular de todos os seus amigos.
8- Amplie o ER construdo no exerccio anterior, de forma que seja possvel relacionar
os seus amigos com as escolas em que eles estudam. Para isto, dever ser criada a
entidade escola e o relacionamento entre elas. Os atributos da entidade escola de-
vem ser escolhidos por voc.
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].
Dumpala, S., and Arora, S. [1983] "Schema Translation Using the Entity-Relationship
Approach," in ER Conference [1983].
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
35
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 3
1. INTRODUO FERRAMENTA DE MODELAGEM DBDESIGNER4
O Captulo 2 apresentou uma viso geral dos mecanismos de modelagem de dados,
apresentando os conceitos de entidades, atributos e relacionamentos. Foi discutido o
modelo Entidade-Relacionamento (ER), bem como a simbologia empregada neste tipo
de diagrama, de forma a prover uma comunicao uniforme sobre a estrutura de dados
do problema abordado. Para ilustrar um diagrama ER, foi elaborado um esquema lgico
para uma aplicao de uma empresa de construo civil. O final do processo culminou
em um diagrama ER completo para a aplicao em questo.
O objetivo principal de um modelo lgico de banco de dados permitir a sua implanta-
o utilizando um Sistema Gerenciador de Banco de Dados (SGBD) qualquer. Para isto, o
modelo deve ser convertido em tabelas, de forma a representar as entidades, atributos,
relacionamentos e restries impostas pelo modelo. Para isto, existem ferramentas ou
programas que so construdos com o intuito de facilitar a elaborao destes esquemas
facilitando a sua aplicao em um SGBD.
De um modo geral, estas ferramentas apresentam smbolos que permitem representar
todos os aspectos de um modelo ER. Como cada entidade de um diagrama ER compre-
endida pelo SGBD como uma tabela, estas ferramentas permitem a criao destas tabe-
las, alm de definir as suas colunas ou atributos, bem como definir os seus tipos de
dados. Ainda possvel salientar neste modelo quais so os atributos que definem as
chaves primrias e estrangeiras pertinentes ao problema.
Desta forma, como existem particularidades entre os diversos SGBD disponveis no mer-
cado, preciso escolher a ferramenta de modelagem, geralmente chamadas de ferra-
mentas CASE, que possua suporte para os recursos presentes no SGBD que ser utilizado
para o desenvolvimento da aplicao.
O objetivo deste captulo ilustrar uma ferramenta de modelagem de dados, utilizan-
do-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, elabo-
rar o diagrama que representa o sistema de construo civil. Isto , o modelo ER pro-
posto no captulo 2 ser construdo dentro de uma ferramenta de modelagem.
Neste curso, o MySQL foi adotado como o SGBD padro para ilustrar as aplicaes dos
bancos de dados propostos no decorrer dos captulos. Neste cenrio, preciso fazer
uso de um software que permita a interface com o SGBD MySQL, permitindo explorar
todos os recursos disponveis no mesmo. Da optou-se pela ferramenta chamada
DBDesigner4, que distribuda gratuitamente e pode ser encontrada no site http://
fabforce.net. Esta ferramenta desenvolvida especificamente para o MysQL e possui
suporte ao Sistema Operacional Linux e Windows.
Assim, as sees seguintes fornecem uma viso geral da ferramenta DBDesigner4, apre-
sentando os seus principais recursos, e ilustrando um passo a passo para a sua utiliza-
o na elaborao de um modelo simples de banco de dados.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
36
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
2. INTRODUO AO DBDESIGNER4
Nesta seo sero explorados os principais recursos desta ferramenta de modelagem, que
servir como instrumento de trabalho no decorrer deste curso. Para iniciar o uso desta
ferramenta, preciso invoc-la a partir de um terminal do Linux, conforme ilustrado na
Figura 1 Figura 1 Figura 1 Figura 1 Figura 1. Vale ressaltar que o mesmo deve estar configurado no PATH do Linux.
Ao executar o comando exibido na figura anterior, o sistema abrir uma tela com um
novo modelo em branco, conforme visto na Figura 2 Figura 2 Figura 2 Figura 2 Figura 2.
Nas subsees seguintes, sero apresentados os principais recursos disponveis nesta
ferramenta, de forma a permitir uma utilizao mnima de seus componentes para efe-
tuar a construo de um modelo de banco de dados.
2.1. APRESENTAO DOS COMPONENTES DO DBDESIGNER4
A tela do DBDesigner4 exibida na Figura 2 Figura 2 Figura 2 Figura 2 Figura 2 apresenta um conjunto de elementos que
provem acesso aos mais variados recursos do sistema. No alto da tela encontra-se um
conjunto de opes que d acesso s principais funcionalidades do sistema. A Figura 3 Figura 3 Figura 3 Figura 3 Figura 3
apresenta a janela do sistema com o destaque para este conjunto de opes.
Figura 1:
Iniciando o
uso do
DBDesigner4
Figura 2: Janela
principal do
DBDesigner4
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
37
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Existem basicamente oito tens de menu:
1- File
2- Edit
3- Display
4- Database
5- Plugins
6- Options
7- Windows
8- Help
Estas significam respectivamente em portugus: 1. Arquivo, 2. Editar, 3. Exibir, 4. Ban-
co 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 permi-
tem, respectivamente, adicionar funcionalidades acessrias ao sistema e controlar as
configuraes do seu sistema de modelagem.
Finalmente, as opes Windows e Help fornecem mecanismos para controlar a disposi-
o das janelas do sistema, bem como o acesso a documentao detalhada do mesmo.
Esta documentao pode ser consultada para uma compreenso mais aprofundada do
sistema como um todo.
2.1.1. DESCRIO DA OPO FILE
Esta opo prov os principais mecanismos para a elaborao de um modelo de banco
de dados. Ao acionar este item de menu, ser exibido um conjunto de aes do sistema,
conforme ilustra a Figura 4 Figura 4 Figura 4 Figura 4 Figura 4.
Figura 3: Menu
de opes do
DBDesigner4
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
38
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 fun-
es Open (em portugus significa Abrir) ou Open recent (em portugus significa Abrir
recente). Desta forma, possvel manipular um modelo previamente construdo. Duran-
te a manipulao do seu modelo permitido armazenar ou salvar as alteraes realiza-
das 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 portu-
gus). Por ltimo, para encerrar o sistema o comando Exit, que quer dizer Sair na lngua
portuguesa deve ser utilizado.
2.1.2. DESCRIO DA OPO DATABASE
O DBDesigenr4 apresenta dentre outras caractersticas interessantes um mecanismo de
comunicao do seu modelo lgico com o SGBD que o representa, de forma a possibili-
tar a sincronizao dos dados em ambos os locais. O sincronismo da base de dados
permite recuperar eventuais alteraes que tenham sido feitas nas tabelas ou no mode-
lo, por outras pessoas que utilizam o sistema. A sincronizao neste caso similar ao
ajuste de dois relgios, onde ambos so colocados para apresentar o mesmo horrio.
Desta forma, o modelo representar a nova base de dados, eventualmente modificada,
e vice-versa.
Estas funcionalidades esto disponveis atravs do menu Database (banco de dados)
exibido na Figura 5 Figura 5 Figura 5 Figura 5 Figura 5.
Figura 4:
Explorando a
opo File
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
39
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Existem basicamente trs funcionalidades importantes em relao a esta opo. A pri-
meira 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 repre-
senta uma ligao estabelecida entre o DBDesigner4 e o MySQL, da mesma forma ilus-
trada 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 Figura 6 Figura 6 Figura 6 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 co-
nexo 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 servi-
dores de bancos de dados espalhados geograficamente.
Ao criar uma nova conexo ser exibida uma janela, conforme ilustra a Figura 7 Figura 7 Figura 7 Figura 7 Figura 7.
Figura 5:
Explorando a
opo Database
Figura 6: Abrindo
uma conexo com
o banco de dados
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
40
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Nesta tela devero ser infor-
mados o nome da conexo
(Connection name) e do ban-
co de dados que ser mani-
pulado (Database name),
alm do endereo ou Host
onde se encontra o SGBD.
Quando o servidor MySQL e
o cliente, neste caso o
DBDesigner4, encontram-se
na mesma mquina utiliza-se
o endereo localhost. Final-
mente, deve-se informar o
usurio (Username) e a se-
nha (Password) para a cone-
xo com o SGBD. Perceba que
para o propsito deste cur-
so o Driver ser o MySQL. Fi-
nalizada a entrada de dados
acione o boto Ok e o sistema retornar para a tela exibida na Figura 6 Figura 6 Figura 6 Figura 6 Figura 6, s que agora
contendo a conexo recm criada. Selecione a conexo desejada e aperte o boto Connect
(Conectar), isto iniciar a conexo com o MySQL.
A segunda funcionalidade relacionada ao menu Database a sincronizao com o SGBD,
atravs do item Database synchronisation, que significa Sincronizao do banco de
dados. Este recurso permite converter o modelo lgico construdo em tabelas do seu
SGBD. Assim, toda alterao feita no seu modelo ser propagada para o seu SGBD de
forma automtica. Para isto, execute os passos para iniciar a conexo com o banco de
dados e escolha a opo Database synchronisation. A tela exibida na Figura 8 Figura 8 Figura 8 Figura 8 Figura 8 ser
mostrada neste momento.
Portanto, devem ser selecionadas as op-
es para a sincronizao, isto , se o sis-
tema ir apagar as tabelas existentes no
SGBD ou no (Dont delete existing tables,
que quer dizer No apagar tabelas existen-
tes). Definido estes parmetros basta aper-
tar o boto Execute (Executar) e observar
os detalhes da execuo do processo, que
so exibidos na janela Progress (Progres-
so).
O terceiro e ltimo recurso relativo ma-
nipulao do banco de dados o oposto
do que foi apresentado anteriormente.
Existem situaes em que desejvel fa-
zer a converso da estrutura dos dados ar-
mazenada no seu SGBD para um modelo
lgico dentro do DBDesigner4. Esta fun-
o realizada pelo Reverse engineering,
Figura 7:
Criando uma
nova conexo
com o banco
de dados
Figura 8:
Sincronizao
do modelo com
o SGBD
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
41
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
ou Engenharia reversa, que
mostrada na Figura 9 Figura 9 Figura 9 Figura 9 Figura 9.
Nesta janela devero ser in-
formados os parmetros para
que o DBDesigner4 faa a en-
genharia reversa do seu ban-
co de dados, isto , construa
o modelo a partir dos dados.
Basicamente sero informa-
das as tabelas a serem con-
vertidas e a forma com a qual
o DBDesigner4 criar os re-
lacionamentos entre estas ta-
belas (Build relations
Construir relacionamentos).
Com isto, possvel criar uma
interface entre o modelo ge-
rado pelo DBDesigner4 e o
SGBD que armazenar as informaes deste modelo. Desta forma permitida a manu-
teno da consistncia entre o modelo lgico e fsico do seu banco de dados.
2.2. APRESENTANDO A BARRA DE TAREFAS DO DBDESIGNER4
A barra de tarefas do DBDesigner4 fica posicionada na parte esquerda do sistema, e
prov acesso aos principais elementos utilizados para a elaborao do modelo ER, tais
como as entidades e os relacionamentos. A Figura 10 Figura 10 Figura 10 Figura 10 Figura 10 trs uma janela da aplicao com
um destaque para esta barra de tarefas. Os componentes desta parte do sistema sero
discutidos nas prximas subsees.
Figura 9:
Engenharia
reversa de um
banco de
dados
Figura 10: Barra
de tarefas do
DBDesigner4
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
42
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
2.2.1. CRIANDO ENTIDADES NO DBDESIGNER4
Em uma ferramenta de modelagem toda entidade representada por uma tabela, faci-
litando assim a converso do modelo para dentro do SGBD. Deste modo, para criar uma
tabela no modelo basta clicar no boto referente tabela e clicar na rea de desenho da
ferramenta, conforme ilustra a Figura 11 Figura 11 Figura 11 Figura 11 Figura 11.
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 Figura 12 Figura 12 Figura 12 Figura 12.
Na figura anterior o nome da tabela ou entidade foi alterado para Pais, e foram defini-
dos 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
Figura 11:
Criando uma
tabela
Figura 12:
Tabela para
armazenar os
pais
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
43
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
propriedades variam de acordo com o tipo escolhido. Por exemplo, o INT possui AI,
que significa Auto Incremento que possibilita a gerao de nmeros seqenciais. En-
quanto as colunas textuais no possuem esta propriedade.
Outro detalhe que os atributos chave primria so identificados por uma chave dese-
nhada 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 procedi-
mento realizado para a tabela Pais para cada tabela do seu sistema. Vale ressaltar que
as mesmas podem ser posicionadas em qualquer local da tela de edio do modelo.
2.2.2. DEFININDO OS RELACIONAMENTOS
Existem trs tipos de relacionamentos entre as entidades que so um
para um, um para muitos e muitos para muitos. No DBDesigner4, para
criar este tipo de relacionamento, basta selecionar na barra de tarefas o
tipo de relacionamento desejado e clicar nas entidades que formam a
relao. A Figura 13 Figura 13 Figura 13 Figura 13 Figura 13 exibe os componentes para a definio destes ele-
mentos.
Para ilustrar a criao de um relacionamento, suponha que fosse neces-
srio armazenar os Pais e os seus respectivos filhos. Desta forma, natu-
ral que o relacionamento seja do tipo um para muitos, j que um pai
pode ter mais de um filho associado. Para realizar esta tarefa, acione o
relacionamento 1:N, clique na entidade com cardinalidade 1, neste caso
Pais. Depois clique na segunda entidade, isto , com cardinalidade N,
que so os Filhos. Feito isto aparecer a situao ilustrada pela Figura Figura Figura Figura Figura
14 14 14 14 14.
1 PARA MUITOS
MUITOS PARA MUITOS
1 PARA 1
Figura 13: Tipos de relacionamentos no DBDesigner4
Figura 14:
Relacionamento 1:N
entre Pais e Filhos
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
44
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Assim, nota-se o aparecimento de uma conexo
entre a tabela Pais e Filhos, com uma marcao
que define os lados 1 e N da relao. Para editar
as propriedades do relacionamento basta utilizar
um clique duplo sobre o mesmo e a janela apre-
sentada na Figura 15 Figura 15 Figura 15 Figura 15 Figura 15 aparecer.
Neste caso, possvel definir o nome do relacio-
namento, bem como as restries de integridade
do mesmo. No exemplo, ao remover ou alterar um
Pai que tenha Filhos o sistema poder assumir a
postura de modificar ou excluir todos os filhos
(Cascade), ou no permitir a alterao/excluso
de um pai que possua filhos (Restrict). As demais
restries apresentadas na figura so pouco utili-
zadas e no sero abordadas no contexto deste
livro.
3. CONCLUSES
O objetivo principal deste mdulo foi introduzir os conhecimentos bsicos sobre a fer-
ramenta 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 seguin-
te, esta ferramenta ser empregada para o desenho do modelo ER da aplicao concebi-
da no Captulo 2. Alm disto, sero utilizados os recursos de manipulao do banco de
dados a fim de mapear o modelo gerado para dentro do SGBD MySQL.
4. EXERCCIOS DE FIXAO
1- Descreva com suas palavras qual o objetivo da ferramenta DBDesigner4.
2- Como pode ser obtida esta ferramenta?
3- Por que o DBDesigner4 foi escolhido para ser utilizado neste curso? Existe alguma relao
com o uso do MySQL?
4- Quantas so as opes de menu do DBDesigner4. Cite-as.
5- O que voc entende por sincronizao de banco de dados?
6- Descreva o procedimento para criar uma nova conexo com o banco de dados a partir do
DBDesigner4.
7- Crie uma tabela para armazenar o nome, a idade e o telefone de todos os seus familiares.
8- Crie um modelo ER, utilizando o DBDesigner4, para representar o sistema que voc cons-
truiu no exerccio 8 do captulo 2.
5. REFERNCIAS BIBLIOGRFICAS
FabForce.net: DBDesigner4 online documentation. Disponvel em: http://
www.fabforce.net/dbdesigner4/doc/index.html. Acesso em: 20 dez. 2005.
Figura 15: Definindo as propriedades do
relacionamento Pais e Filhos
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
45
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 4
1. INTRODUO
Os captulos iniciais deste livro tiveram como objetivo a conceituao de um modelo
lgico de banco de dados, bem como apresentar uma pequena introduo s aplicaes
que utilizam estas estruturas de dados. Com o intuito de formalizar os conceitos da
modelagem de um sistema real, foi apresentada uma aplicao para controle de uma
empresa de construo civil. A discusso culminou com o diagrama ER ou modelo lgi-
co do banco de dados, que por comodidade ilustrado novamente pela Figura 1 Figura 1 Figura 1 Figura 1 Figura 1.
Posteriormente definio do diagrama ER, abordou-se os aspectos prticos da utiliza-
o de uma ferramenta de modelagem. Este tpico ilustrou os mecanismos para a ela-
borao de um modelo lgico dentro de um ambiente que permitia a comunicao com
o Sistema Gerenciador de Banco de Dados (SGBD).
Portanto, neste captulo sero utilizados os conhecimentos adquiridos at o momento
para que se possa criar o modelo exibido na Figura 1 Figura 1 Figura 1 Figura 1 Figura 1, utilizando a ferramenta
DBDesigner4. O objetivo final projetar o diagrama ER e aplicar este modelo ao MySQL,
criando um banco de dados que ser chamado de curso.
Assim, as sees seguintes ilustram passo a passo, os caminhos que devem ser seguidos
para a obteno deste banco de dados.
2. CRIANDO O BANCO DE DADOS E A CONEXO PARA O MESMO
O primeiro passo a ser dado no sentido de construir o banco de dados para a aplicao
de construo civil, justamente criar o banco de dados no MySQL e criar uma conexo
no DBDesigner4 que permita acess-lo. Desta forma, ser possvel criar um interface
com o SGBD, e permitir sincronizar com o MySQL o modelo lgico gerado.
Para criar um banco de dados, inicie uma conexo com o MySQL atravs de um terminal
no Linux e execute o comando CREATE DATABASE, conforme ilustra a Figura 2 Figura 2 Figura 2 Figura 2 Figura 2.
Figura 1: Modelo
Entidade-
Relacionamento
do sistema de
construo civil
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
46
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 Figura 3 Figura 3 Figura 3 Figura 3 fornece as configuraes
da conexo chamada de ConstrucaoCivil.
Vale ressaltar que o endereo
do servidor MySQL o mes-
mo onde se encontra o
DBDesigner4, por isto foi uti-
lizado localhost. O banco de
dados o curso, e o usurio
root, sem senha ser utiliza-
do para estabelecer a cone-
xo com o MySQL. Feito isto,
basta clicar em Ok, selecio-
nar a conexo
ConstrusoCivil e acionar o
boto Connect (Conectar). As-
sim, estar estabelecida a co-
municao do DBDesigner4
com o banco de dados curso.
3. CONSTRUO DAS ENTIDADES DO MODELO
Nesta seo sero criadas as entidades do modelo proposto, que so Empresa, Cargos,
Funcionrios, Equipes e Obras. Para isto, a subseo 3.1 faz uma pequena introduo
aos tipos de dados suportados pelo MySQL de forma a permitir a criao dos atributos
ou colunas de cada entidade identificada anteriormente.
Figura 2:
Utilizando o
MySQL para a
criao do banco
de dados curso
Figura 3:
Conexo
para acesso
ao banco
de dados
curso
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
47
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
3.1. TIPOS DE DADOS NO MYSQL
O MySQL apresenta um vasto conjunto de dados que permite a representao das mais
variadas informaes existentes no mundo real. Por exemplo, possvel criar uma colu-
na 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 descri-
tos aqui. Maiores informaes sobre todos os tipos de dados existentes no MySQL po-
dem 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 Tabela 1 Tabela 1 Tabela 1 Tabela 1 apresenta um resumo dos tipos de atributos que
sero utilizados no modelo proposto.
CATEGORIA TIPO DESCRIO
NMEROS INTEGER NMEROS INTEIROS
DOUBLE NMEROS REAIS OU PONTO-FLUTUANTE
TEXTOS CHAR(X) TEXTO COM TAMANHO MXIMO DE X CARACTERES
DATA E HORA DATE DATA NO FORMATO AAAA-MM-DD
TIME HORA NO FORMATO HH:MM:SS
Tabela 1: Principais tipos de dados do MySQL
Desta forma, possvel definir as restries de domnio dos seus atributos, uma vez que
os mesmos devero respeitar o tipo de dados definido para ele. Isto , no ser poss-
vel armazenar uma informao textual em uma coluna de data, eliminando assim as
inconsistncias. Tendo em vista os tipos de dados ilustrados nesta seo possvel
elaborar o diagrama para todas as entidades do sistema, conforme mostrado na seo
3.2.
3.2. DEFINIO DAS ENTIDADES DO SISTEMA
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 entida-
de 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 emprega-
dos 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 Figura 4 Figura 4 Figura 4 Figura 4 apresenta a tela de edio de tabelas do aplicativo, onde esto descritos
todos os atributos da entidade Empresa.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
48
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Portanto a empresa constituda de quatro colunas, uma do tipo numrico represen-
tando a chave primria da tabela, e trs atributos do tipo texto para armazenar as
demais informaes. Percebe-se na figura a expanso das opes de tipos para a coluna
telefone. notria a existncia de outros tipos que no foram apresentados na Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1.
A segunda entidade do modelo so as obras, que tambm so descritas por um cdigo
numrico, um nome e as datas de incio e trmino das mesmas. A Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 descreve esta
tabela.
A prxima tabela do sistema a que armazena os funcionrios da empresa. Esta tabela
apresenta uma chave primria definida pelo atributo CPF, que ser representado por um
texto de tamanho 20. Alm disto, existem os atributos nome, data de nascimento e
telefone de contato do funcionrio. A Figura 6 Figura 6 Figura 6 Figura 6 Figura 6 fornece o esquema deste objeto.
Figura 5:
Definio da
tabela Obras
Figura 4:
Definio da
tabela
Empresa
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
49
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
As informaes de cargos dos funcionrios sero armazenadas na tabela Cargos, que apre-
senta apenas dois atributos. O primeiro um cdigo numrico que identifica o cargo, e o
segundo o nome ou descrio do cargo. A Figura 7 Figura 7 Figura 7 Figura 7 Figura 7 ilustra a definio desta tabela.
Finalmente, a Figura 8 Figura 8 Figura 8 Figura 8 Figura 8 fornece a representao da entidade equipe que responsvel
por agrupar um conjunto de funcionrios de uma determinada especialidade. Assim
como a entidade obras, uma equipe contm apenas um nome e um cdigo que a identi-
fica. Vale ressaltar que no h nenhuma forma de identificar uma entidade fraca quan-
do se utiliza uma ferramenta de modelagem.
Figura 7:
Definio da
tabela
Cargos
Figura 6:
Definio da
tabela
Funcionrios
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
50
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Este ponto marca o fim da definio das entidades ou tabelas do sistema. Assim, a
situao em que se encontra o modelo exemplificada pela Figura 9 Figura 9 Figura 9 Figura 9 Figura 9.
Assim, tendo construdo todas as tabelas do sistema resta ainda definir os relaciona-
mentos entre os objetos, bem como as restries e cardinalidades pertinentes ao pro-
blema. Esta tarefa descrita com detalhes na prxima seo.
Figura 9:
Ilustrao das
5 tabelas do
sistema para
construo
civil
Figura 8:
Definio da
tabela Equipes
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
51
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
3.3. DEFININDO OS RELACIONAMENTOS ENTRE AS TABELAS
O objetivo desta seo elaborar os relacionamentos existentes entre as enti-
dades 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 expos-
tos 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, razo-
vel 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 funcio-
nrios 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 algu-
ma equipe, esta referncia dever ser excluda tambm. Ou seja, nos campos
On delete e On update utiliza-se a restrio CASCADE, que realiza exata-
mente esta tarefa. A Figura 10 Figura 10 Figura 10 Figura 10 Figura 10 ilustra a situao descrita.
Para o caso de relacionamentos do tipo um para muitos, a chave primria da
entidade do lado um ser colocada na tabela com vrias ocorrncias (N). Com
isto possvel identificar a interdependncia entre as entidades. Neste caso,
aciona o elemento 1:N, clica na entidade 1 e depois na entidade N para cons-
truir o relacionamento corretamente. As Figuras 11, 12, e 13 Figuras 11, 12, e 13 Figuras 11, 12, e 13 Figuras 11, 12, e 13 Figuras 11, 12, e 13, representam
respectivamente os relacionamentos Equipes so compostas por Funcionrios,
Funcionrios possuem Cargos e Empresa constri Obras.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
52
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 relacio-
namento ilustrado na Figura 13 Figura 13 Figura 13 Figura 13 Figura 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.
Figura 10:
Relacionamento
Funcionrio
gerencia Equipe
Figura 12:
Relacionamento
Funcionrios
possuem
Cargos
Figura 11:
Relacionamento Equipes
so compostas por
Funcionrios
Figura 13:
Relacionamento
Empresa
constri Obras
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
53
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Figura 14:
Relacionamento
Equipes
executam
Obras e Obras
so
executadas por
Equipes
Figura 15:
Diagrama
completo da
aplicao
O ltimo relacionamento : equipes executam obras. Neste caso o tipo do relaciona-
mento 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 Figura 14 Figura 14 Figura 14 Figura 14 ilustra esta situao.
Percebe-se na realidade que um relacionamento de muitos para muitos convertido
automaticamente para dois relacionamentos do tipo um para muitos. Isto feito a
partir da introduo de uma nova tabela, que no exemplo foi chamada de
Obras_has_equipes.
Com isto, est concludo o modelo do banco de dados da construo civil e o diagra-
ma gerado apresentado na Figura 15 Figura 15 Figura 15 Figura 15 Figura 15.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
54
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
3.4. CONVERTENDO O MODELO PARA O BANCO DE DADOS CURSO
Uma vez concluda a modelagem do
sistema possvel utilizar a funciona-
lidade de sincronizao de dados do
DBDesigner4 para criar as tabelas den-
tro do MySQL. O procedimento para
realizar esta tarefa foi apresentado
com detalhes no captulo anterior,
portanto no ser exposto novamen-
te. A Figura 16 Figura 16 Figura 16 Figura 16 Figura 16 ilustra a execuo da
rotina de sincronizao de dados.
Desta forma, est disponvel no ban-
co curso gerenciado pelo MySQL, to-
das as tabelas e atributos descritos
no modelo lgico. Vale lembrar que
toda alterao feita no modelo po-
der ser refletida no banco curso
atravs desta prtica. Isto seria neces-
srio no caso de outros usurios do ban-
co terem realizados alteraes no mo-
delo ou nas tabelas e desejarem obter a
verso mais atual do mesmo.
4. CONCLUSES
Neste captulo foi elaborado um mo-
delo lgico do sistema de construo
civil, a partir da utilizao de uma ferramenta de modelagem de dados. Com isto,
finaliza-se a discusso sobre os aspectos do desenho da aplicao, possibilitando a
extenso destes conhecimentos para desenvolver novos sistemas.
Os captulos posteriores abordaro questes mais ligadas utilizao dos dados arma-
zenados no SGBD, isto , tcnicas de consultas e extrao de dados destes bancos de
dados projetados at aqui.
5. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
FabForce.net: DBDesigner4 online documentation. Disponvel em: http://
www.fabforce.net/dbdesigner4/doc/index.html. Acesso em: 20 dez. 2005.
Figura 16:
Sincronizao
do modelo com
o banco curso
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
55
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 5
1. INTRODUO
A utilizao de um Sistema Gerenciador de Banco de Dados (SGBD) tem como objetivo
principal facilitar o armazenamento e a manipulao das informaes armazenadas por
ele. Para isto inicialmente preciso projetar o banco de dados e document-lo, confor-
me 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, Lingua-
gem de Consulta Estruturada. Esta linguagem foi introduzida de forma rpida no cap-
tulo 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 con-
sultas. O sistema que ser utilizado neste livro ser o MySQL Query Browser que pode ser
obtido gratuitamente a partir do site http://www.mysql.com/downloads. Este produto
possui suporte para os Sistemas Operacionais (SO) Linux e Windows e servir como
ambiente de suporte ao desenvolvimento de consultas SQL no decorrer deste curso.
Portanto, o objetivo deste captulo apresentar as principais caractersticas desta fer-
ramenta de forma a possibilitar o seu entendimento e utilizao para a consulta ao
banco de dados.
2. INTRODUO AO MYSQL QUERY BROWSER
O MySQL Query Browser, assim como o DBDesigner4, conhecido como um cliente MySQL,
j que permite a comunicao entre o usurio do SGBD, que pode ser uma pessoa ou
sistema que utilize o MySQL como repositrio de dados, e o prprio SGBD. Neste caso, o
MySQL Query Browser fornece uma interface amigvel para a visualizao e manipulao
dos bancos de dados mantidos pelo MySQL.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
56
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 exibi-
dos pela ferramenta. Neste caso, no necessrio escrever o comando SQL, a ferramen-
ta 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 anteri-
ormente, e finalmente apresentar as principais funcionalidades desta ferramenta.
2.1. ABRINDO UMA CONEXO COM O BANCO DE DADOS CURSO
Para iniciar o uso do MySQL Query Browser, basta abrir um terminal no Linux e invocar o
programa digitando o seu nome no prompt de comandos. Neste ponto deve-se garantir
que o mesmo est instalado e configurado para que esteja disponvel no PATH do Linux.
Assim, ao digitar mysql-query-browser no terminal do Linux, a tela exibida na Figura 1 Figura 1 Figura 1 Figura 1 Figura 1
aparecer imediatamente.
No campo Stored Connection (Conexes armaze-
nadas), 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 in-
formar 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 mqui-
na, por isto utiliza-se localhost para identificar o
endereo do servidor MySQL. Outro parmetro para
a conexo a porta que o MySQL utiliza, por pa-
dro a 3306, conforme indicado na Figura 1 Figura 1 Figura 1 Figura 1 Figura 1.
Toda conexo ao SGBD requer um usurio
Username (nome do usurio), que neste caso ser
utilizado o root, da mesma forma que as situa-
es anteriores, e a senha digitada no campo Password (Senha). No caso o usurio root
no possui senha, portanto este campo dever ser mantido vazio. Finalmente, deve-se
escolher qual o Default Schema, ou seja, o Esquema de banco de dados padro. No
contexto de um SGBD um esquema se refere todos os objetos que compe a base de
dados do sistema. Neste caso, seriam o banco de dados e suas tabelas, procedimentos,
vises, dentre outros. No caso do MySQL, um esquema compreendido como um banco
de dados. Neste caso ser informado o nome do banco de dados que se deseja trabalhar
durante a conexo com o SGBD. Vale ressaltar que este banco de dados pode ser alterado
Figura 1: Tela
para conexo do
MySQL Query
Browser com o
MySQL
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
57
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
posteriormente caso seja necessrio. Para efeito de ilustrar a ferramenta, ser utilizado
o banco de dados curso construdo no captulo 4.
Definidos os parmetros basta acionar o boto Ok para estabelecer a conexo com o
banco de dados desejado. Assim, a tela exibida na Figura 2 Figura 2 Figura 2 Figura 2 Figura 2 aparecer e possvel ver
direita o banco de dados curso selecionado, bem como as tabelas que o compe.
Os principais elementos do sistema so o editor de consultas, localizado no topo da
janela e o editor de banco de dados na lateral direita da tela, onde so exibidos todos
os bancos de dados disponveis no SGBD. Percebe-se a existncia de apenas trs ban-
cos, e em destaque o banco de dados curso, selecionado durante a conexo com o
SGBD. Alm disto, a janela ResultSet (Conjunto Resultante), o local onde os resultado
das consultas sero exibidos pelo sistema.
Na seo 3 estes elementos do sistema sero apresentados com maior detalhe, salien-
tando as suas utilizaes em situaes de acesso ao banco de dados curso.
3. EXPLORANDO OS PRINCIPAIS RECURSOS DO MYSQL QUERY BROWSER
O Objetivo desta seo ilustrar o editor de banco de dados desta ferramenta exibindo
a sua capacidade para a definio e alterao de tabelas e, o editor
de consultas SQL. Este permite criar manualmente ou automatica-
mente as consultas a serem submetidas ao SGBD, facilitando a mani-
pulao das informaes armazenadas.
3.1. UTILIZANDO O EDITOR DE BANCO DE DADOS
A Figura 3 Figura 3 Figura 3 Figura 3 Figura 3 apresenta em destaque o editor de banco de dados do
MySQL Query Browser, que fornece acesso aos diversos repositrios
de dados gerenciados pelo MySQL.
Figura 2:
Conexo com
o banco de
dados curso
atravs do
MySQL Query
Browser
Figura 3: Detalhe do editor de banco
de dados do MySQL Query Browser
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
58
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Observa-se na figura a existncia de trs bancos de dados, que so curso que est
selecionado o mysql e o test que vm criados por padro no MySQL. Este editor prov,
alm da capacidade de visualizar as tabelas de um banco de dados, as funes de criar
e excluir um esquema ou banco de dados, ou criar, excluir e alterar uma tabela, bem
como copiar o comando SQL para a criao da tabela. Assim como feito atravs do
DBDesigner4, possvel criar e alterar a estrutura de uma determinada tabela para isto
basta acionar o boto da direita do mouse sobre a tabela desejada e selecionar Edit
table (Editar tabela), conforme indica a Figura 4 Figura 4 Figura 4 Figura 4 Figura 4.
A Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 ilustra a edio da tabela de cargos a partir do editor de tabelas do MySQL
Query Browser.
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 mode-
lagem com recursos de sincronizao de dados, conforme o DBDesigner4 prov.
Figura 4:
Acionando o
editor de
tabela do
MySQL Query
Browser
Figura 5: Editor
de tabelas do
MySQL Query
Browser
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
59
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
3.2. CONHECENDO O EDITOR DE CONSULTAS SQL DO SISTEMA
O MySQL Query Browser apresenta mecanismos sofisticados para a elaborao de con-
sultas 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 pro-
fundos conhecimentos da linguagem de consulta SQL. Nas subsees seguintes sero
explorados os recursos para a elaborao de consultas disponveis dentro desta ferramenta.
3.2.1. INSERINDO, ALTERANDO E EXCLUINDO DADOS EM UMA TABELA
Para ilustrar a insero de dados em uma tabela a partir do MySQL Query Browser,
considera-se a incluso dos cargos de engenheiro, arquiteto e pedreiro, com os cdigos
1, 2 e 3, respectivamente. O primeiro passo ir at o editor de banco de dados e dar um
duplo clique sobre a tabela em que se deseja inserir as informaes, neste caso a tabela
cargos. Neste momento, aparecer no editor de resultados ResultSet 1 uma tabela
vazia com duas colunas cdigo e nome, que so os atributos da tabela de cargos. Alm
disto, no editor de consultas no alto da tela, aparece a consulta SQL que lista todas as
colunas da tabela, gerada automaticamente pela ferramenta, que select * from car-
gos c. A Figura 6 Figura 6 Figura 6 Figura 6 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 Figura 7 Figura 7 Figura 7 Figura 7 destaca os botes
a serem utilizados nesta operao e o resultado final da incluso dos trs registros.
Figura 6:
Tela com a
tabela de
cargos sem
registros
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
60
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 Figura 8 Figura 8 Figura 8 Figura 8 ilustra este procedimento e o registro modificado.
Alm da possibilidade de inserir e alterar um registro de uma tabela preciso que a
ferramenta fornea recursos para a excluso de registros ou linhas da tabela. Assim
como os demais procedimentos descritos anteriormente, acione o boto Edit, selecione
o registro a ser excludo e ento acionando o boto direito do mouse escolha a opo
Delete Row(s) (Remover registro(s)), conforme ilustra a Figura 9 Figura 9 Figura 9 Figura 9 Figura 9.
Figura 7:
Ilustrao da
insero de trs
registros na
tabela cargos
Figura 8:
Alterao do
cargo de
engenheiro
para
engenheiro
civil
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
61
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Finalmente para confirmar a operao acione o boto Apply Changes, localizado na
parte inferior da tela de resultados, e assim o registro ser eliminado da tabela defini-
tivamente.
Desta forma, conclui-se a execuo das principais tarefas para a manuteno de infor-
maes contidas em um banco de dados, a partir da interface fornecida pelo MySQL
Query Browser. Vale ressaltar que este procedimento relativamente simples e intuiti-
vo, j que no exige conhecimentos avanados sobre o SQL para realizar as operaes.
Este um dos benefcios desta ferramenta grfica.
3.2.2. LEITURA DE INFORMAES ARMAZENADAS EM UMA TABELA
Um banco de dados um repositrio de dados cujas informaes esto acessveis para
os seus usurios. Portanto, preciso realizar a leitura das informaes armazenadas
neste conjunto de tabelas, e o MySQL Query Browser fornece recursos para executar esta
tarefa.
A leitura de todas as informaes de uma tabela pode ser feita a partir de um duplo
clique sobre o nome da tabela. Neste caso so mostrados todos os registros e colunas da
tabela, no editor de resultados, conforme visto na subseo anterior. Porm, em situa-
es reais torna-se necessrio especificar critrios ou filtros para a seleo de dados.
A filtragem de dados consiste em escolher um subconjunto de dados dentro de um
conjunto maior de informaes. Por exemplo, uma pessoa pode optar por utilizar um
determinado nibus dentre as vrias linhas existentes na sua cidade. Isto a filtragem
de dados. A escolha de qual nibus utilizar baseada no destino ao qual se pretende
chegar, ou seja, dentre as diversas linhas existentes selecionam-se apenas aquelas que
levam at ao local desejado. Neste caso, o destino da viagem representa o critrio de
filtragem.
Alm de filtrar os registros de uma tabela pode-se ainda restringir as colunas que sero
retornadas pela consulta. Por exemplo, deseja-se exibir apenas o nome dos funcionri-
os, em vez de todas as colunas. Neste caso, o MySQL Query Browser oferece um conjunto
de ferramentas para a elaborao de consultas mais complexas. Estes componentes so
ilustrados na Figura 10 Figura 10 Figura 10 Figura 10 Figura 10.
Figura 9:
Excluso do
cargo pedreiro
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
62
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 cadas-
trados, 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 exibi-
do na janela de resultados, conforme ilustra a Figura 11 Figura 11 Figura 11 Figura 11 Figura 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.
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. Supon-
do 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 Figura 12 Figura 12 Figura 12 Figura 12 ser exibido.
Figura 10:
Componentes
para a
construo de
consultas para
leitura de dados
Figura 11:
Listagem dos
nomes de todos
os cargos
Figura 12:
Seleo do
nome do cargo
com o cdigo 1
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
63
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Assim, possvel fazer a leitura dos dados armazenados no banco de dados a partir da
utilizao de recursos grficos e automticos de navegao, providos pela ferramenta
apresentada neste captulo.
4. CONCLUSES
Um banco de dados tem a funo de armazenar informaes e possibilitar o acesso s
mesmas. Para isto, deve-se utilizar uma linguagem de consulta para realizar esta tarefa.
O objetivo deste captulo foi apresentar uma ferramenta de consulta que permita a
interao com o banco de dados de forma automtica e sem que seja necessrio o
conhecimento profundo desta linguagem de consulta.
Alm disto, este captulo forneceu uma viso geral dos recursos para a manipulao das
informaes de um banco de dados, gerando o conhecimento bsico para o entendi-
mento dos conceitos da linguagem SQL que ser abordada com detalhe nos prximos
captulos.
5. EXERCCIOS DE FIXAO
1- Onde pode ser encontrada a ferramenta MySQL Query Browser?
2- Qual o objetivo desta ferramenta?
3- Utilizando o editor de tabelas do MySQL Query Browser, crie uma tabela para armaze-
nar o nome, a data de nascimento, o endereo e cidade de todos os seus amigos.
4- Adicione tabela criada no exerccio anterior, a coluna para armazenar o CEP dos
seus amigos. Utilize o editor de tabelas disponvel na ferramenta.
6. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL Query Browser. Disponvel em: <http://dev.mysql.com/doc/query-
browser/en/index.html>. Acesso em: 20 dez. 2005.
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
64
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 mani-
pulao 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 lingua-
gem 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 for-
ma de comunicao entre povos e naes. Da mesma forma, a linguagem SQL consti-
tuda de um conjunto de smbolos que expressam a linguagem ou dialeto de comunica-
o com os mais variados sistemas de bancos de dados relacionais.
Todas as tarefas realizadas no captulo anterior atravs do MySQL Query Browser, po-
dem ser traduzidas em comandos SQL possveis de serem executados em qualquer ban-
co 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 mes-
mos. A segunda parte a DML (Data Manipulation Language), ou Linguagem para Ma-
nipulao de Dados, que permite a insero, alterao, excluso e leitura das informa-
es armazenadas no banco de dados.
O objetivo deste captulo e dos prximos fornecer uma viso mais ampla destes co-
mandos, permitindo o entendimento e a sua utilizao em situaes reais. Neste cap-
tulo sero discutidos os aspectos relacionados DDL, enquanto os captulos posterio-
res tratam da DML. Portanto, toda a definio de dados feita utilizando o DBDesigner4
e o MySQL Query Browser ser apresentada dentro do contexto da linguagem SQL.
2. INTRODUO AOS TIPOS DE DADOS
O processo de modelagem de um banco de dados consiste em representar situaes do
mundo real atravs de um sistema. razovel imaginar que diversas informaes po-
dem ser armazenadas em um banco de dados, tais como endereos, imagens, datas,
nmeros, moedas, dentre outras. Conforme descrito anteriormente, todo atributo de
uma tabela necessita ter um domnio ou conjunto de valores aceitveis. Por exemplo,
ao definir a data de nascimento de uma pessoa no desejvel que o sistema permita
a insero de um texto neste campo. Em uma coluna que armazena os salrios dos
funcionrios devem-se ter apenas valores numricos e no datas e horas, por exemplo.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
65
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Portanto, toda definio de tabelas passa pela construo dos seus atributos com seus
respectivos tipos de dados ou domnios. Como o MySQL o sistema de banco de dados
adotado neste livro, a Tabela 1 Tabela 1 Tabela 1 Tabela 1 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 FORMATO DESCRIO
INTEGER NMEROS NMEROS INTEIROS
DECIMAL(T,D) T = TAMANHO NMEROS COM PRECISO FIXA TAIS COMO MOEDA.,
D = NMERO LEMBRANDO QUE O PONTO O SEPARADOR DA DE CASAS DECIMAIS
PARTE FRACIONRIA OU CENTAVOS
FLOAT X.XXXXXXXXXX NMEROS REAIS COM QUANTIDADE DE CASAS DECIMAIS ELEVADA.
DATE AAAA-MM-DD ARMAZENA A DATA NO FORMATO ANO-MS-DIA
DATETIME AAAA-MM-DD ARMAZENA DATA E HORA EM UM NICO CAMPO NO FORMATA ANO-
HH:MM:SS MS-DIA HORA:MINUTO:SEGUNDOS
CHAR(T) TEXTOS INFORMAES TEXTUAIS COM NO MXIMO T CARACTERES
TEXT TEXTOS LONGOS INFORMAES TEXTUAIS LONGAS, TAIS COMO CURRCULOS, POEMAS, ETC
BLOB BINRIOS ARMAZENAM DADOS NO FORMATO BINRIO, TAIS COMO MSICAS,
VDEOS E IMAGENS
Tabela 1: Principais tipos de dados do MySQL
Ao inserir uma linha ou registro em uma tabela deve-se informar um valor para cada
coluna, respeitando o tipo de dados definido para aquele atributo. Existem situaes
em que o valor a ser colocado em uma coluna no conhecido no momento da incluso
dos dados na tabela. Por exemplo, se existir uma coluna que armazena a data de faleci-
mento 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 aceita-
ro o NULL, lembrando que por padro qualquer coluna aceita o NULL. importante
lembrar que colunas de qualquer tipo podem receber o valor NULL.
3. DESCRIO DOS COMANDOS PARA DEFINIO DE DADOS
O objetivo desta seo apresentar a sintaxe dos comandos para a criao de bancos de
dados e tabelas, expondo todos os comandos que constituem a linguagem SQL DDL.
3.1. CRIANDO E REMOVENDO UM BANCO DE DADOS
Um banco de dados entendido como uma coleo de tabelas. De fato uma forma de se
organizar as informaes dentro do SGBD, isto , cada aplicao pode ter o seu prprio
banco de dados, onde estaro apenas as tabelas que fazem parte daquele problema. A
Listagem 1 Listagem 1 Listagem 1 Listagem 1 Listagem 1 fornece a sintaxe do comando para a criao do banco de dados.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
66
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
CREATE DATABASE nome_do_banco
Listagem 1: Listagem 1: Listagem 1: Listagem 1: Listagem 1: Sintaxe do comando CREATE DATABASE
Por conveno, todos os comandos que se referem linguagem SQL sero colocados em
letras maisculas, enquanto os valores que sero informados pelos usurios sero exi-
bidos em itlico. No exemplo anterior nome_do_banco dever ser substitudo pelo nome
do banco que se deseja criar. Vale ressaltar que este comando pode ser submetido ao
SGBD a partir de qualquer cliente SQL, como o MySQL Query Browser, ou o cliente mysql
utilizado a partir de um terminal do Linux.
Para selecionar um banco de dados deve-se utilizar o comando USE, conforme ilustra a
Listagem 2. Listagem 2. Listagem 2. Listagem 2. Listagem 2.
USE nome_do_banco
Listagem 2: Listagem 2: Listagem 2: Listagem 2: Listagem 2: Selecionando um banco de dados
Uma vez selecionado o banco e dados, pode-se manipular as tabelas contidas nele, ou
at mesmo criar novas tabelas dentro deste banco de dados.
Para remover um banco de dados e todo o seu contedo, o comando DROP DATABASE
deve ser utilizado. A Listagem 3 Listagem 3 Listagem 3 Listagem 3 Listagem 3 fornece a sintaxe deste comando.
DROP DATABASE nome_do_banco
Listagem 3: Listagem 3: Listagem 3: Listagem 3: Listagem 3: Removendo um banco de dados e todo seu contedo
O comando anterior remove o banco de dados e todas as tabelas contidas nele, portanto
deve-se agir com prudncia a fim de que no sejam obtidos resultados indesejados.
Este o primeiro passo para a construo de uma base de dados, lembrando que o
banco de dados curso utilizado nos captulos anteriores foi criado a partir da execuo
do comando exibido na Listagem 1 Listagem 1 Listagem 1 Listagem 1 Listagem 1. Para isto, deve-se apenas substituir o termo
nome_do_banco por curso, que o nome do banco desejado.
3.2. CRIANDO E REMOVENDO TABELAS
Para criar uma tabela preciso primeiro identificar os atributos e seus tipos de dados,
bem como as restries em relao ao valor NULL, isto , se havero colunas com valo-
res indefinidos. Alm disto, necessrio identificar a chave primria da tabela, que o
conjunto de colunas que referenciam de forma nica cada registro da tabela.
Finalmente, para as tabelas que participam de algum relacionamento necessrio deter-
minar 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 rela-
cionamento 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 relaciona-
mento entre pais e filhos, deve-se garantir que no haver um filho sem um pai.
Para a criao de uma tabela utiliza-se o comando CREATE TABLE, cuja sintaxe bsica
est apresentada na Listagem 4 Listagem 4 Listagem 4 Listagem 4 Listagem 4.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
67
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CREATE TABLE nome_da_tabela (
Coluna1 TIPO_COLUNA_1,
Coluna 2 TIPO_COLUNA_1,
. . .
Coluna N TIPO_COLUNA_N,
PRIMARY KEY (colunas),
[FOREIGN KEY (colunas) RESTRIES]
) [ENGINE=tipo];
Listagem 4 Listagem 4 Listagem 4 Listagem 4 Listagem 4: Sintaxe do comando CREATE TABLE
Como descrito na listagem anterior para criar uma tabela deve-se especificar o nome de
cada coluna ou atributo que a constitui, seus tipos e a sua chave primria. Nota-se que
a chave estrangeira opcional, portanto aparece entre colchetes ([FOREIGN KEY]). No
MySQL possvel escolher o tipo de tabela a ser criado (ENGINE), que para efeito deste
livro ser sempre utilizado o InnoDB, que possui suporte ao conceito de restries de
chaves estrangeiras. A explicao dos tipos de tabelas do MySQL ficam fora do escopo
deste livro.
O TIPO_COLUNA dever ser substitudo por alguns dos tipos de dados suportados pelo
SGBD utilizado. No caso do MySQL pode-se utilizar os tipos descritos na Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1 ou
qualquer outro tipo de dado suportado por ele. Nas subsees seguintes sero apresen-
tados exemplos da utilizao deste comando.
3.2.1 ENTENDENDO O CONCEITO DE CHAVE PRIMRIA
A Listagem 5 Listagem 5 Listagem 5 Listagem 5 Listagem 5 fornece os comandos para a criao das tabelas cargo, empresa e equipes,
que seguem a sintaxe apresentada anteriormente.
CREATE TABLE cargos (
codigo integer unsigned NOT NULL auto_increment,
nome char(50) NOT NULL,
PRIMARY KEY (codigo)
) ENGINE=InnoDB;
CREATE TABLE empresa (
codigo integer unsigned NOT NULL auto_increment,
nome char(60) NOT NULL,
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,
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
68
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
nome char(60) NOT NULL,
PRIMARY KEY (codigo)
) ENGINE=InnoDB;
Listagem 5: Comandos para a criao das tabelas cargo, empresa e equipes
No exemplo, todas as colunas foram criadas com a opo NOT NULL, isto , no poss-
vel 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 tenta-
tiva de inserir dois registros com o mesmo cdigo numrico, o SGBD emitir uma mensa-
gem de chave duplicada (Duplicate key entry), e inibir a insero do mesmo. A Figura Figura Figura Figura Figura
1 11 11 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 mensa-
gem de erro emitida pelo SGBD ao tentar executar a insero atravs do acionamento do
boto Apply Changes (Aplicar alteraes).
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 acres-
cido 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.
Figura 1: Erro
na insero
de dois
cargos com o
cdigo 2
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
69
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
3.2.2 ENTENDENDO O CONCEITO DE CHAVE ESTRANGEIRA
As demais tabelas do banco curso apresentam relacionamentos entre elas, obedecendo
s regras de integridade definidas pelo modelo lgico da aplicao. A Listagem 6 Listagem 6 Listagem 6 Listagem 6 Listagem 6 con-
tm os comandos para a criao das tabelas funcionrios, obras e obras_tem_equipes.
CREATE TABLE funcionarios (
cpf char(20) NOT NULL,
Cargos_codigo int(10) unsigned NOT NULL,
nome char(60) NOT NULL,
nascimento date NOT NULL,
telefone char(20) NOT NULL,
PRIMARY KEY (cpf),
FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo)
) ENGINE=InnoDB;
CREATE TABLE obras (
codigo int(10) unsigned NOT NULL auto_increment,
Empresa_codigo int(10) unsigned NOT NULL,
nome char(50) NOT NULL,
inicio date NOT NULL,
termino date NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (Empresa_codigo) REFERENCES empresa (codigo) ON DELETE
CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE obras_tem_equipes (
Obras_codigo int(10) unsigned NOT NULL,
Equipes_codigo int(10) unsigned NOT NULL,
PRIMARY KEY (Obras_codigo,Equipes_codigo),
FOREIGN KEY (Obras_codigo) REFERENCES obras (codigo) ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Equipes_codigo) REFERENCES equipes (codigo) ON DELETE
CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
Listagem 6 Listagem 6 Listagem 6 Listagem 6 Listagem 6: Comandos para a criao das tabelas funcionrio, obras e
obras_tem_equipes
Percebe-se que nestas tabelas existe alm da chave primria a definio de chaves es-
trangeiras, j que estas tabelas participam de relacionamentos. No caso da tabela de
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
70
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
funcionrios, os registros desta tabela esto associados a registros existentes na tabela
de cargos. Ou seja, todo funcionrio tem um cargo, onde esta relao salientada pela
coluna Cargos_codigo da tabela de funcionrios.
Uma chave estrangeira nada mais que a chave primria de uma tabela colocada em
outra tabela para identificar a relao entre elas. Para cri-la deve-se indicar qual o
conjunto de colunas que a compe, bem como a tabela e coluna que esta referencia. No
exemplo tm-se FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo). Isto signi-
fica dizer que os valores armazenados na coluna Cargos_codigo da tabela de funcion-
rios, deve ser um valor contido na coluna cdigo da tabela de cargos. Desta forma, o
SGBD assegura que nenhum funcionrio ter um cargo que no esteja cadastrado na
tabela de cargos. A Figura 2 Figura 2 Figura 2 Figura 2 Figura 2 ilustra uma tentativa de insero de um funcionrio com
um cargo invlido.
Percebe-se em destaque na figura que o sistema emitiu uma mensagem de erro indican-
do 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 regis-
tro: Falha de restrio de chave estrangeira), e desta forma o comando no executa-
do.
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 modifi-
cao de um cargo para o qual existam funcionrios cadastrados, deve-se garantir que
o funcionrio no ficar com um cargo invlido.
Para isto, foram especificadas as restries de chave estrangeira ON UPDATE CASCADE e
ON DELETE RESTRICT. Isto , quando o cdigo de um cargo for alterado o SGBD propa-
gar automaticamente a modificao para todos os funcionrios que estejam cadastra-
dos com este cargo (CASCADE). J no caso da remoo, o sistema no permitir a exclu-
so de cargos que apresentem funcionrios associados a ele (RESTRICT). Vale ressaltar
que a opo CASCADE ou RESTRICT pode ser aplicada s clusulas UPDATE e DELETE de
acordo com a restrio imposta pelo modelo.
Figura 2: Erro
na insero de
funcionrio com
cargo
inexistente
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
71
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Para ilustrar a utilizao das clusulas RESTRICT e CASCADE, considere um cadastro de
funcionrios e os seus dependentes ou filhos. Se o CPF do funcionrio, que a chave
primria, for alterado necessrio alterar o CPF na tabela de filhos, pois do contrrio a
relao entre as duas entidades se perderia, j que o filho estaria associado com um CPF
de um funcionrio inexistente. Desta forma, pode-se inibir a alterao do CPF do pai
durante um UPDATE, empregando a clusula RESTRICT. Ou pode-se possibilitar a altera-
o automtica do CPF em ambas as tabelas atravs do CASCADE.
O mesmo raciocnio se aplicaria no momento da excluso de um funcionrio, isto no
comando DELETE. Ao excluir um funcionrio no se pode manter os registros e seus
eventuais dependentes, pois desta forma teramos registros rfos na tabela de depen-
dentes. Portanto, pode-se inibir a remoo dos funcionrios que tenham filhos com o
RESTRICT, ou forar a excluso dos filhos com a opo CASCADE. Todo este mecanismo
visa a manuteno da consistncia das informaes, que j foi discutida nos captulos
anteriores.
Alm disto, uma nica tabela pode conter mais de uma chave estrangeira dependendo
de como esto organizados os relacionamentos entre elas. Isto o que ocorre no caso
da tabela obras_tem_equipes, que se relaciona com as tabelas obras e equipes, simulta-
neamente. Por isto apresenta duas chaves estrangeiras, referenciando a chave primria
de cada tabela.
O grande benefcio das chaves estrangeiras o fato de que o prprio SGBD assegura que
as restries de integridade pertinentes ao modelo sero aplicadas, mesmo que o usu-
rio do banco desconhea estas regras.
3.2.3 REMOVENDO E ALTERANDO UMA TABELA
Finalmente, para remover uma tabela utiliza-se o comando DROP TABLE conforme ilus-
tra a Listagem 7 Listagem 7 Listagem 7 Listagem 7 Listagem 7.
DROP TABLE nome_da_tabela
Listagem 7: Comando para a excluso de uma tabela
Ao executar este comando a tabela ser apagada por completo, juntamente com os
dados que por ventura estejam armazenados nela. Por isto, deve-se ter cuidado na
utilizao do mesmo para evitar resultados indesejados.
Outra situao comum no dia a dia da utilizao de um sistema de banco de dados a
necessidade de alterar a estrutura de uma tabela j existente. Por exemplo, supondo
uma alterao no modelo lgico da aplicao de forma que se tenha que armazenar a
data de entrada do funcionrio na empresa, o que no era necessrio anteriormente.
Para contemplar esta situao seria necessria a incluso de uma nova coluna do tipo
data tabela de funcionrios, previamente criada.
Em outro cenrio pode-se remover uma coluna, alterar o seu nome, ou at mesmo o tipo
de dados que ela armazena. Imaginando que o nome do funcionrio tenha sido definido
inicialmente com tamanho mximo de 15 caracteres ou letras, e surgiu um novo funcion-
rio com um nome extenso e que requer mais que 15 caracteres para ser armazenado. Neste
caso, o tipo do dado dever ser alterado para satisfazer esta nova condio.
O comando para modificar a estrutura de tabelas o ALTER TABLE, que pode ser utiliza-
do para os propsitos apresentados anteriormente. A Listagem 8 Listagem 8 Listagem 8 Listagem 8 Listagem 8 fornece a sintaxe
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
72
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
para a utilizao do comando ALTER TABLE.
ALTER TABLE nome_da_tabela ADD nome_da_coluna TIPO;
ALTER TABLE nome_da_tabela DROP nome_da_coluna;
ALTER TABLE nome_da_tabela MODIFY nome_da_coluna TIPO;
ALTER TABLE nome_da_tabela CHANGE coluna_antiga coluna_nova TIPO;
Tabela 2: Comandos para incluir, remover, trocar o tipo e alterar nome e tipo de colunas de
uma tabela
Com isto, finaliza-se a descrio da parte de definio de dados da linguagem SQL,
tornando possvel o entendimento e aplicao destes mecanismos para a construo de
bases de dados reais.
4. CONCLUSES
Neste captulo foram explorados os conceitos associados linguagem de definio de
dados do SQL. Neste ponto alguns conceitos relacionados integridade referencial e
restries de dados foram abordados com mais propriedade, tornando clara a sua im-
portncia para a resoluo de problemas relacionados a aplicaes reais.
Deste ponto em diante possvel empregar os recursos da linguagem SQL a fim de se
criar bases de dados para suportar as aplicaes que necessitem destes repositrios de
dados. Tendo como base estes conhecimentos acerca da construo do banco de dados,
os captulos seguintes tratam da manipulao dos dados armazenados nestes bancos
de informaes. Portanto, sero apresentados os comandos para insero, excluso,
alterao e leitura de dados, dentro da sintaxe de consulta universal que o SQL.
5. EXERCCIOS DE FIXAO
1- Qual o significado do termo SQL?
2- Para que serve o SQL?
3- O SQL dividido em duas partes, quais so elas? Descreva o objetivo de cada uma
destas linguagens.
4- Crie um banco de dados chamado TESTE, e crie dentro dele as tabelas cujos coman-
dos foram apresentados ao longo deste captulo.
5- Adicione uma coluna para armazenar a cidade natal de todos os funcionrios.
6. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec.
Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books.
Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport.
Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus.
Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly.
Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.
Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, Addison-
Wesley.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
73
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 7
1. INTRODUO
Os mecanismos de consultas de um sistema de banco de dados so concebidos de forma
a possibilitar a criao da estrutura de dados, bem como o preenchimento e a manipu-
lao das informaes contidas nele. No captulo 6 foi introduzida a linguagem SQL,
mais especificamente a parte para a definio de dados (DDL). Assim, foram apresenta-
dos 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, conhe-
cida como DML (Data Manipulation Language), que significa Linguagem para Manipula-
o 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 ope-
raes 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 discuti-
dos os relatrios avanados, bem como os comandos avanados para a manipulao de
dados, tais como JOINs e sub-consultas, ou seja como extrair dados em vrias tabelas.
Vale ressaltar que a DML apresenta comandos para a escrita e alterao de dados, bem
como para a leitura de informaes. Assim, inicialmente sero discutidos os comandos
para a escrita de dados, permitindo preencher o banco de dados, e posteriormente, ser
apresentado o comando para ler as informaes previamente armazenadas.
2. ENTENDENDO OS COMANDOS DMLLTERAO DE DADOS
A linguagem SQL apresenta basicamente trs comandos para alterao de dados, que
permitem realizar as tarefas de incluso, modificao e excluso de dados em uma
tabela qualquer. Nesta seo sero ilustradas a sintaxe e exemplos de cada um destes
comandos.
2.1. INCLUINDO DADOS COM O COMANDO INSERT
Para a incluso de informaes em uma tabela a linguagem SQL define o comando
INSERT, cuja sintaxe apresentada na Listagem 1 Listagem 1 Listagem 1 Listagem 1 Listagem 1.
INSERT INTO nome_data_tabela (lista_de_colunas) VALUES (lista_de_valores)
Listagem 1: Sintaxe do comando INSERT
O comando INSERT consiste em informar o nome da tabela que se deseja inserir os
dados, uma lista com o nome das colunas desta tabela para as quais sero informados
os dados, e finalmente os dados para cada coluna informada anteriormente. Vale res-
saltar que as colunas e os valores so separados por vrgulas, e o nmero de colunas
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
74
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 Figura 1 Figura 1 Figura 1 Figura 1 ilustra uma tentativa
incorreta de inserir dados na tabela de cargos. O comando digitado INSERT INTO
cargos (cdigo, nome) VALUES (25).
Na figura anterior percebe-se em destaque a mensagem Column count doesnt match
value count at row 1, que significa Contagem de colunas no confere com a contagem
de valores no registro 1. Isto , foram informadas duas colunas e apenas um valor
para a coluna cdigo, por isto a mensagem de erro.
Para ilustrar e facilitar o entendimento deste comando considera-se a insero de mais
um cargo na tabela de cargos do sistema. Portanto, um novo cargo ser inserido com o
cdigo quatro e com o nome Mestre de obras. A Figura 2 Figura 2 Figura 2 Figura 2 Figura 2 ilustra o comando INSERT
INTO cargos (codigo, nome) VALUES (4, Mestre de obras), executado a partir do MySQL
Query Browser.
Figura 1:
INSERT com
maior nmero
de colunas que
valores
Figura 2:
Exemplo de
insero do
cargo Mestre de
obras
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
75
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
No exemplo foi informado a lista de colunas (codigo e nome), e os valores 4 e Mestre
de obras, representando as informaes a serem armazenadas em cada uma das colu-
nas. importante perceber que a ordem dos valores informados segue a ordem das
colunas. Isto , primeiro aparece uma coluna cdigo ento o primeiro valor informado
deve ser o cdigo do cargo, e assim sucessivamente.
Outro detalhe importante de ser salientado que para as colunas do tipo texto ou data,
os valores devem ser informados entre aspas simples () ou aspas duplas (), caso
contrrio o SGBD emitir uma mensagem de erro e no executar a tarefa. A Figura 3 Figura 3 Figura 3 Figura 3 Figura 3
ilustra a insero do nome onde foi omitida uma das aspas, o comando executado foi
INSERT INTO cargos (codigo, nome) VALUES (5, 'Testes sem aspas).
A mensagem You have na error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near Testes sem aspas), que
significa Voc tem um erro de sintaxe no seu SQL; verifique o manual que corresponde
verso do seu servidor MySQL para a sintaxe correta prximo de Testes sem aspas),
indica a ausncia das aspas para encerrar o nome.
J para a insero de dados numricos no preciso utilizar as aspas, conforme ilustra
o exemplo anterior.
Como a base de dados est vazia e tendo em vista o preenchimento dos dados para que
possam ser feitos relatrios mais adiante, a Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1 fornece os comandos para a inser-
o de empresas, funcionrios, equipes, obras, bem como a incluso de equipes em
algumas das obras cadastradas, isto na tabela obras_tem_equipes.
Insero de empresas Insero de empresas Insero de empresas Insero de empresas 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');
Figura 3: Erro
de sintaxe pela
ausncia de uma
das aspas no
nome
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
76
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Insero de equipes Insero de equipes Insero de equipes Insero de equipes 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 Insero de funcionrios Insero de funcionrios Insero de funcionrios 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 Insero de obras Insero de obras Insero de obras 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 Insero de equipes em obras Insero de equipes em obras Insero de equipes em obras Insero de equipes em obras
INSERT INTO `obras_tem_equipes` VALUES (1,1);
INSERT INTO `obras_tem_equipes` VALUES (1,2);
INSERT INTO `obras_tem_equipes` VALUES (1,3);
INSERT INTO `obras_tem_equipes` VALUES (2,1);
INSERT INTO `obras_tem_equipes` VALUES (2,2);
INSERT INTO `obras_tem_equipes` VALUES (3,3);
Tabela 1: Insero dos dados iniciais do banco de dados curso
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-
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
77
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
ms-dia, conforme ocorre na data de nascimento dos funcionrios.
Esta a sintaxe bsica do comando INSERT, existem variaes aceitveis deste coman-
do, mas estas ficam fora do escopo deste livro, visto que este tem como objetivo apenas
fornecer uma viso geral acerca da linguagem SQL.
2.2. ALTERANDO DADOS COM O COMANDO UPDATE
Existem situaes em que h a necessidade de modificar uma informao armazenada
na tabela, por exemplo, considera-se a alterao de telefone de um determinado funci-
onrio, ou ainda a mudana na data de trmino de uma determinada obra. Neste caso,
a tarefa de alterar o dado de uma coluna realizada pelo comando UPDATE, cuja sintaxe
bsica apresentada na Listagem 2 Listagem 2 Listagem 2 Listagem 2 Listagem 2.
UPDATE nome_data_tabela
SET coluna=valor [, coluna=valor]
[WHERE critrio_de_seleo]
Listagem 2: Sintaxe do comando UPDATE
O primeiro passo para a execuo do comando UPDATE definir a tabela que ser modi-
ficada. Feito isto, informam-se as colunas e os novos valores que sero atribudos a
elas, especificando-as dentro da clusula SET. Percebe-se que podem ser alteradas mais
de uma coluna separando-as por vrgulas, sendo que este recurso opcional, por isto
est entre colchetes ([]).
A atualizao de dados pode ser restrita a um conjunto de registros ou se aplicar a todas
as linhas da tabela. Neste caso, existe a clusula opcional WHERE (exibida entre colchetes
[]), que permite informar o critrio de seleo de linhas, de forma a identificar apenas os
registros que sero modificados pelo comando. Caso esta clusula seja omitida, todos os
registros da tabela sero alterados para o novo valor. A Figura 4 Figura 4 Figura 4 Figura 4 Figura 4 fornece o comando para
alterar o telefone do funcionrio cujo CPF igual a 111.111.111-11, isto , UPDATE
funcionarios SET telefone = (31) 1234-5678 WHERE cpf = 111.111.111-11.
No exemplo anterior se o WHERE for omitido, o telefone de todos os funcionrios passa
a ser (31)1234-5678. Portanto, deve-se ter cuidado ao executar este comando para
Figura 4:
Atualizando o
telefone do
funcionrio com o
CPF
111.111.111-11
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
78
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
que no seja obtido um resultado indesejado.
2.3. EXCLUINDO DADOS COM O COMANDO DELETE
Finalmente, os dados armazenados em uma base de dados podem ser excludos por
vrias razes. Por exemplo, a sada de um funcionrio da empresa deve eliminar o
registro deste indivduo da tabela de funcionrios. Outra situao seria a sada de uma
equipe da execuo de uma determinada obra, isto , o registro que relata este fato
deve ser eliminado da tabela Obras_tem_equipes. Para a excluso de linhas de uma
tabela utiliza-se o comando DELETE, cuja sintaxe apresentada na Listagem 3 Listagem 3 Listagem 3 Listagem 3 Listagem 3.
DELETE FROM nome_data_tabela
[WHERE critrio_de_seleo]
Listagem 3: Sintaxe do comando DELETE
Assim, para a execuo do comando DELETE deve-se informar o nome da tabela cujos
registros sero eliminados, e opcionalmente o critrio de seleo de linhas de forma a
excluir apenas aquelas que atendam a um determinado requisito. Vale ressaltar que na
omisso do WHERE sero retirados todos os registros da tabela. A Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 ilustra a
remoo da empresa com o cdigo igual a dois, cujo comando DELETE FROM empresa
WHERE codigo = 2.
Assim como o UPDATE, no comando DELETE a clusula WHERE opcional por isto deve-
se agir com prudncia para que no sejam removidos ou alterados dados que no deve-
riam ser modificados.
3. INTRODUO AOS COMANDOS PARA LEITURA DE DADOS
A tarefa de acessar o contedo armazenado em uma base de dados de extrema impor-
tncia, 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
Figura 5:
Excluso da
empresa com
o cdigo
igual a 2
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
79
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
tabelas do banco de dados. Aqui sero abordados apenas os relatrios simples, ou seja,
que acessam apenas uma tabela, bem como a utilizao de funes, que sero explicadas
e exemplificadas no contexto em que forem empregadas.
3.1. O COMANDO SELECT BSICO
O comando SELECT a estrutura da linguagem SQL que permite ler as informaes de
uma tabela, ou de um conjunto de tabelas que se relacionam. A sintaxe bsica deste
comando apresentada na Listagem 4 Listagem 4 Listagem 4 Listagem 4 Listagem 4, e a explicao de cada clusula que o constitui
sero apresentados no decorrer desta seo.
SELECT lista_de_colunas
FROM nome_da_tabela
WHERE critrio_de_seleo
GROUP BY lista_de_colunas
HAVING critrio_de_seleo_no_resultado
ORDER BY lista_de_colunas
Listagem 4: Sintaxe do comando SELECT
Na clusula SELECT sero colocadas as colunas que sero exibidas pelo relatrio, por
exemplo, se for necessrio mostrar apenas as colunas nome e CPF dos clientes, apenas
estas colunas devero ser escritas no SELECT. Caso queira exibir todas as colunas pode-
se 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 relacio-
nam. 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 apresen-
tada na Figura 6 Figura 6 Figura 6 Figura 6 Figura 6, representada pelo comando SELECT nome, cpf FROM funcionarios.
Figura 6: Exibir
o nome e o CPF
de todos os
funcionrios
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
80
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Para ilustrar a utilizao do *, seja exibir todos os atributos de todas as equipes cadas-
tradas no sistema. A consulta SELECT * FROM equipes fornece este resultado e ilustra-
da pela Figura 7 Figura 7 Figura 7 Figura 7 Figura 7.
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 Figura Figura Figura Figura
8 88 88 ilustra o comando SELECT * FROM funcionrios WHERE Cargos_codigo = 3, que soluci-
ona este problema.
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 Figura 9 Figura 9 Figura 9 Figura 9 fornece
Figura 7:
Exibir todos
os atributos
de todas as
equipes
Figura 8: Listar
o nome dos
funcionrios que
atuam como
pedreiro
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
81
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
a consulta SELECT nome, Cargos_codigo, nascimento FROM funcionarios WHERE
Cargos_codigo = 3 AND nascimento >= 1970-01-01, que responde a esta pergunta.
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 funci-
onrios que sejam pedreiros ou que se chamem Jose de Alencar. A Figura 10 Figura 10 Figura 10 Figura 10 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 Figura 11 Figura 11 Figura 11 Figura 11.
Figura 9: Listar
o nome dos
funcionrios
que atuam
como pedreiro
e que nasceram
depois de 1970
Figura 10: Listar
o nome dos
funcionrios que
atuam como
pedreiro ou que
se chamam Jos
de Alencar
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
82
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 den-
tro 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 Figura 12 Figura 12 Figura 12 Figura 12 contm a soluo para esta pergunta, que dada pelo coman-
do SELECT.obras_codigo, COUNT(*) FROM obras_tem_equipes GROUP BY obras_codigo.
No exemplo, utiliza-se a funo COUNT(*) que realiza a contagem dos registros encon-
trados 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 resul-
tado calculado, neste caso, o filtro no aparecer no WHERE, mas sim na clusula HAVING.
Figura 11:
Listar o nome
dos
funcionrios
com nome
comeando
com Carlos
Figura 12:
Listar as obras
e o total de
equipes
envolvidas
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
83
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Isto , sempre que houver o GROUP BY e for desejvel a pesquisa sobre o resultado
gerado, utiliza-se o HAVING e no o WHERE como nos exemplos anteriores. Para ilustrar
a utilizao do HAVING a Figura 13 Figura 13 Figura 13 Figura 13 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.
3.4. ORDENANDO O RESULTADO COM O ORDER BY
Finalmente, a ltima clusula do comando SELECT se refere ordenao dos dados da
consulta. Pode-se exibir a listagem de acordo com o critrio de ordenao que for mais
conveniente para o relatrio. No caso da listagem de funcionrios pode-se orden-la
por nome, data de nascimento, ou at mesmo pelo telefone. Esta tarefa feita por meio
do ORDER BY, que faz referncia a uma coluna ou um conjunto de colunas separadas por
vrgulas, caso tenha mais de um critrio. A Figura 14 Figura 14 Figura 14 Figura 14 Figura 14 ilustra uma lista de todos os
cargos ordenando-os pelo nome. O comando para este propsito o SELECT * FROM
cargos ORDER BY nome.
Figura 13:
Listar as obras
que tenham
mais que uma
equipe
envolvida
Figura 14:
Listar os
cargos
ordenados por
nome
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
84
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 lingua-
gem 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 incremen-
tos para estes comandos que foram omitidos para simplificar a discusso. Mas, mesmo
assim, estas sintaxes bsicas so suficientes para utilizar um banco de dados em um
sistema qualquer.
5. EXERCCIOS DE FIXAO
1- Listar o nome de todas as equipes que comeam com a letra p.
2- Listar o nome de todos os funcionrios que trabalham como engenheiro.
3- Listar o total de registros da tabela de obras.
4- Insira voc como um funcionrio da empresa, no cargo de arquiteto.
5- Altere o seu cargo para engenheiro.
6- Remova da tabela todos os funcionrios que comeam com a letra C.
6. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec.
Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books.
Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport.
Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus.
Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly.
Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.
Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, Addison-
Wesley.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
85
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
CAPTULO 8
1. INTRODUO
O captulo 7 abordou a linguagem de manipulao de dados do SQL, descrevendo os
principais comandos para escrita e leitura no banco de dados. Mais especificamente o
comando SELECT bsico foi apresentado, sendo discutidas as principais clusulas que o
constitui. O objetivo inicial era introduzir os recursos bsicos para a leitura de informa-
es, extraindo dados de uma nica tabela do sistema. Para isto foram exibidas consul-
tas 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 final-
mente, 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 simpli-
ficados. 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 participa-
ram 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 captu-
lo.
Alm dos agrupamentos de tabelas, a linguagem SQL fornece uma abordagem conheci-
do como sub-consulta, isto , a estrutura do comando SELECT pode ser utilizada dentro
das clusulas SELECT, FROM e WHERE de um outro comando SELECT. Este um recurso
poderoso e tambm ser estudado com detalhes neste captulo.
Desta forma torna-se possvel elaborar consultas sofisticadas para resolver questes
mais complexas em sistemas de bancos de dados. Alm disto, ser introduzido o con-
ceito 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, utiliza-
do pelo MySQL.
2. TCNICAS PARA EXTRAO DE DADOS EM MLTIPLAS TABELAS - JOIN
Em um sistema de banco de dados relacional as informaes so armazenadas em di-
versas tabelas, e na maioria dos casos, o contedo destas tabelas compe um descriti-
vo complexo a respeito da aplicao que ele representa. Na modelagem entidade-rela-
cionamento define-se os elementos que constituem o sistema, bem como a forma como
eles se relacionam. Estes relacionamentos so identificados pelas chaves primrias e
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
86
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
estrangeiras, que so na verdade os atributos comuns entre duas tabelas.
Para ilustrar esta situao, se considerada as tabelas cargos e funcionrios do sistema
de construo civil, existe um relacionamento entre estas entidades, j que cada funci-
onrio da empresa possui um cargo. Esta interao entre os dois objetos descrita pelo
atributo cdigo, que chave primria da tabela cargos, e que inserido na tabela de
funcionrios, identificando o cargo do mesmo (coluna Cargos_codigo).
Partindo do princpio de que h algo em comum entre tabelas relacionadas torna-se
possvel a elaborao de uma estrutura de pesquisa que faa a combinao destes regis-
tros e traga o resultado desejado. Este mecanismo conhecido como JOIN, e para
ilustrar o seu funcionamento, seja exibir o nome do cargo de todos os funcionrios da
empresa. Basicamente, o que precisa ser feito informar as tabelas cargos e funcion-
rios na clusula FROM do comando SELECT. A Figura 1 Figura 1 Figura 1 Figura 1 Figura 1 ilustra a primeira tentativa de
resolver o problema da listagem dos cargos de funcionrios, atravs da submisso do
comando SELECT nome FROM funcionrios, cargos.
Na figura percebe-se que no FROM aparecem as duas tabelas separadas por vrgulas, e
que conforme o destaque, o sistema emitiu uma mensagem de erro Column nome in
field list is ambiguous, que quer dizer Coluna nome na lista de campos ambgua.
Isto , a coluna nome ambgua e a consulta no pode ser processada. Este um
problema tpico de consultas que fazem acesso a mais de uma tabela. Como as tabelas
cargos e funcionrios possuem uma coluna chamada nome, o sistema no sabe qual
delas listar, ou seja, o nome do funcionrio ou o nome do cargo. Neste caso, preciso
prefixar o nome da coluna com o nome da tabela, resolvendo assim a ambigidade.
Portanto, todas as vezes que for necessrio relacionar duas tabelas que possuam nomes
iguais, deve-se utilizar a sintaxe nome_da_tabela.nome_da_coluna, conforme ilustra a
Figura 2 Figura 2 Figura 2 Figura 2 Figura 2, com o comando SELECT funcionrios.nome, cargos.nome FROM funcionrios,
cargos.
Figura 1:
Utilizando o
JOIN, problema
de ambigidade
de nomes de
colunas.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
87
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
2.1. O PRODUTO CARTESIANO, UM ERRO COMUM NA ELABORAO DO JOIN
A Figura 2 Figura 2 Figura 2 Figura 2 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 con-
tm 28 registros, que a combinao dos quatro cargos com os sete funcionrios exis-
tentes 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 Figura 3 Figura 3 Figura 3 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.
Figura 2:
Resolvendo a
ambigidade
de nomes de
colunas
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
88
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Neste caso, torna-se possvel extrair as informaes contidas em tabelas que se relacio-
nam. 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 Figura 4 Figura 4 Figura 4 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 equi-
pes. 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.
Desta forma, possvel construir relatrios complexos atravs da unio de diversas
tabelas em um nico comando SELECT.
Figura 3:
Listando o nome
e os cargos dos
funcionrios
Figura 4:
Listando o
nome e os
cargos dos
funcionrios e
as suas
equipes
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
89
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
2.2. INNER JOIN, UMA SINTAXE ALTERNATIVA PARA A JUNO DE TABELAS
A juno de tabelas apresentada na seo anterior permite a soluo de problemas
complexos, mas trs um problema em relao organizao do comando. Neste caso os
critrios de relacionamento das tabelas e os filtros de dados so colocados juntos na
clusula WHERE, o que dificulta sobremaneira a leitura e o entendimento do comando.
Para uma abordagem mais didtica e mais organizada para a criao de junes de
tabelas, existe a sintaxe do INNER JOIN, conforme ilustra a Figura 5 Figura 5 Figura 5 Figura 5 Figura 5. Esta figura exibe
um relatrio com todos os funcionrios que nasceram depois de 1970, exibindo tam-
bm os seus cargos e equipes. O comando SELECT funcionrios.nome, cargos.nome
FROM funcionrios INNER JOIN cargos ON (cargos.cdigo = cargos_codigo) INNER JOIN
equipes ON (equipes.codigo = Cdigo_equipe) WHERE nascimento >= 1970-01-01.
No comando fcil identificar como as tabelas se relacionam, j que o critrio de juno
especificado imediatamente aps as tabelas utilizando-se a clusula ON. Neste caso
apenas os filtros sero colocados na clusula WHERE isolando os critrios de relaciona-
mento entre tabelas. Vale lembrar que o resultado obtido com a vrgula o mesmo do
INNER JOIN, utiliza-se o ltimo apenas por questes de estilo e para facilitar a manu-
teno da consulta gerada.
3. ENTENDENDO OS MECANISMOS DE SUB-CONSULTAS
Os recursos da linguagem SQL para a juno de tabelas permitem elaborar relatrios
envolvendo diversas tabelas, como ilustra a seo anterior. Contudo, os JOINs no so
a nica possibilidade para a extrao de dados em vrias tabelas. A linguagem SQL
fornece uma estrutura conhecida como sub-consulta ou sub-selects onde possvel
utilizar um comando SELECT dentro de outro comando SELECT.
Neste caso, o comando SELECT ilustrado at aqui poder compor a clusula SELECT,
FROM ou WHERE de um outro comando SELECT, criando assim uma hierarquia de coman-
dos que permite resolver problemas bastante complexos, e que em algumas situaes
Figura 5:
Relatrio de
funcionrios,
cargos e
equipes
utilizando o
INNER JOIN
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
90
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 resulta-
do 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 Figura 6 Figura 6 Figura 6 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.
bvio que a soluo trivial seria listar diretamente a coluna nascimento, mas o obje-
tivo aqui apresentar o funcionamento de uma consulta SELECT colocada dentro da
SELECT de outra consulta.
3.2. UTILIZANDO 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 entendi-
do pela consulta externa como se fosse uma nova tabela. Esta situao pode ser ilustra-
da pela consulta que lista o nome de todos os funcionrios que compem a equipe de
pedreiros. A Figura 7 Figura 7 Figura 7 Figura 7 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 6:
Exibindo o
nome e a data
de nascimento
dos
funcionrios
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
91
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Vale observar que esta consulta poderia ser resolvida facilmente atravs do JOIN, mas
esta abordagem pode ser mais atraente ou intuitiva para aqueles que esto iniciando o
uso da linguagem SQL.
3.3. UTILIZANDO UM SELECT DENTRO DA CLUSULA WHERE
As consultas dentro da clusula WHERE so de grande utilidade especialmente para
extrair informaes em relacionamentos do tipo muitos para muitos, pois facilita com-
parar uma determinada coluna com uma lista de valores retornados por uma outra
SELECT. Um exemplo prtico da utilizao deste tipo de consulta descrito pela Figura Figura Figura Figura Figura
8 88 88, onde sero exibidos os nomes de todas as equipes que possuem funcionrios associ-
ados a elas, atravs do comando SELECT equipes.nome FROM equipes WHERE EXISTS
(SELECT * FROM funcionrios WHERE cdigo=cdigo_equipe).
Figura 7:
Listar o nome
de todos os
funcionrios
da equipe de
pedreiros
Figura 8: Nome
das equipes
contendo
funcionrios
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
92
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
No exemplo anterior foi utilizada a estrutura EXISTS para verificar se existem registros
na consulta externa associados ao resultado da consulta interna. Vale ressaltar que
qualquer tipo de operador pode ser utilizado neste caso, como na lista dos nomes das
equipes que participaram da obra denominada Ponte. Este relatrio apresentado na
Figura 9 Figura 9 Figura 9 Figura 9 Figura 9, definido pelo comando SELECT nome FROM equipes WHERE codigo IN (SELECT
equipes_codigo FROM obras_tem_equipes WHERE obras_codigo IN (SELECT codigo FROM
obras WHERE nome = Ponte)).
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 mes-
ma 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-consul-
tas. 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 meca-
nismos de consultas.
3.4. AGRUPANDO RESULTADOS COM O COMANDO 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 Figura 10 Figura 10 Figura 10 Figura 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)).
Figura 9: Nome
das equipes
envolvidas na
obra Ponte
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
93
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
A consulta do exemplo anterior lista o nome dos funcionrios com os cargos de pedrei-
ro e engenheiro, visando apresentar esta estrutura do SQL. importante ressaltar que a
melhor soluo para este relatrio utilizar uma nica consulta com o filtro pelos
cargos desejados. O objetivo desta consulta apenas introduzir o comando UNION.
4. UTILIZANDO FUNES PARA TRANSFORMAO DE DADOS
A maioria dos SGBD fornecem um recurso importante para a elaborao das consultas
SQL que so as funes. Uma funo utilizada na prtica para realizar transformaes
nos dados. Pegando como exemplo a data do MySQL, esta armazenada no formato
aaaa-mm-dd, ou seja ano, ms e dia. fcil perceber que este no um formato de
data com o qual as pessoas estejam habituadas. Portanto seria de extrema relevncia
que as datas armazenadas pelo MySQL fossem exibidas em relatrios no formato dd/
mm/aaaa, ou seja, dia, ms e ano separados por barras.
Para resolver este tipo de problema existem as funes, que so projetadas para os
mais variados propsitos, tais como formatao de datas, manipulao de textos, cl-
culos 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 Listagem Listagem Listagem Listagem
1 11 11 apresenta a sintaxe de uma funo.
valor_de_retorno nome_da_funo(lista_de_argumentos)
Listagem 1: Sintaxe de uma funo
Uma funo pode ter um ou vrios argumentos, bem como pode no ter argumentos,
como o caso da funo NOW, que retorna a data e hora atual do sistema, conforme
ilustra a Figura 11 Figura 11 Figura 11 Figura 11 Figura 11, com o comando SELECT NOW().
Figura 10: Nome
dos funcionrios
pedreiros e
engenheiros
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
94
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 Figura 12 Figura 12 Figura 12 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.
A funo DATE_FORMAT recebe dois argumentos que so a data a ser transformada e o
padro de formatao. Neste caso, existem vrios caracteres de formatao, tais como o
%d que fornece o dia com dois dgitos, o %m para construir o ms com dois dgitos e,
finalmente o %Y que retorna o ano com quatro dgitos. Outros caracteres de formatao
e outras funes podem ser vistas no manual do MySQL Query Browser, encontrado no
canto inferior direito desta ferramenta.
Figura 11:
Retornando a
data e hora do
sistema com a
funo NOW
Figura 12:
Utilizando a
funo
DATE_FORMAT
para formatar
uma data
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
95
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
5. CONCLUSES
Este captulo ilustra a leitura de dados atravs da linguagem SQL, e fornece uma viso
geral de como construir relatrios avanados atravs desta linguagem. importante
ressaltar que o objetivo deste livro introduzir os recursos desta linguagem, apresen-
tando exemplos simples de utilizao da mesma. Portanto, possvel com os conheci-
mentos vistos ao longo dos ltimos captulos, entender e elaborar relatrios em um
banco de dados qualquer. Alm disto, este captulo forneceu a estrutura bsica do SQL,
possibilitando a sua utilizao em situaes reais.
Nos prximos captulos sero abordados os aspectos da administrao do banco de
dados, discutindo as principais tarefas que devem ser realizadas pelo administrador do
sistema. Alm disto, sero abordados os recursos avanados de um sistema de banco de
dados, tais como replicao de dados e controle de transao.
6. EXERCCIOS DE FIXAO
1- Escreva um relatrio (SELECT) para listar o nome, a data de nascimento e nome da
equipe para todos os funcionrios que nasceram no ano de 1970?
2- Escreva um relatrio (SELECT) para listar o nome de todas as equipes e o total de
funcionrios em cada uma delas.
3- Crie um relatrio (SELECT) com o nome de todas as obras e o total de equipes que
participaram de sua execuo.
7. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
MySQL AB: MySQL Query Browser. Disponvel em: <http://dev.mysql.com/doc/query-
browser/en/index.html>. Acesso em: 20 dez. 2005.
Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec.
Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books.
Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport.
Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus.
Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly.
Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.
Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, Addison-
Wesley.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
96
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
CAPTULO 9
1. INTRODUO
Neste captulo sero estudados os aspectos relacionados administrao de um Siste-
ma 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 dis-
cos, 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 informa-
es.
A administrao do banco de dados realizada pelo Administrador de Banco de Dados,
conhecido como DBA (DataBase Administrator). Esta a pessoa responsvel pela confi-
gurao 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 siste-
ma de uma empresa onde nem todos os usurios devem ter acesso aos dados sobre
faturamento e folha de pagamento. Portanto esta restrio deve ser respeitada via
controle de acessos do SGBD.
Por ltimo, mas no menos importante vem a questo das cpias de segurana dos
dados, conhecidas como backups. Estas cpias tm o objetivo de criar uma imagem dos
dados que possa ser utilizada caso haja alguma perda de informaes do sistema. Estas
perdas podem ser acarretadas por falhas em equipamentos, tais como discos ou por
usurios que realizam operaes indevidas. Por exemplo, apagam por engano toda a
base de dados de um sistema ou at mesmo uma nica tabela. Nestes casos, o DBA deve
utilizar esta cpia de segurana para restaurar os dados originais.
O objetivo deste captulo apresentar tcnicas para a execuo de tarefas administrati-
vas 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, configu-
rao 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.
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
97
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
2. INTRODUO AO MYSQL ADMINISTRATOR
O MySQL Administrator uma ferramenta desenvolvida com o propsito de facilitar as
tarefas de administrar o banco de dados MySQL. Esta ferramenta distribuda gratuita-
mente e pode ser obtida gratuitamente a partir da internet no endereo www.mysql.com/
downloads.
Assim como todos os clientes vistos at aqui, esta ferramenta requer uma conexo com
o SGBD MySQL, que ser feita utili-
zando o usurio root, que possui to-
dos os privilgios do sistema. A Fi- Fi- Fi- Fi- Fi-
gura 1 gura 1 gura 1 gura 1 gura 1 ilustra a tela do sistema que
utilizada para estabelecer esta cone-
xo.
Neste ponto informado um nome
para a conexo, o endereo do servi-
dor MySQL, o usurio e senha. No
caso, a conexo ser estabelecida
com um MySQL que est instalado na
mesma mquina do MySQL
Administrator (localhost), o usurio
o root, sem senha. Depois de infor-
mado os parmetros deve-se acionar
o boto Ok e a conexo ser
estabelecida, exibindo a tela ilustra-
da pela Figura 2 Figura 2 Figura 2 Figura 2 Figura 2.
Na tela inicial so exibidas as informaes sobre o servidor MySQL, que podem ser
visualizadas atravs da opo Server Information (Informao do servidor), na late-
ral esquerda da janela. Todas as tarefas da administrao do sistema podem ser desem-
penhadas atravs da utilizao deste grupo de funes disponveis esquerda da jane-
la. Nas sees seguintes sero discutidas cada uma das opes ilustradas na figura
anterior.
Figura 1:
Abrindo a
conexo com o
MySQL
Figura 2: Tela
inicial do MySQL
Administrator
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
98
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
3. EXPLORANDO AS OPES DA FERRAMENTA MYSQL ADMINISTRATOR
Nesta seo sero discutidas as principais tarefas da administra-
o do banco de dados, atravs da explorao das opes dis-
ponveis no MySQL Administrator. O conjunto de tarefas do sis-
tema exibido em destaque na Figura 3 Figura 3 Figura 3 Figura 3 Figura 3.
As subsees a seguir discutem a utilizao de cada um dos
itens exibidos na figura anterior.
3.1. CONTROLE DO SERVIO MYSQL
A opo Service control (Controle do servio), exibe a situa-
o do servidor MySQL indicando se o mesmo est em execuo
ou no. A Figura 4 Figura 4 Figura 4 Figura 4 Figura 4 fornece a tela que mostra as informaes
contidas neste item do sistema.
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 acio-
nar 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 inter-
rupo via as mensagens exibidas na janela Log messages (Registro de mensagens).
Figura 3: Menu
de tarefas do
MySQL
Administrator
Figura 4:
Explorando a
opo Controle do
servio
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
99
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
3.2. CONFIGURANDO OS PARMETROS DO SERVIDOR MYSQL
Existe um vasto conjunto de parmetros relacionados ao servidor de banco de dados,
responsveis pelo funcionamento do mesmo. Por exemplo, existem configuraes para
controlar o nmero mximo de conexes simultneas ao SGBD, ou seja, o nmero mxi-
mo de usurios fazendo uso do sistema. Vale lembrar que em um sistema de banco de
dados podem existir vrias pessoas fazendo uso dele ao mesmo tempo. Para ilustrar,
basta observar um sistema bancrio, onde vrios clientes utilizam seus caixas eletrni-
cos ao mesmo tempo.
Alm disto, existem variveis que controlam a utilizao de memria e disco pelo siste-
ma, controlando assim o uso de recursos da mquina e do sistema operacional. Todas as
configuraes do MySQL esto disponveis a partir do item Startup variables (Vari-
veis de iniciao), que so popularmente conhecidas como variveis de configurao. A
Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 fornece uma viso geral de todas as variveis do sistema.
possvel notar que existe um conjunto considervel de parmetros, que esto organi-
zados 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 (Desem-
penho), 6. Log files (Arquivos de monitoramento), 7. Replication (Replicao de da-
dos) 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 confi-
guraes do servidor fica fora do escopo deste livro.
Portanto para alterar um parmetro qualquer, por exemplo, Key buffer (rea de me-
mria 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.
Figura 5:
Explorando as
configuraes
do sistema
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
100
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

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

d
e

I
n
f
o
r
m

t
i
c
a
101
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Definida as informaes do usurio necessrio informar os seus privilgios acionando
a aba contendo Schema privileges (Privilgios do esquema). Vale ressaltar que um
esquema de banco de dados um conjunto de elementos que constituem o banco, tais
como tabelas, colunas, vises, procedimentos, dentre outros. Neste momento devem-
se selecionar o banco de dados que o usurio ter acesso e definir quais os comandos
podero ser executados por ele. Para atribuir um privilgio, selecione-o na janela
Available privileges (Privilgios disponveis), e ento clique na seta para a esquerda
<, e para excluir o privilgio marque-o na janela Assigned privileges (Privilgios
atribudos), e ento acione a seta para direita >. As setas duplas << e >> podem
ser empregadas para atribuir ou excluir todos os privilgios de uma s vez. A Figura 8 Figura 8 Figura 8 Figura 8 Figura 8
mostra a atribuio do privilgio para executar os comandos SELECT e UPDATE em todas
as tabelas do banco de dados curso.
Por ltimo possvel controlar a utilizao de recursos do sistema atravs do item
Resources (Recursos), tais como o nmero de atualizaes e conexes por hora. Con-
cluda a entrada dos dados do usurio acione o boto Apply changes (Confirmar
alteraes) para confirmar a criao do usurio. Para descartar a incluso, o boto
Figura 7:
Criando um
novo
usurio
chamado
UsuarioCurso
Figura 8:
Definindo o
esquema de
privilgios do
usurio
UsuarioCurso
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
102
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Discard changes (Descartar alteraes) dever ser utilizado. A Figura 9 Figura 9 Figura 9 Figura 9 Figura 9 ilustra o siste-
ma aps a confirmao da insero, percebe-se que o usurio UsuarioCurso est mos-
trado na parte inferior da tela, ou seja, um usurio vlido no sistema.
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 ser-
vidor 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 Figura 10 Figura 10 Figura 10 Figura 10
ilustra o cenrio onde apenas o usurio root est conectado ao sistema. Vale lembrar
que o usurio root possui todos os privilgios do sistema, portanto considerado o
administrador.
Figura 9:
Concluindo a
insero do
usurio
UsuarioCurso
Figura 10:
Exibindo as
conexes de
usurios
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
103
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
Alm de monitorar as conexes ou processos em execuo no SGBD, a segunda opo
fornecida para o monitoramento a visualizao da utilizao dos recursos do sistema,
tais como memria e conexes disponveis. A Figura 11 Figura 11 Figura 11 Figura 11 Figura 11 exibe os grficos de utilizao
de memria, chamado Memory Health (Sade da memria), vistos a partir da opo
Health (Sade). Entende-se por sade da memria o modo como o MySQL est utili-
zando este recurso. Por exemplo, em uma residncia o hidrmetro responsvel pelo
acompanhamento do consumo de gua. Neste caso, a sade da memria fornece como
est sendo consumida a memria da mquina ao logo da execuo do SGBD.
A terceira e ltima opo para monitorar a execuo do MySQL feita atravs dos arqui-
vos de registros de operaes, conhecidos como Log files. Estes arquivos so respons-
veis 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 Figura 12 Figura 12 Figura 12 Figura 12.
Figura 11:
Monitorando a
utilizao de
memria
Figura 12:
Acessando os
arquivos de log
do sistema
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
104
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Finalmente, esta ferramenta permite visualizar os bancos de dados do sistema, bem
como manipula-los. Ou seja, possvel criar tabelas, alterar suas estruturas ou at mes-
mo remover tabelas e bancos, assim como era feito no DBDesigner4 e MySQL Query
Browser. Para acessar a estrutura de dados do sistema acione a opo Catalogs (Cat-
logos), e ento selecione o banco de dados desejado. Um catlogo nada mais que o
conjunto de todos os esquemas de banco de dados gerenciados pelo servidor MySQL.
Assim, ao selecionar um banco de dados todas as tabelas que compem este banco
sero exibidas. A Figura 13 Figura 13 Figura 13 Figura 13 Figura 13 ilustra a estrutura do banco de dados curso criado nos
captulos anteriores.
3.5. REALIZANDO CPIAS DE SEGURANA DO BANCO DE DADOS
Uma cpia de segurana consiste em armazenar as informaes do banco de dados
em um local diferente de onde se encontra o SGBD. Isto feito com o intuito de
proteger os dados contra falhas de equipamentos ou de usurios. No primeiro caso,
se a mquina ou o disco onde esto os dados forem danificados, toda a informao
contida nele ser perdida. Desta forma, tendo a cpia de segurana, conhecida como
backup possvel fazer a restaurao dos dados e eliminar a perda de informaes.
No caso de falhas de usurios, se o mesmo remover por engano uma base de dados
qualquer, esta pode ser recuperada atravs do backup.
As cpias de segurana devem ser feitas periodicamente garantindo que haver dis-
ponvel 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 Figura 14 Figura 14 Figura 14 Figura 14.
Figura 13:
Acessando a
estrutura do
banco de dados
curso
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
105
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
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 Figura Figura Figura Figura
15 15 15 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
Figura 14:
Criando um
projeto para
realizar
backup do
banco curso
Figura 15:
Especificando
o local e o
arquivo de
backup
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
106
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
arquivo de backup desejado, isto , a cpia realizada no passo anterior. A Figura 16 Figura 16 Figura 16 Figura 16 Figura 16
ilustra esta situao.
Finalmente, acionando o boto Start restore (Iniciar restaurao), o banco de dados
ser restaurado para a posio em que se encontrava no momento em que o backup foi
realizado. Desta forma, toda a informao perdida devolvida para o sistema.
4. CONCLUSES
Este captulo ilustrou as principais rotinas para administrao de um sistema de banco
de dados, salientando as principais tarefas realizadas pelo DBA. O objetivo introduzir
a ferramenta MySQL Administrator como um sistema auxiliar, bem como formar conhe-
cimento bsico sobre este procedimento para a manuteno do seu SGBD. importante
ressaltar, que o objetivo deste livro no formar um DBA em MySQL, mas sim apresentar
as rotinas pertinentes manuteno de um sistema de banco de dados, construindo
uma viso geral dos mesmo.
No captulo seguinte sero abordados recursos avanados de um sistema de banco de
dados, tais como o controle de transao e a replicao de dados. Desta forma, estar
encerrada a discusso de todos os aspectos de um sistema de banco de dados real.
5. EXERCCIOS DE FIXAO
1- Descreva as 11 tarefas disponveis no MySQL Administrator.
2- O que um DBA?
3- Quais as tarefas atribudas ao DBA?
4- Quantos grupos de configurao existem no MySQL Adminstrator? Cite-os.
Figura 16:
Restaurao
de uma cpia
de segurana
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
107
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
5- Execute o MySQL Administrator e liste todos os privilgios disponveis nesta ferra-
menta.
6- O que um esquema de banco de dados? E um catlogo?
7- O que voc entende por backup? D exemplos de sua utilizao.
8- O que a restaurao de uma cpia de segurana? Em quais situaes esta operao
seria realizada?
6. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
MySQL AB: MySQL Administrator. Disponvel em: <http://dev.mysql.com/doc/
administrator/en/index.html>. Acesso em: 20 dez. 2005.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
108
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 estru-
tura final do mesmo. Inicialmente foram apresentadas as questes ligadas modela-
gem 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 repre-
sentar 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 apresenta-
das 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 Lingua-
gem para Manipulao de Dados (DML). Sobre a linguagem de consulta, esta uma
ferramenta que permite manipular as informaes contidas no banco de dados. Deste
modo, vrios exemplos de relatrios bsicos e avanados foram ilustrados, permitindo
o entendimento da mesma. Vale lembrar, que o MySQL Query Browser foi introduzido
possibilitando a sua utilizao para a extrao de dados do MySQL, sem a utilizao do
SQL explicitamente.
Um sistema de banco de dados mantido pelo SGBD, e algumas tarefas tm que ser
executadas periodicamente a fim de se garantir o funcionamento adequado do sistema.
Para isto, foram discutidas as principais tcnicas de administrao de um sistema desta
natureza, alm de apresentar a ferramenta MySQL Administrator como um mecanismo
eficiente para a execuo destas operaes.
Neste ponto todos os aspectos importantes relativos utilizao de um sistema de
banco de dados j foram conceituados e exemplificados, possibilitando a sua aplicao
em um sistema real. No entanto as aplicaes reais operam em um contexto onde h
uma grande complexidade nos dados, bem como nas regras de utilizao dos mesmos.
Alm disto, em um ambiente prtico, ao contrrio do que ocorreu nos exemplos deste
livro, o banco de dados utilizado por diversos usurios simultaneamente. Isto intro-
duz dificuldades e requer mecanismos para realizar o controle de concorrncia sobre os
dados. Exemplificando, no seria impossvel que em um sistema dois usurios tentas-
sem alterar um mesmo registro ao mesmo tempo, e neste caso, deve-se garantir a inte-
gridade da informao.
Outro problema comum so as falhas que podem ocorrer durante uma operao, isto ,
pode haver uma queda de energia durante a manipulao das informaes e isto pode-
ria levar a uma inconsistncia nos dados. No entanto, para contornar estas dificuldades
um SGBD prov mtodos para controlar o acesso simultneo aos dados, bem como
eliminar inconsistncias de informaes devido s falhas de sistema ou at mesmo de
usurios. Este recurso conhecido como controle de transaes, e ser apresentado
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

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

d
e

I
n
f
o
r
m

t
i
c
a
CDIGO NOME SALDO
1 JOS DA SILVA 2.000
2 MARIA APARECIDA 4.000
CREATE TABLE clientes (
codigo INTEGER NOT NULL,
nome CHAR(30) NOT NULL,
saldo DECIMAL(10, 2) NOT NULL,
PRIMARY KEY(codigo)
) ENGINE=InnoDB;
INSERT INTO clientes (codigo, nome, saldo)
VALUES (1, 'Jos da Silva', 2000.00);
INSERT INTO clientes (codigo, nome, saldo)
VALUES (2, 'Maria Aparecida', 4000.00);
Tabela 1: Tabela de saldos dos correntistas de uma agncia bancria
A Figura 1 Figura 1 Figura 1 Figura 1 Figura 1, ilustra a tabela de clientes aps a execuo dos comandos exibidos na
Tabela 1 Tabela 1 Tabela 1 Tabela 1 Tabela 1, atravs do MySQL Query Browser.
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 1: Tela
com a tabela de
saldos dos
correntistas
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
111
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
A operao de transferncia, no ponto de vista do SGBD, consiste em executar dois
comandos UPDATE de forma a retirar a quantia de uma conta e depositar na outra. Ou
seja, um comando UPDATE ser responsvel pela reduo do saldo da conta do cliente
1 em R$100,00, e o segundo comando UPDATE deve fazer um acrscimo da mesma
quantia no saldo do cliente 2. Desta forma, o total em reais existentes nas duas contas
no se alterar ao final da operao, j que R$100,00 foram sacados da primeira conta
e depositado na segunda.
O cenrio descrito anteriormente seria perfeito desde
que houvesse garantia de que os dois comandos seri-
am executados sem problemas. Na verdade, em um sis-
tema real no h como garantir que no haver uma
queda de energia durante a operao de transferncia.
Neste caso, pode ocorrer de o primeiro comando ser
executado com sucesso, realizando o saque na conta
do cliente 1, e devido esta falta de energia, o segun-
do comando no ser executado. Deste modo, o depsi-
to da mesma quantia no seria feito na conta 2, o que
levaria a base de dados uma situao inconsistente,
ou seja, desapareceriam R$100,00. A Figura 2 Figura 2 Figura 2 Figura 2 Figura 2 ilustra a
execuo desta operao e a situao final em que se
encontram os saldos das contas. Vale destacar que para
simular a queda de energia, a ferramenta encerrada
no meio da transao acionando o X no canto superi-
or direito da tela. Desta forma, impe-se uma interrup-
o abrupta no processo durante a sua execuo, simi-
lar quela que ocorreria durante a falha de energia.
Para resolver este problema deve-se entender a ope-
rao de transferncia como uma nica transao, com-
posta de mais de um comando. Desta forma, a transa-
o 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
a Figura 3 igura 3 igura 3 igura 3 igura 3.
Existem trs comandos bsicos que so o START TRANSACTION, COMMIT e
ROLLBACK. O primeiro marca o incio da transao, o segundo confirma to-
dos os comandos executados at o momento, ou seja, a confirmao da
transao. Caso queira desfazer todos os comandos de uma transao basta enviar um
ROLLBACK, que todos os comandos executados at este momento sero desfeitos auto-
maticamente. Assim, quando ocorrer uma falha no meio da transao o SGBD no rece-
ber a confirmao (COMMIT), e ento desfar todo o processo retornando a base de
dados para a situao em que se encontrava no incio da operao. A Figura 4 Figura 4 Figura 4 Figura 4 Figura 4 ilustra a
mesma operao de transferncia utilizando o controle de transao.
Figura 2:
Falha em uma
transferncia
de fundos
entre contas
Figura 3:
Painel para o
controle de
transao no
MySQL Query
Browser
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
112
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
Neste caso, ao encerrar o MySQL Query Browser
no meio da transao o primeiro comando
UPDATE que havia sido executado foi desfeito
pelo SGBD, devolvendo a quantia para a conta
1, eliminado assim a perda de dados ocorrida
no caso onde no foi utilizado este controle.
A Figura 5 Figura 5 Figura 5 Figura 5 Figura 5 ilustra a transao completa aps
a execuo do comando COMMIT, neste caso
todas as alteraes foram aplicadas com su-
cesso, e a quantia foi movimentada entre con-
tas sem perdas de informaes, ou seja, de
modo consistente.
Pode ocorrer ainda de aps terem sido execu-
tados os dois comandos para realizar a trans-
ferncia de fundos, haja a necessidade de de-
sistir da operao. Neste caso, utilizando o
controle de transao isto bem simples de
ser feito, basta acionar o comando ROLLBACK.
Desta forma tudo que tenha sido realizado at
o momento ser desfeito. Assim, o saque e o
depsito sero desfeitos e o saldo inicial ser
restabelecido, da mesma forma como ocorre
no exemplo da Figura 4 Figura 4 Figura 4 Figura 4 Figura 4.
Este um pequeno exem-
plo do uso do controle de
transaes em um sistema
real. Este um mecanismo
complexo e indispensvel
em determinados siste-
mas, visto que ele fornece
uma garantia de consis-
tncia das informaes
contidas no banco de da-
dos, mesmo em situaes
de falhas, muito corriquei-
ras na prtica.
importante ressaltar que
existem outros aspectos a
respeito do controle de
transaes que sero omi-
tidos neste livro, j que o
objetivo aqui apenas for-
necer os conceitos bsicos
acerca deste recurso.
Figura 4: Transferncia
bancria com controle de
transao
Figura 5:
Confirmando a
transferncia
bancria com o
COMMIT
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
113
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
3. UTILIZANDO A REPLICAO PARA OBTER ALTA DISPONIBILIDADE
Aplicaes crticas exigem, em geral, que as informaes estejam sempre disponveis
para o usurio, independentemente de quaisquer problemas que possam ocorrer com a
mquina ou o SGBD que mantm estes dados. Para garantir este nvel de segurana
preciso manter uma redundncia destas informaes, permitindo assim que caso um
servidor falhe, as informaes contidas nele estejam disponveis para uso em algum
outro local.
Uma das tcnicas mais difundidas entre os SGBD dispon-
veis atualmente a replicao de dados. Este mecanismo
consiste em manter uma cpia idntica do banco de dados
em diversas mquinas, sendo que qualquer alterao ocor-
rida em um destes servidores propagada imediatamente
para os demais participantes da replicao. A Figura 6 Figura 6 Figura 6 Figura 6 Figura 6 for-
nece uma viso esquemtica de uma replicao de dados
onde participam trs mquinas.
No cenrio descrito pela figura anterior, existem trs cpi-
as idnticas dos dados e a aplicao acessa o servidor de
nmero 1. Os demais SGBD presentes nos outros locais fa-
zem a leitura das modificaes ocorridas no primeiro servi-
dor, garantindo que todas as mquinas estaro sincroniza-
das, isto , idnticas. Esta cpia de dados realizada cons-
tantemente, de forma a garantir a menor diferena possvel
de informaes. Vale ressaltar que cada SGBD disponibiliza
o recurso de replicao de uma forma diferente, mas o ob-
jetivo maior desta seo apresentar a idia bsica deste
artifcio.
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 ocor-
ra um dano no equipamento, a aplicao pode ser redirecionada para um dos demais
servidores e continuar operando como se nada tivesse ocorrido ao sistema de banco de
dados.
Alm desta segurana um sistema de replicao permite que mais usurios acessem as
informaes simultaneamente, j que estes acessos podem ser distribudos entre os
vrios servidores existentes. Dado que a informao contida nestas mquinas igual,
permitida a distribuio de carga, aumentando consideravelmente o desempenho do
sistema como um todo.
4. TRABALHANDO COM ROTINAS ARMAZENADAS NO SGBD
Uma rotina pode ser entendida como um conjunto de instrues que devem ser execu-
tadas com um propsito de realizar uma tarefa qualquer. No contexto de banco de
dados, estas tarefas so em geral relacionadas manipulao das informaes armaze-
nadas por ele. As instrues contidas em uma rotina so definidas em cima da lingua-
gem SQL, e estas rotinas podem ser armazenadas no SGBD e serem utilizadas posterior-
mente por qualquer usurio do sistema.
Figura 6:
Esquema de um
sistema de
replicao de
dados
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
114
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
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 de-
vem 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 requisi-
to, interessante criar uma rotina que antes de re-
alizar 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 pre-
cisar conhecer os detalhes que cercam esta opera-
o, bastaria apenas invocar esta rotina que j est
escrita e armazenada no SGBD. A Figura 7 Figura 7 Figura 7 Figura 7 Figura 7 ilustra a
criao e utilizao de uma rotina que transfere uma
quantia qualquer entre duas contas quaisquer.
A rotina chamada transfere_quantia recebe trs ar-
gumentos 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 mensa-
gem Saldo insuficiente ser impressa. Caso contrrio, a transferncia ser realizada. A
Figura 7 Figura 7 Figura 7 Figura 7 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 deta-
lhes sobre esta abordagem que foram omitidos por estar fora do escopo deste livro.
Com isto, tem-se uma viso geral do que e qual a aplicao prtica deste recurso,
possibilitando um entendimento bsico deste mecanismo que amplamente utilizado
em aplicaes reais.
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 constru-
o 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
Figura 7:
Rotina para
transferncia
bancria
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
115
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
com uma baixa complexidade. Entretanto, a meta deste livro no formar um DBA
(Administrador de Banco de Dados), nem tampouco discutir todos os aspectos de um
SGBD.
A partir deste ponto, todo conhecimento bsico familiar, o que torna factvel o empre-
go 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 conhe-
cimento 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 ori-
gem, utilizando a procedure transfere_quantia?
7. REFERNCIAS BIBLIOGRFICAS
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
Gulutzan, Peter: MySQL 5.0 Stored Procedures. MySQL AB, march 2005. Disponvel em:
<http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html>.
Acesso em: 20 dez. 2005.
Gulutzan, Peter: MySQL 5.0 Triggers. MySQL AB, march 2005. Disponvel em: <http://
dev.mysql.com/tech-resources/articles/mysql-triggers.html>. Acesso em: 20 dez.
2005.
Pelzer, Trudy: MySQL 5.0 Views. MySQL AB, march 2005. Disponvel em: <http://
dev.mysql.com/tech-resources/articles/mysql-views.html>. Acesso em: 20 dez.
2005.
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG
116
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
C
a
d
e
r
n
o
s

d
e

I
n
f
o
r
m

t
i
c
a
117
CURSO DE INTRODUO AOS BANCOS DE DADOS
Secretaria de Estado de Educao MG

You might also like