Sunteți pe pagina 1din 118

Cadernos de Informatica

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

PROJETO ESCOLAS - REFERNCIA


Compromisso com a Excelncia na Escola Pblica

CURSO DE CAPACITAO EM INFORMTICA INSTRUMENTAL


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

CURSO DE INTRODUO A BANCOS DE DADOS


CURSO DE CONSTRUO DE WEB SITES
CURSO DE EDITORAO ELETRNICA

CURSO DE PRODUO FONOGRFICA


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

Cadernos de Informtica

CURSO DE ILUSTRAO DIGITAL

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Coordenador
Carlos Eduardo Hermeto S Motta

Cadernos de Informtica

ber Machado Duarte

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

APRESENTAO

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

DE

CAPACITAO

EM

INFORMTICA INSTRUMENTAL

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

Cadernos de Informtica

CURSO

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

valor de incorpor-las ao seu trabalho cotidiano. Os participantes sero preparados


para navegar e pesquisar na internet; enviar, receber e administrar correspondncia
eletrnica, alm de criar e editar documentos (textos, planilhas e apresentaes) de
interesse acadmico e profissional. Esse um curso fundamental, base e pr-requisito
para todos os demais.

CURSO

DE

MONTAGEM E MANUTENO

DE

COMPUTADORES

Este curso ser implantado em, pelo menos, uma escola do municpio sede de cada
Superintendncia Regional de Ensino. A indicao da escola dever ser feita pela prpria S.R.E, levando-se em conta as condies de infra-estrutura nas Escolas-Referncia
existentes no municpio. Nas escolas escolhidas ser montado um laboratrio de
informtica especialmente para a oferta desse curso.
O objetivo deste curso capacitar tecnicamente os alunos de ensino mdio que queiram
aprender a montar, fazer a manuteno e configurar microcomputadores. Pode ser oferecido para alunos de outras escolas, para professores e demais servidores da escola e
para a comunidade, aos finais de semana ou horrios em que o laboratrio esteja disponvel.
Neste curso o participante aprender a funo de cada um dos componentes do
microcomputador. Aprender como montar um computador e como configur-lo, instalando o sistema operacional, particionando e formatando discos rgidos, instalando placas de fax/modem, rede, vdeo, som e outros dispositivos. Conhecer, ainda, as tcnicas
de avaliao do funcionamento e configurao de microcomputadores que esteja precisando de manuteno preventiva ou corretiva, alm de procedimentos para especificao
de um computador para atender as necessidades requeridas por um cliente.
Dos cursos que se seguem, as Escolas-Referncia devero escolher pelo menos dois para
implantar em 2006.

Cadernos de Informtica

No perodo de 13 a 25 de maro/2006, estar disponvel no stio da SEE


(www.educacao.mg.gov.br) um formulrio eletrnico para que cada diretor das EscolasReferncia possa informar quais os cursos escolhidos pela sua escola e quais os professores que devero ser capacitados. Durante o perodo de capacitao, os professores
sero substitudos por professores-designados para que as atividades didticas da escola no sejam prejudicadas.

1. CURSO

SOBRE O

SISTEMA OPERACIONAL LINUX

destinado queles que desejam conhecer ferramentas padro do ambiente Unix. um


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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

com um conjunto pequeno de programas, possvel resolver problemas reais; explicar


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

2. CURSO

DE

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

DE

INTRODUO

AO

BANCOS

DE

DADOS

Este curso mostrar aos participantes os conceitos fundamentais do armazenamento,


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

Cadernos de Informtica

3. CURSO

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

4. CURSO

DE

CONSTRUO

DE

WEB SITES

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

1. CURSO

DE

EDITORAO ELETRNICA

Cadernos de Informtica

Voltado para a produo de documentos fsicos (livros, jornais, revistas) e eletrnicos.


Apresenta as ferramentas de produo de texto e as ferramentas de montagem de elementos grficos numa pgina. O texto tratado como elemento de composio grfica,
juntamente com a pintura digital, o desenho digital e outros elementos grficos utilizados para promover a integrao dos elementos grficos.

O curso explora de maneira extensiva os conceitos relacionados aparncia do texto


relativos aos tipos de impresso (fontes). Mostra diversos mecanismos de produo
dos mais variados tipos de material impresso, de texto comum s frmulas matemticas. Finalmente, discute a metodologia de gerenciamento de documentos.
Ementa: Editor de textos. Formatadores de texto. Tipos e Fontes. Gerenciamento de
projetos.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2. CURSO

DE

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

3. CURSO

DE

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

DE

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

Cadernos de Informtica

4. CURSO

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

5. CURSO

DE

PROJETO AUXILIADO POR COMPUTADOR


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

6. CURSO

DE

MULTIMDIA

NA

EDUCAO

O curso est dividido em trs partes: a) utilizao da multimdia no contexto educacional; b) autoria de apresentaes multimdia; c) projetos de aprendizagem mediada
por tecnologia. Este curso o fundamento para a criao dos cursos de educao a
distncia.

Cadernos de Informtica

Apresenta os elementos que compem os sistemas de multimdia, as comunidades virtuais de aprendizagem, o planejamento e a preparao de uma apresentao e de uma
lio de curso e, finalmente, a tecnologia de objetos de aprendizado multimdia.

10

Ementa: Introduo Multimdia e seus componentes. Multimdia na Educao. Comunidades Virtuais de Aprendizagem. Webquest: Desafios Investigativos baseados na
Internet (Web).
Preparao de uma apresentao multimdia.

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

6 - Exerccios de fixao ........................................................................ 34


7 - Referncias Bibliogrficas ................................................................ 34

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

Cadernos de Informtica

5 - Concluses ..................................................................................... 33

11

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

2.1 - Apresentao dos componentes do DBDesigner4 ......................... 36


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

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

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

Cadernos de Informtica

3.2.1 - Inserindo, alterando e excluindo dados em uma planilha ...... 59

12

3.2.2 - Leitura de informaes armazenadas em uma tabela ............. 61


4 - Concluses ..................................................................................... 63
5 - Exerccios de fixao........................................................................ 63
6 - Referncias Bibliogrficas ................................................................ 63

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

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

Cadernos de Informtica

CAPTULO 8 ................................................................................... 85

13

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.1 - Utilizando um SELECT dentro da clusula SELECT ......................... 90


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

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

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


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

Cadernos de Informtica

6 - Exerccios de fixao...................................................................... 115

14

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 1
1. INTRODUO
O conceito de banco de dados bem como as tecnologias de bancos de dados tm ganhado
mais importncia e esto se tornando cada vez mais populares com a expanso da
utilizao dos computadores. No dicionrio encontramos: Computador adj.s.m. 1 (o)
que computa ou calcula, s.m. 2 mquina eletrnica que guarda, analisa e processa dados. O primeiro computador, chamado de ENIAC, foi inventado pelos cientistas Eckert
e Mauchly e foi apresentado ao mundo em meados de 1945. Este fato desencadeou
uma srie de avanos tecnolgicos que culminou com a criao dos computadores pessoais. Estes equipamentos possuem um custo reduzido e possibilitam a execuo de
milhes de clculos em uma frao de segundos, alm de armazenar grandes volumes
de informaes. Para se ter uma idia, possvel armazenar em um nico CD todo o
contedo da enciclopdia Barsa.
Assim, comearam a surgir os primeiros sistemas computacionais desenvolvidos para
as mais variadas reas do conhecimento, tais como a engenharia, medicina, bibliotecas, sistemas educacionais, dentre outros.
Esta popularizao dos computadores acarretou a gerao de um grande volume de
dados e informaes. Como conseqncia, tornou-se necessrio organizar, armazenar e
acessar estas informaes de forma ordenada e fcil. Para suprir esta necessidade foram projetados os primeiros sistemas de bancos de dados, objetivando uma sistematizao do acesso aos dados.

Esta definio de banco de dados bastante genrica, da pode-se considerar como um


banco de dados uma coleo de textos sobre um determinado assunto. No contexto
deste curso, utiliza-se uma definio mais restrita para banco de dados, onde o mesmo
ser sempre a representao de uma situao encontrada no mudo real. Ou seja, um
banco de dados definido dentro de um universo de discurso, isto , a situao real
que ele representa. Para ilustrar, seja um banco de dados para armazenar informaes
referentes s linhas de nibus urbanos existentes em uma cidade. Neste cenrio,
relevante armazenar o nmero, placa e cor dos veculos, j que as linhas so identificadas
pelas cores dos nibus. Portanto, as linhas de nibus urbanas o universo de discurso
desta aplicao, sendo que as informaes somente se aplicam a este ambiente. Certamente se for necessrio manter dados sobre nibus intermunicipais, os requisitos de
dados mudaro, uma vez que alterou o universo de discurso. O universo de discurso
tambm entendido como escopo da aplicao, que na verdade so os limites ou propsitos para os quais os dados serviro.

Cadernos de Informtica

Um banco de dados uma coleo de dados relacionados. Entende-se por dado, toda a
informao que pode ser armazenada e que apresenta algum significado implcito dentro do contexto ao qual ele se aplica. Por exemplo, ao visualizar uma pessoa conduzindo um veculo pelas ruas est subentendido que a mesma conhece as tcnicas para a
conduo do automvel. Portanto, o conhecimento acerca do domnio da tcnica de
direo est implcito na cena apresentada. Exemplificando no cenrio de uma base de
dados, um cadastro de pessoas poder apresentar informaes diferentes se empregado em sistemas distintos. No caso de um sistema bancrio, uma pessoa identificada
pelo seu CPF (cliente). Em um sistema escolar a pessoa identificada pelo seu nmero
de matrcula (aluno). Alm disto, os dados que sero armazenados em cada situao
podem se diferir consideravelmente.

15

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Neste mdulo ser apresentado um pequeno banco de dados com o intuito de


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

1.1. DESCRIO

DO BANCO DE DADOS ACADMICO

O banco de dados descrito nesta seo concebido para representar um pequeno sistema escolar, onde existem basicamente dois componentes que so os alunos matriculados na instituio, bem como as notas obtidas por eles em todas as avaliaes realizadas durante um perodo escolar.
Conforme a definio dada na seo anterior, um banco de dados projetado para
atender os aspectos inerentes ao universo delimitado, neste caso, o sistema escolar.
Uma vez definido o escopo da aplicao, ou seja, o seu propsito, o prximo passo
identificar os elementos que a constituem, e por conseqncia definir todos os dados
relevantes para cada item existente. Estes elementos so comumente chamados de entidades, e que por questes de facilidade, so representadas por tabelas.

Tabela 1:
Definio da
ENTIDADE
alunos

MATRCULA
1
2
3
4
5

Uma entidade todo e qualquer elemento que participa do contexto definido para a
aplicao, e que geralmente se refere a um objeto real dentro deste escopo. Para o sistema
proposto, percebe-se a existncia de duas entidades: 1. Alunos e 2. Pontuao dos alunos
nas avaliaes. A primeira delas tem como objetivo manter um registro de cada aluno matriculado na escola. A Tabela 1 ilustra uma estrutura de armazenamento desta entidade.

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

SRIE
OITAVA
STIMA
QUINTA
SEXTA
OITAVA

TURMA
1
1
1
1
2

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

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

Cadernos de Informtica

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

16

Tabela 2:
Definio da
ENTIDADE
pontuao

MATRCULA
1
2
3
4
5
1
2
5

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

PONTO
5.5
6
8
10
7.8
4.6
7.2
9.5

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

1.2. ATRIBUTOS DEFINEM UMA ENTIDADE


Uma entidade, no exemplo alunos e pontuaes, so representadas por tabelas que por
sua vez so constitudas de linhas e colunas. Cada coluna representa um fragmento de
dado e o conjunto de todas as colunas constitui a entidade propriamente dita. No
contexto de banco de dados cada coluna chamada de atributo e uma entidade ser
formada por um ou vrios atributos.
Um atributo define uma caracterstica da entidade, por exemplo, um aluno tem nome,
idade, altura cor dos cabelos, sexo, dentre outras caractersticas. Neste caso o nmero
de atributos existente na tabela, que definem o grau da entidade, depender nica e
exclusivamente de quais dados sero relevantes para representar uma entidade dentro
do escopo que est sendo representado. Isto , no contexto do sistema escolar a cor
dos cabelos no importante, por isto no est representada na tabela.

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 22.
Percebe-se que cada atributo possui um conjunto de valores vlidos e aceitveis, que
definido como domnio do atributo. Todas as informaes vistas na tabela so textuais,
isto , seqncias de letras e nmeros, mas notrio que o conjunto de dados contido
em cada coluna diferente umas das outras. No caso da matrcula do aluno, o domnio
dos dados o conjunto dos nmeros inteiros positivos, j que para cada aluno atribudo um cdigo numrico que denota a ordem em que este foi matriculado na escola. Ou

Cadernos de Informtica

No sistema descrito a entidade alunos constituda por seis atributos que so o nmero de matrcula, nome, a srie que est cursando, a sua turma, o seu telefone residencial
e a data de nascimento. O atributo matrcula possui um papel importante no modelo
servindo como um identificador nico para cada aluno. Por exemplo, para pesquisar em
um dicionrio utiliza-se uma palavra-chave, sendo que uma mesma palavra pode aparecer mais de uma vez, como ocorre com o verbo casar. O significado que se deseja para
a palavra ser determinado pelo contexto onde a mesma empregada, resolvendo assim a ambigidade. Em um banco de dados caso ocorram registros com valores idnticos no ser possvel determinar um contexto que os identifiquem unicamente, como
ocorre no dicionrio. Por isto, deve existir uma chave ou atributo que identifique unicamente cada registro. Ao observar a Tabela 11, percebe-se que no h dois alunos cadastrados com o mesmo nmero de matrcula. Portanto, este o atributo chave da entidade, utilizado para a pesquisa de um registro nesta tabela.

17

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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


Alm das colunas ou atributos, as tabelas possuem tambm uma ou mais linhas ou
registros, conforme visto nas Tabelas 1 e 2 . Cada registro representa uma ocorrncia
daquela entidade no mundo real. Por exemplo, na Tabela 11, 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.

Cadernos de Informtica

Na entidade pontuao, no ser possvel utilizar apenas a matrcula do aluno como


chave primria, j que um mesmo aluno poder realizar avaliaes em datas distintas.
Neste caso, o identificador nico para a entidade pontuao ser a combinao da matrcula com a data do evento. Mais uma vez, no ser possvel que um mesmo aluno realize
mais de uma avaliao no mesmo dia.

18

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2. UTILIZANDO

MYSQL

PARA CRIAR O BANCO DE DADOS ESCOLAR

Um banco de dados armazenado e gerenciado por um Sistema Gerenciador de Banco


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

O BANCO DE DADOS ESCOLAR ATRAVS DO

MYSQL

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

Cadernos de Informtica

2.1. CRIANDO

19

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Figura 1
Abrindo um
terminal no
Linux

Cadernos de Informtica

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

20

Figura 2:
Estabelecendo
a conexo com
o MySQL

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 3:
Conexo com o
MySQL
estabelecida
com sucesso

Percebe-se que o sistema exibe uma mensagem de boas-vindas e algumas informaes


a respeito do SGBD, tais como a sua verso. A partir deste momento, possvel submeter os comandos para a criao do banco de dados e tabelas. Vale observar que o prompt
mysql>, indica que o SGBD MySQL est sendo utilizado.

2.2. CRIANDO

E SELECIONANDO UM BANCO DE DADOS NO

MYSQL

Figura 4: Criando e
selecionando o
banco de dados
curso

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

Cadernos de Informtica

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

21

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

2.3. CRIANDO

AS TABELAS DEFINIDAS NO MODELO

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

Figura 5:
Criao da
tabela de
alunos

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

Cadernos de Informtica

Figura 6:
Criao da
tabela de
pontuaes

22

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2.4. INSERINDO

INFORMAES NO BANCO DE DADOS

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

Cadernos de Informtica

Figura 8:
Insero dos
dados na tabela
de alunos

23

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 9:
Insero dos
dados na
tabela de
pontuaes

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

2.5. EXIBINDO

AS INFORMAES CONTIDAS NO BANCO DE DADOS

Nesta seo ilustrado o mecanismo de consultas do banco de dados. O objetivo deste


processo de extrao de informaes de extrema importncia para que se possa acessar
o contedo do banco de dados. Para consultar as informaes deve-se definir 3 elementos bsicos: 1- as colunas ou atributos que e deseja listar, 2- a(s) tabela(s) que
possui(em) 3- os dados, e finalmente os critrios para a busca dos registros.

Cadernos de Informtica

A Figura 10 exibe duas consultas que listam todas as colunas e registros das tabelas de
alunos e pontuaes, respectivamente.

24

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

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

Cadernos de Informtica

Figura 12:
Listagem do
nome e dos
pontos obtidos
em maro de
2004

25

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

4. REFERNCIAS

BIBLIOGRFICAS

Houaiss, Antnio; Villar, Mauro de Salles. Houaiss Dicionrio da Lngua Portuguesa


Portuguesa.
Rio de Janeiro: Objetiva, 2003.
MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/
documentation>. Acesso em: 20 dez. 2005.
Abiteboul, S. Hull, R., and Vianu, V. [1995] Foundations of Databases, AddisonWesley, 1995.

Cadernos de Informtica

Elmasri, Ramez A.; Navathe, Shamkant (200). Fundamentals of Database System


System,
Third Edition, Addison-Wesley, Menlo Park, CA.

26

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 2
1. INTRODUO

MODELAGEM DE DADOS

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

Cadernos de Informtica

2. DESCRIO

27

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

preciso que a empresa possua pessoas ou funcionrios capazes de desempenhar as


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

3. ASPECTOS

Cadernos de Informtica

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

28

GERAIS DO MODELO

ENTIDADE-RELACIONAMENTO

O modelo Entidade-Relacionamento (ER ou MER) constitui-se em uma simbologia que


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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Como discutido no captulo 1, toda entidade descrita por um conjunto de atributos


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

3.1. DESCRIO

DAS ENTIDADES PROBLEMA

ENTIDADE
EMPRESA

TIPO
FORTE

OBRAS
FUNCIONRIOS

FORTE
FORTE

CDIGO, NOME, DATAS DE INCIO


CPF, NOME, DATA DE NASCIMENTO

CARGOS

FORTE

CDIGO

EQUIPES

FRACA

Tabela 1: Entidades do banco de dados da construo civil

ATRIBUTOS
CDIGO, NOME, CNPJ E

TELEFONE

E DESCRIO

CDIGO

E NOME

E TRMINO
E ENDEREO

Cadernos de Informtica

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

29

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Para facilitar o trabalho de elaborao do diagrama ER, destacam-se na tabela o tipo de


cada entidade, bem como os atributos que as constituem. Estes foram definidos de
forma arbitrria, e a definio dos mesmos estar sempre vinculada ao problema abordado, no existindo nenhuma regra formal para a definio de quais atributos existiro. Observa-se a partir da tabela que os funcionrios so uma entidade forte j que existem independentemente das demais entidades do modelo. J as equipes so consideradas entidades
fracas, visto que s existiro caso haja funcionrios para a sua constituio.
A Figura 2 ilustra um diagrama que descreve os
elementos apresentados na Tabela 11, utilizando
os smbolos apresentados na Figura 11. Este modelo contm todas as entidades do problema proposto na seo 2.1, bem como os atributos que
sero considerados para a soluo do mesmo.

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

Na figura esto presentes todos os atributos e


aqueles que foram considerados como chave primria da entidade. Vale ressaltar que, assim como
a escolha dos atributos, a definio de qual (is) atributo (s) compor (o) a chave
primria depende nica e exclusivamente das necessidades especficas da aplicao. Ou
seja, os requisitos de dados do problema determinaro quais os atributos devero existir para cada entidade do modelo, bem como quais sero o identificador nico ou chave
primria da entidade.

3.2. DESCRIO

DOS RELACIONAMENTOS DO SISTEMA

Um relacionamento define uma interao entre duas entidades do modelo. No exemplo, existe um relacionamento entre as entidades funcionrios e equipes definindo que toda equipe
gerenciada por um funcionrio, e que um funcionrio poder gerenciar apenas uma equipe. Na Figura 3
est apresentado o diagrama que descreve
esquematicamente esta situao.

Cadernos de Informtica

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:

30

1- Um para um
2- Um para muitos
Figura 3:
Relacionamento
funcionrio
gerencia equipe

3- Muitos para muitos


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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

gerente, e ao mesmo tempo um funcionrio poder


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

Figura 5:
Relacionamento
de equipes que
executam obras

Figura 6:
Modelo ER
completo da
aplicao
proposta

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

Cadernos de Informtica

equipe
composta por
funcionrios

31

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

das e respeitadas pelos desenvolvedores do sistema. A Figura 6 contm o diagrama ER


completo para a aplicao da construo civil, descrita na seo 2.1.

4. MODELANDO

AS RESTRIES DE DADOS DO MODELO

A fase de modelagem de um banco de dados consiste em identificar os elementos que


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

4.1. RESTRIES DE

ATRIBUTOS

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

Cadernos de Informtica

4.2. INTEGRIDADE REFERENCIAL

32

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

4.3. NORMALIZAO

DE DADOS, ELIMINANDO A REDUNDNCIA

O conceito de normalizao est ligado ao fato de que no se devem manter informaes duplicadas dentro do banco de dados. Neste caso, durante o processo de criao
do banco a partir do modelo lgico proposto, preciso tomar o cuidado de eliminar
informaes redundantes ou duplicadas, nas tabelas que sero criadas.
Para ilustrar esta questo, retoma-se o exemplo do relacionamento entre funcionrio e
equipe. Ao criar as tabelas de funcionrios e equipes o endereo do funcionrio poderia
ser colocado, erroneamente, em abas as tabelas. Isto seria uma redundncia que poderia gerar inconsistncias na base de dados. Caso haja uma alterao do endereo do
funcionrio, esta informao dever ser modificada na tabela de equipes, o que gera
um esforo maior e pode gerar problemas, caso a alterao no seja efetuada em ambos
os locais. Neste caso, existem no sistema dois endereos distintos para um mesmo
funcionrio, o que incorreto ou inconsistente e pode levar a uma concluso errada.

Vale ressaltar que o modelo ER no apresenta nenhuma simbologia que indique qual o
nvel de normalizao desejado. Mas, existem algumas regras que devem ser aplicadas
durante o mapeamento fsico do banco de dados. Estas regras sero abordadas nos
captulos seguintes.

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

Cadernos de Informtica

Alm disto, esta abordagem geraria um desperdcio de espao para armazenar a mesma
informao duas vezes. Para evitar estas situaes, deve-se eliminar a redundncia de
dados a fim de se fazer um uso racional do banco de dados. Esta questo ser abordada
com mais detalhes no captulo seguinte, que trata da criao do banco de dados a partir
do modelo ER.

33

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

6. EXERCCIOS

DE FIXAO

1- O que voc entende por atributo?


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

7. REFERNCIAS BIBLIOGRFICAS

Batini, C., Ceri, S., and Navathe, S. [1992] Database Design: An Entity-Relationship
Approach, Benjamin/Cummings, 1992.

Campbell,

D., Embley, D., and Czejdo, B. [1985] "A Relationally Complete Query Language
for the Entity-Relationship Model," in ER Conference [1985].

Cadernos de Informtica

34

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 3
1. INTRODUO

FERRAMENTA DE MODELAGEM

DBDESIGNER4

O Captulo 2 apresentou uma viso geral dos mecanismos de modelagem de dados,


apresentando os conceitos de entidades, atributos e relacionamentos. Foi discutido o
modelo Entidade-Relacionamento (ER), bem como a simbologia empregada neste tipo
de diagrama, de forma a prover uma comunicao uniforme sobre a estrutura de dados
do problema abordado. Para ilustrar um diagrama ER, foi elaborado um esquema lgico
para uma aplicao de uma empresa de construo civil. O final do processo culminou
em um diagrama ER completo para a aplicao em questo.
O objetivo principal de um modelo lgico de banco de dados permitir a sua implantao utilizando um Sistema Gerenciador de Banco de Dados (SGBD) qualquer. Para isto, o
modelo deve ser convertido em tabelas, de forma a representar as entidades, atributos,
relacionamentos e restries impostas pelo modelo. Para isto, existem ferramentas ou
programas que so construdos com o intuito de facilitar a elaborao destes esquemas
facilitando a sua aplicao em um SGBD.
De um modo geral, estas ferramentas apresentam smbolos que permitem representar
todos os aspectos de um modelo ER. Como cada entidade de um diagrama ER compreendida pelo SGBD como uma tabela, estas ferramentas permitem a criao destas tabelas, alm de definir as suas colunas ou atributos, bem como definir os seus tipos de
dados. Ainda possvel salientar neste modelo quais so os atributos que definem as
chaves primrias e estrangeiras pertinentes ao problema.
Desta forma, como existem particularidades entre os diversos SGBD disponveis no mercado, preciso escolher a ferramenta de modelagem, geralmente chamadas de ferramentas CASE, que possua suporte para os recursos presentes no SGBD que ser utilizado
para o desenvolvimento da aplicao.

Neste curso, o MySQL foi adotado como o SGBD padro para ilustrar as aplicaes dos
bancos de dados propostos no decorrer dos captulos. Neste cenrio, preciso fazer
uso de um software que permita a interface com o SGBD MySQL, permitindo explorar
todos os recursos disponveis no mesmo. Da optou-se pela ferramenta chamada
DBDesigner4, que distribuda gratuitamente e pode ser encontrada no site http://
fabforce.net. Esta ferramenta desenvolvida especificamente para o MysQL e possui
suporte ao Sistema Operacional Linux e Windows.
Assim, as sees seguintes fornecem uma viso geral da ferramenta DBDesigner4, apresentando os seus principais recursos, e ilustrando um passo a passo para a sua utilizao na elaborao de um modelo simples de banco de dados.

Cadernos de Informtica

O objetivo deste captulo ilustrar uma ferramenta de modelagem de dados, utilizando-a para a elaborao de um modelo lgico para um problema simplificado. Com isto,
formam-se uma base de conhecimentos para que se possa no captulo seguinte, elaborar o diagrama que representa o sistema de construo civil. Isto , o modelo ER proposto no captulo 2 ser construdo dentro de uma ferramenta de modelagem.

35

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

2. INTRODUO

AO

DBDESIGNER4

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

Ao executar o comando exibido na figura anterior, o sistema abrir uma tela com um
novo modelo em branco, conforme visto na Figura 22.

Cadernos de Informtica

Figura 2: Janela
principal do
DBDesigner4

36

Nas subsees seguintes, sero apresentados os principais recursos disponveis nesta


ferramenta, de forma a permitir uma utilizao mnima de seus componentes para efetuar a construo de um modelo de banco de dados.

2.1. APRESENTAO DOS

COMPONENTES DO

DBDESIGNER4

A tela do DBDesigner4 exibida na Figura 2 apresenta um conjunto de elementos que


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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 3: Menu
de opes do
DBDesigner4

Existem basicamente oito tens de menu:


1- File
2- Edit
3- Display
4- Database
5- Plugins
6- Options
7- Windows
8- Help

Finalmente, as opes Windows e Help fornecem mecanismos para controlar a disposio das janelas do sistema, bem como o acesso a documentao detalhada do mesmo.
Esta documentao pode ser consultada para uma compreenso mais aprofundada do
sistema como um todo.

2.1.1. DESCRIO

DA OPO

FILE

Esta opo prov os principais mecanismos para a elaborao de um modelo de banco


de dados. Ao acionar este item de menu, ser exibido um conjunto de aes do sistema,
conforme ilustra a Figura 44.

Cadernos de Informtica

Estas significam respectivamente em portugus: 1. Arquivo, 2. Editar, 3. Exibir, 4. Banco de dados, 5. Acessrios, 6. Opes, 7. Janelas e 8. Ajuda. As opes File e Database
sero descritas com maiores detalhes nas prximas sees, por serem importantes para
a construo do modelo. Em relao s demais opes, o Edit apresenta funes para a
manipulao do modelo, tais como refazer ou desfazer aes, dentre outras. A funo
Display permite controlar o formato de exibio do diagrama, isto , a simbologia para
a representao das entidades e relacionamentos. As opes Plugins e Options permitem, respectivamente, adicionar funcionalidades acessrias ao sistema e controlar as
configuraes do seu sistema de modelagem.

37

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 4:
Explorando a
opo File

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

2.1.2. DESCRIO

DA OPO

DATABASE

Cadernos de Informtica

O DBDesigenr4 apresenta dentre outras caractersticas interessantes um mecanismo de


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

38

Estas funcionalidades esto disponveis atravs do menu Database (banco de dados)


exibido na Figura 55.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 5:
Explorando a
opo Database

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

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

Cadernos de Informtica

Figura 6: Abrindo
uma conexo com
o banco de dados

39

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Nesta tela devero ser informados o nome da conexo


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

Cadernos de Informtica

Figura 8:
Sincronizao
do modelo com
o SGBD

40

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 9:
Engenharia
reversa de um
banco de
dados

ou Engenharia reversa, que


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

2.2. APRESENTANDO A BARRA DE TAREFAS DO DBDESIGNER4


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

Cadernos de Informtica

Figura 10: Barra


de tarefas do
DBDesigner4

41

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

2.2.1. CRIANDO ENTIDADES NO DBDESIGNER4


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

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

Cadernos de Informtica

Figura 12:
Tabela para
armazenar os
pais

42

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2.2.2. DEFININDO

1 PARA MUITOS

1 PARA 1

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 exibe os componentes para a definio destes elementos.
Para ilustrar a criao de um relacionamento, suponha que fosse necessrio armazenar os Pais e os seus respectivos filhos. Desta forma, natural que o relacionamento seja do tipo um para muitos, j que um pai
pode ter mais de um filho associado. Para realizar esta tarefa, acione o
relacionamento 1:N, clique na entidade com cardinalidade 1, neste caso
Pais. Depois clique na segunda entidade, isto , com cardinalidade N,
que so os Filhos. Feito isto aparecer a situao ilustrada pela Figura
14
14.
Figura 13: Tipos de relacionamentos no DBDesigner4

Figura 14:
Relacionamento 1:N
entre Pais e Filhos

Cadernos de Informtica

MUITOS PARA MUITOS

43

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Assim, nota-se o aparecimento de uma conexo


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

3.

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

Cadernos de Informtica

4. EXERCCIOS

44

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 construiu no exerccio 8 do captulo 2.

5. REFERNCIAS BIBLIOGRFICAS

FabForce.net: DBDesigner4 online documentation. Disponvel em: http://


www.fabforce.net/dbdesigner4/doc/index.html. Acesso em: 20 dez. 2005.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 4
1.

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

Figura 1: Modelo
EntidadeRelacionamento
do sistema de
construo civil

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

2. CRIANDO

O 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 22.

Cadernos de Informtica

Assim, as sees seguintes ilustram passo a passo, os caminhos que devem ser seguidos
para a obteno deste banco de dados.

45

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

Cadernos de Informtica

Figura 3:
Conexo
para acesso
ao banco
de dados
curso

46

Vale ressaltar que o endereo


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

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.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.1. TIPOS

DE DADOS NO

MYSQL

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

CATEGORIA
NMEROS

TIPO
INTEGER
DOUBLE

DESCRIO
NMEROS INTEIROS
NMEROS REAIS OU PONTO-FLUTUANTE

TEXTOS
DATA E HORA

CHAR(X)
DATE

TEXTO COM TAMANHO MXIMO DE X CARACTERES


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 possvel armazenar uma informao textual em uma coluna de data, eliminando assim as
inconsistncias. Tendo em vista os tipos de dados ilustrados nesta seo possvel
elaborar o diagrama para todas as entidades do sistema, conforme mostrado na seo
3.2.

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 entidade como sendo uma tabela, onde as colunas definem os atributos, que por sua vez
necessitam de um tipo de dado. Por isto, os nomes entidades e tabelas sero empregados neste contexto como sinnimos, isto , representam uma mesma informao.
O procedimento completo para a criao de uma tabela est descrito no captulo 3, e
por isto no ser exposto novamente. Vale lembrar que todas as tabelas devem ser
criadas como InnoDB para que a integridade referencial funcione com sucesso.
A Figura 4 apresenta a tela de edio de tabelas do aplicativo, onde esto descritos
todos os atributos da entidade Empresa.

Cadernos de Informtica

3.2. DEFINIO

47

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 4:
Definio da
tabela
Empresa

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

Cadernos de Informtica

Figura 5:
Definio da
tabela Obras

48

A prxima tabela do sistema a que armazena os funcionrios da empresa. Esta tabela


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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 6:
Definio da
tabela
Funcionrios

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

Finalmente, a Figura 8 fornece a representao da entidade equipe que responsvel


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

Cadernos de Informtica

Figura 7:
Definio da
tabela
Cargos

49

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 8:
Definio da
tabela Equipes

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

Cadernos de Informtica

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

50

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.3. D EFININDO

OS RELACIONAMENTOS ENTRE AS TABELAS

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

Cadernos de Informtica

Para o caso de relacionamentos do tipo um para muitos, a chave primria da


entidade do lado um ser colocada na tabela com vrias ocorrncias (N). Com
isto possvel identificar a interdependncia entre as entidades. Neste caso,
aciona o elemento 1:N, clica na entidade 1 e depois na entidade N para construir o relacionamento corretamente. As Figuras 11, 12, e 13
13, representam
respectivamente os relacionamentos Equipes so compostas por Funcionrios,
Funcionrios possuem Cargos e Empresa constri Obras.

51

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 11:
Relacionamento Equipes
so compostas por
Funcionrios

Figura 10:
Relacionamento
Funcionrio
gerencia Equipe

Figura 12:
Relacionamento
Funcionrios
possuem
Cargos

Cadernos de Informtica

Figura 13:
Relacionamento
Empresa
constri Obras

52

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

Percebe-se na realidade que um relacionamento de muitos para muitos convertido


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

Cadernos de Informtica

Figura 15:
Diagrama
completo da
aplicao

53

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.4. CONVERTENDO

O MODELO PARA O BANCO DE DADOS CURSO

Uma vez concluda a modelagem do


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

4. CONCLUSES

Figura 16:
Sincronizao
do modelo com
o banco curso

Neste captulo foi elaborado um modelo lgico do sistema de construo


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

Cadernos de Informtica

5. REFERNCIAS

54

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.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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.

Cadernos de Informtica

Portanto, o objetivo deste captulo apresentar as principais caractersticas desta ferramenta de forma a possibilitar o seu entendimento e utilizao para a consulta ao
banco de dados.

55

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2.1. ABRINDO

UMA CONEXO COM O BANCO DE DADOS CURSO

Para iniciar o uso do MySQL Query Browser, basta abrir um terminal no Linux e invocar o
programa digitando o seu nome no prompt de comandos. Neste ponto deve-se garantir
que o mesmo est instalado e configurado para que esteja disponvel no PATH do Linux.
Assim, ao digitar mysql-query-browser no terminal do Linux, a tela exibida na Figura 1
aparecer imediatamente.

Cadernos de Informtica

No campo Stored Connection (Conexes armazenadas), ser informado um nome para a conexo
que poder ser utilizado para os futuros acessos
ao sistema, sem ter que informar todos os
parmetros novamente. Alm disto, deve-se informar o endereo da mquina onde se encontra
o MySQL (Server Host, que quer dizer Endereo do
servidor). Neste caso, o servidor MySQL e o MySQL
Query Browser esto instalados na mesma mquina, por isto utiliza-se localhost para identificar o
endereo do servidor MySQL. Outro parmetro para
a conexo a porta que o MySQL utiliza, por padro a 3306, conforme indicado na Figura 11.

56

Toda conexo ao SGBD requer um usurio


Username (nome do usurio), que neste caso ser
utilizado o root, da mesma forma que as situaFigura 1: Tela
es anteriores, e a senha digitada no campo Password (Senha). No caso o usurio root
para conexo do
no possui senha, portanto este campo dever ser mantido vazio. Finalmente, deve-se
MySQL Query
escolher qual o Default Schema, ou seja, o Esquema de banco de dados padro. No
Browser com o
MySQL
contexto de um SGBD um esquema se refere todos os objetos que compe a base de
dados do sistema. Neste caso, seriam o banco de dados e suas tabelas, procedimentos,
vises, dentre outros. No caso do MySQL, um esquema compreendido como um banco
de dados. Neste caso ser informado o nome do banco de dados que se deseja trabalhar
durante a conexo com o SGBD. Vale ressaltar que este banco de dados pode ser alterado

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

Os principais elementos do sistema so o editor de consultas, localizado no topo da


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

3.

EXPLORANDO

OS PRINCIPAIS RECURSOS DO

MYSQL QUERY BROWSER

3.1. UTILIZANDO

O EDITOR DE BANCO DE DADOS

A Figura 3 apresenta em destaque o editor de banco de dados do


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

Cadernos de Informtica

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

57

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

A Figura 5 ilustra a edio da tabela de cargos a partir do editor de tabelas do MySQL


Query Browser.

Cadernos de Informtica

Figura 5: Editor
de tabelas do
MySQL Query
Browser

58

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.2. CONHECENDO

O EDITOR DE CONSULTAS

SQL

DO SISTEMA

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

3.2.1. INSERINDO,

ALTERANDO E EXCLUINDO DADOS EM UMA TABELA

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

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

Cadernos de Informtica

Figura 6:
Tela com a
tabela de
cargos sem
registros

59

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

Cadernos de Informtica

Figura 8:
Alterao do
cargo de
engenheiro
para
engenheiro
civil

60

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 99.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 9:
Excluso do
cargo pedreiro

Finalmente para confirmar a operao acione o boto Apply Changes, localizado na


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

3.2.2. LEITURA

DE INFORMAES ARMAZENADAS EM UMA TABELA

Um banco de dados um repositrio de dados cujas informaes esto acessveis para


os seus usurios. Portanto, preciso realizar a leitura das informaes armazenadas
neste conjunto de tabelas, e o MySQL Query Browser fornece recursos para executar esta
tarefa.

A filtragem de dados consiste em escolher um subconjunto de dados dentro de um


conjunto maior de informaes. Por exemplo, uma pessoa pode optar por utilizar um
determinado nibus dentre as vrias linhas existentes na sua cidade. Isto a filtragem
de dados. A escolha de qual nibus utilizar baseada no destino ao qual se pretende
chegar, ou seja, dentre as diversas linhas existentes selecionam-se apenas aquelas que
levam at ao local desejado. Neste caso, o destino da viagem representa o critrio de
filtragem.
Alm de filtrar os registros de uma tabela pode-se ainda restringir as colunas que sero
retornadas pela consulta. Por exemplo, deseja-se exibir apenas o nome dos funcionrios, em vez de todas as colunas. Neste caso, o MySQL Query Browser oferece um conjunto
de ferramentas para a elaborao de consultas mais complexas. Estes componentes so
ilustrados na Figura 10
10.

Cadernos de Informtica

A leitura de todas as informaes de uma tabela pode ser feita a partir de um duplo
clique sobre o nome da tabela. Neste caso so mostrados todos os registros e colunas da
tabela, no editor de resultados, conforme visto na subseo anterior. Porm, em situaes reais torna-se necessrio especificar critrios ou filtros para a seleo de dados.

61

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

Figura 11:
Listagem dos
nomes de todos
os cargos

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

Cadernos de Informtica

Figura 12:
Seleo do
nome do cargo
com o cdigo 1

62

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

5. EXERCCIOS

DE FIXAO

1- Onde pode ser encontrada a ferramenta MySQL Query Browser?


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

REFERNCIAS

BIBLIOGRFICAS

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

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/


documentation>. Acesso em: 20 dez. 2005.

Cadernos de Informtica

6.

63

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 6
1.

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

Cadernos de Informtica

2. INTRODUO

64

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 podem ser armazenadas em um banco de dados, tais como endereos, imagens, datas,
nmeros, moedas, dentre outras. Conforme descrito anteriormente, todo atributo de
uma tabela necessita ter um domnio ou conjunto de valores aceitveis. Por exemplo,
ao definir a data de nascimento de uma pessoa no desejvel que o sistema permita
a insero de um texto neste campo. Em uma coluna que armazena os salrios dos
funcionrios devem-se ter apenas valores numricos e no datas e horas, por exemplo.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

TIPO DE DADO
INTEGER
DECIMAL(T,D)

FORMATO
NMEROS
T = TAMANHO
D = NMERO

DESCRIO
NMEROS INTEIROS
NMEROS COM PRECISO

FIXA TAIS COMO MOEDA.,

LEMBRANDO QUE O PONTO O SEPARADOR DA DE CASAS DECIMAIS


PARTE FRACIONRIA OU CENTAVOS

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

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

NMEROS REAIS COM QUANTIDADE DE CASAS DECIMAIS ELEVADA.


ARMAZENA A DATA NO FORMATO ANO-MS-DIA
ARMAZENA DATA E HORA EM UM NICO CAMPO NO FORMATA ANO-

MS-DIA HORA:MINUTO:SEGUNDOS

TEXTOS
TEXTOS LONGOS
BINRIOS

INFORMAES TEXTUAIS COM NO MXIMO T CARACTERES


INFORMAES TEXTUAIS LONGAS, TAIS COMO CURRCULOS, POEMAS,
ARMAZENAM DADOS NO FORMATO BINRIO, TAIS COMO MSICAS,

ETC

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 falecimento dos funcionrios, esta data em geral no conhecida no momento da incluso
do registro.
Para contornar esta situao existe um valor especial conhecido como NULL que denota
o fato de que a informao no conhecida. No caso da data de falecimento, pode-se
utilizar o valor NULL para os funcionrios que ainda esto vivos. possvel definir no
momento da criao da tabela se as colunas aceitam ou no este valor especial. Isto
feito atravs da clusula NOT NULL, que deve ser colocada nas colunas que no aceitaro o NULL, lembrando que por padro qualquer coluna aceita o NULL. importante
lembrar que colunas de qualquer tipo podem receber o valor NULL.

3. DESCRIO

DOS COMANDOS PARA DEFINIO DE DADOS

3.1. CRIANDO

E REMOVENDO UM BANCO DE DADOS

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

Cadernos de Informtica

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

65

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CREATE DATABASE nome_do_banco


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

Cadernos de Informtica

Para criar uma tabela preciso primeiro identificar os atributos e seus tipos de dados,
bem como as restries em relao ao valor NULL, isto , se havero colunas com valores indefinidos. Alm disto, necessrio identificar a chave primria da tabela, que o
conjunto de colunas que referenciam de forma nica cada registro da tabela.

66

Finalmente, para as tabelas que participam de algum relacionamento necessrio determinar as chaves estrangeiras e as restries que se aplicam sobre elas. Neste caso, o
objetivo da chave estrangeira identificar os registros que participam da relao e
impor as regras de integridade que regem o relacionamento. Por exemplo, em um relacionamento entre funcionrios e equipes, deve-se garantir que no haver um membro
da equipe que no esteja cadastrado na tabela de funcionrios. Ou em um relacionamento entre pais e filhos, deve-se garantir que no haver um filho sem um pai.
Para a criao de uma tabela utiliza-se o comando CREATE TABLE, cuja sintaxe bsica
est apresentada na Listagem 44.

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 44: Sintaxe do comando CREATE TABLE

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

3.2.1 ENTENDENDO

O CONCEITO DE CHAVE PRIMRIA

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

Cadernos de Informtica

nome char(60) NOT NULL,

67

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

nome char(60) NOT NULL,


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

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

Cadernos de Informtica

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

68

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.2.2 ENTENDENDO

O CONCEITO DE CHAVE ESTRANGEIRA

As demais tabelas do banco curso apresentam relacionamentos entre elas, obedecendo


s regras de integridade definidas pelo modelo lgico da aplicao. A Listagem 6 contm os comandos para a criao das tabelas funcionrios, obras e obras_tem_equipes.
CREATE TABLE funcionarios (
cpf char(20) NOT NULL,
Cargos_codigo int(10) unsigned NOT NULL,
nome char(60) NOT NULL,
nascimento date NOT NULL,
telefone char(20) NOT NULL,
PRIMARY KEY (cpf),
FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo)
) ENGINE=InnoDB;
CREATE TABLE obras (
codigo int(10) unsigned NOT NULL auto_increment,
Empresa_codigo int(10) unsigned NOT NULL,
nome char(50) NOT NULL,
inicio date NOT NULL,
termino date NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (Empresa_codigo) REFERENCES empresa (codigo) ON DELETE
CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE obras_tem_equipes (
Obras_codigo int(10) unsigned NOT NULL,
Equipes_codigo int(10) unsigned NOT NULL,
PRIMARY KEY (Obras_codigo,Equipes_codigo),
FOREIGN KEY (Obras_codigo) REFERENCES obras (codigo) ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Equipes_codigo) REFERENCES equipes (codigo) ON DELETE
CASCADE ON UPDATE CASCADE
Listagem 66: 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 estrangeiras, j que estas tabelas participam de relacionamentos. No caso da tabela de

Cadernos de Informtica

) ENGINE=InnoDB;

69

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

funcionrios, os registros desta tabela esto associados a registros existentes na tabela


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

Figura 2: Erro
na insero de
funcionrio com
cargo
inexistente

Percebe-se em destaque na figura que o sistema emitiu uma mensagem de erro indicando que uma restrio de integridade foi violada (Cannot add or update a child row: a
foreign key contraint fails, em portugus, No possvel adicionar ou alterar o registro: Falha de restrio de chave estrangeira), e desta forma o comando no executado.

Cadernos de Informtica

Existe ainda a situao onde uma alterao ou excluso de um cargo pode levar a uma
inconsistncia de dados na tabela de funcionrios. No caso de uma remoo ou modificao de um cargo para o qual existam funcionrios cadastrados, deve-se garantir que
o funcionrio no ficar com um cargo invlido.

70

Para isto, foram especificadas as restries de chave estrangeira ON UPDATE CASCADE e


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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Para ilustrar a utilizao das clusulas RESTRICT e CASCADE, considere um cadastro de


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

3.2.3 REMOVENDO

E ALTERANDO UMA TABELA

Finalmente, para remover uma tabela utiliza-se o comando DROP TABLE conforme ilustra a Listagem 77.
DROP TABLE nome_da_tabela
Listagem 7: Comando para a excluso de uma tabela

Outra situao comum no dia a dia da utilizao de um sistema de banco de dados a


necessidade de alterar a estrutura de uma tabela j existente. Por exemplo, supondo
uma alterao no modelo lgico da aplicao de forma que se tenha que armazenar a
data de entrada do funcionrio na empresa, o que no era necessrio anteriormente.
Para contemplar esta situao seria necessria a incluso de uma nova coluna do tipo
data tabela de funcionrios, previamente criada.
Em outro cenrio pode-se remover uma coluna, alterar o seu nome, ou at mesmo o tipo
de dados que ela armazena. Imaginando que o nome do funcionrio tenha sido definido
inicialmente com tamanho mximo de 15 caracteres ou letras, e surgiu um novo funcionrio com um nome extenso e que requer mais que 15 caracteres para ser armazenado. Neste
caso, o tipo do dado dever ser alterado para satisfazer esta nova condio.
O comando para modificar a estrutura de tabelas o ALTER TABLE, que pode ser utilizado para os propsitos apresentados anteriormente. A Listagem 8 fornece a sintaxe

Cadernos de Informtica

Ao executar este comando a tabela ser apagada por completo, juntamente com os
dados que por ventura estejam armazenados nela. Por isto, deve-se ter cuidado na
utilizao do mesmo para evitar resultados indesejados.

71

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

para a utilizao do comando ALTER TABLE.


ALTER
ALTER
ALTER
ALTER

TABLE
TABLE
TABLE
TABLE

nome_da_tabela
nome_da_tabela
nome_da_tabela
nome_da_tabela

ADD nome_da_coluna TIPO;


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

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

Com isto, finaliza-se a descrio da parte de definio de dados da linguagem SQL,


tornando possvel o entendimento e aplicao destes mecanismos para a construo de
bases de dados reais.

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

5. EXERCCIOS

DE FIXAO

1- Qual o significado do termo SQL?


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

6. REFERNCIAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/


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

Cadernos de Informtica

72

BIBLIOGRFICAS

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2. ENTENDENDO

OS COMANDOS

DMLLTERAO

DE DADOS

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

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

Cadernos de Informtica

2.1. INCLUINDO

73

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Na figura anterior percebe-se em destaque a mensagem Column count doesnt match


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

Cadernos de Informtica

Figura 2:
Exemplo de
insero do
cargo Mestre de
obras

74

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

No exemplo foi informado a lista de colunas (codigo e nome), e os valores 4 e Mestre


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

A mensagem You have na error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near Testes sem aspas), que
significa Voc tem um erro de sintaxe no seu SQL; verifique o manual que corresponde
verso do seu servidor MySQL para a sintaxe correta prximo de Testes sem aspas),
indica a ausncia das aspas para encerrar o nome.
J para a insero de dados numricos no preciso utilizar as aspas, conforme ilustra
o exemplo anterior.

Insero de empresas
INSERT INTO `empresa` VALUES (1,'Empresa de banco LTDA',
'888.888.8888-0001/88', '(31)3333-4444');
INSERT INTO `empresa` VALUES (2,'Empresa do curso LTDA',
'999.999.9999-0001/88', '(31)4444-55555');

Cadernos de Informtica

Como a base de dados est vazia e tendo em vista o preenchimento dos dados para que
possam ser feitos relatrios mais adiante, a Tabela 1 fornece os comandos para a insero de empresas, funcionrios, equipes, obras, bem como a incluso de equipes em
algumas das obras cadastradas, isto na tabela obras_tem_equipes.

75

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Cadernos de Informtica

INSERT INTO `obras_tem_equipes` VALUES (2,1);

76

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-

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

ms-dia, conforme ocorre na data de nascimento dos funcionrios.


Esta a sintaxe bsica do comando INSERT, existem variaes aceitveis deste comando, mas estas ficam fora do escopo deste livro, visto que este tem como objetivo apenas
fornecer uma viso geral acerca da linguagem SQL.

2.2. ALTERANDO

DADOS COM O COMANDO

UPDATE

Existem situaes em que h a necessidade de modificar uma informao armazenada


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

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

Cadernos de Informtica

Figura 4:
Atualizando o
telefone do
funcionrio com o
CPF
111.111.111-11

77

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

que no seja obtido um resultado indesejado.

2.3. EXCLUINDO

DADOS COM O COMANDO

DELETE

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

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

Cadernos de Informtica

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

78

3. INTRODUO

AOS COMANDOS PARA LEITURA DE DADOS

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

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 44, e a explicao de cada clusula que o constitui
sero apresentados no decorrer desta seo.
SELECT lista_de_colunas
FROM nome_da_tabela
WHERE critrio_de_seleo
GROUP BY lista_de_colunas
HAVING critrio_de_seleo_no_resultado
ORDER BY lista_de_colunas
Listagem 4: Sintaxe do comando SELECT

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

Cadernos de Informtica

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

79

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Figura 7:
Exibir todos
os atributos
de todas as
equipes

3.2. SELECIONANDO

REGISTROS COM O

WHERE

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

Cadernos de Informtica

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

80

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

a consulta SELECT nome, Cargos_codigo, nascimento FROM funcionarios WHERE


Cargos_codigo = 3 AND nascimento >= 1970-01-01, que responde a esta pergunta.

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

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

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

Cadernos de Informtica

Figura 10: Listar


o nome dos
funcionrios que
atuam como
pedreiro ou que
se chamam Jos
de Alencar

81

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

3.3. AGRUPANDO

DADOS COM O

GROUP BY

E SELECIONANDO COM O

HAVING

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

Cadernos de Informtica

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

82

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

3.4. ORDENANDO

O RESULTADO COM O

ORDER BY

Finalmente, a ltima clusula do comando SELECT se refere ordenao dos dados da


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

Cadernos de Informtica

Figura 14:
Listar os
cargos
ordenados por
nome

83

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

5. EXERCCIOS

DE FIXAO

1- Listar o nome de todas as equipes que comeam com a letra p.


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

Cadernos de Informtica

6.

84

REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/


documentation>. Acesso em: 20 dez. 2005.

Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec.

Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books.

Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport.

Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus.

Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly.

Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.

Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

2. TCNICAS

PARA EXTRAO DE DADOS EM MLTIPLAS TABELAS

- JOIN

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

Cadernos de Informtica

Desta forma torna-se possvel elaborar consultas sofisticadas para resolver questes
mais complexas em sistemas de bancos de dados. Alm disto, ser introduzido o conceito de funes, que na verdade so artifcios para realizar clculos ou transformaes
de dados. Um exemplo de funo o DATE_FORMAT que utilizado para formatar uma
data de acordo com o padro de data conhecido, e no no estilo ano-ms-dia, utilizado pelo MySQL.

85

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

estrangeiras, que so na verdade os atributos comuns entre duas tabelas.


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

Cadernos de Informtica

Figura 1:
Utilizando o
JOIN, problema
de ambigidade
de nomes de
colunas.

86

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 2:
Resolvendo a
ambigidade
de nomes de
colunas

PRODUTO CARTESIANO, UM ERRO COMUM NA ELABORAO DO

JOIN

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

Cadernos de Informtica

2.1. O

87

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 3:
Listando o nome
e os cargos dos
funcionrios

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

Cadernos de Informtica

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

88

Desta forma, possvel construir relatrios complexos atravs da unio de diversas


tabelas em um nico comando SELECT.

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 55. Esta figura exibe
um relatrio com todos os funcionrios que nasceram depois de 1970, exibindo tambm os seus cargos e equipes. O comando SELECT funcionrios.nome, cargos.nome
FROM funcionrios INNER JOIN cargos ON (cargos.cdigo = cargos_codigo) INNER JOIN
equipes ON (equipes.codigo = Cdigo_equipe) WHERE nascimento >= 1970-01-01.

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

No comando fcil identificar como as tabelas se relacionam, j que o critrio de juno


especificado imediatamente aps as tabelas utilizando-se a clusula ON. Neste caso
apenas os filtros sero colocados na clusula WHERE isolando os critrios de relacionamento entre tabelas. Vale lembrar que o resultado obtido com a vrgula o mesmo do
INNER JOIN, utiliza-se o ltimo apenas por questes de estilo e para facilitar a manuteno da consulta gerada.
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 comandos que permite resolver problemas bastante complexos, e que em algumas situaes

Cadernos de Informtica

3. ENTENDENDO

89

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

3.1. UTILIZANDO

UM

SELECT

DENTRO DA CLUSULA

SELECT

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

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

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

Cadernos de Informtica

3.2. UTILIZANDO

90

UM

SELECT

DENTRO DA CLUSULA

FROM

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

3.3. UTILIZANDO

UM

SELECT

DENTRO DA CLUSULA

WHERE

As consultas dentro da clusula WHERE so de grande utilidade especialmente para


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

Cadernos de Informtica

Figura 8: Nome
das equipes
contendo
funcionrios

91

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Figura 9: Nome
das equipes
envolvidas na
obra Ponte

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

Cadernos de Informtica

3.4. AGRUPANDO

92

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
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)).

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 10: Nome


dos funcionrios
pedreiros e
engenheiros

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

4. UTILIZANDO

FUNES PARA TRANSFORMAO DE DADOS

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

Uma funo pode ter um ou vrios argumentos, bem como pode no ter argumentos,
como o caso da funo NOW, que retorna a data e hora atual do sistema, conforme
ilustra a Figura 11
11, com o comando SELECT NOW().

Cadernos de Informtica

Listagem 1: Sintaxe de uma funo

93

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

Cadernos de Informtica

Figura 12:
Utilizando a
funo
DATE_FORMAT
para formatar
uma data

94

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.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

5.

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

6.

EXERCCIOS

DE FIXAO

1- Escreva um relatrio (SELECT) para listar o nome, a data de nascimento e nome da


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

REFERNCIAS

BIBLIOGRFICAS

MySQL AB: MySQL 5.0 Reference Manual. Disponvel em: <http://www.mysql.com/


documentation>. Acesso em: 20 dez. 2005.

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

Oliveira, Celso H. P. de (2002), SQL Curso Prtico, Novatec.

Jesus, Joo Batista de (2004) ANSI: SQL 89/92, Axcel Books.

Costa, Rogrio L. de C. (2004), SQL: Guia Prtico, Brasport.

Stephens, Ryan (2003), Aprenda em 24 horas SQL, 3 edio, Campus.

Gennick, Jonathan (2004), SQL Pocket Guide, O'Reilly.

Gulutzan, Peter; Pelzer, Trudy (1999), SQL-99 Complete, Really, CMP Books.

Gulutzan, Peter; Pelzer, Trudy (2002), SQL Performance tunning, 1st edition, AddisonWesley.

Cadernos de Informtica

7.

95

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 9
1. INTRODUO
Neste captulo sero estudados os aspectos relacionados administrao de um Sistema Gerenciador de Banco de Dados (SGBD), mais especificamente o MySQL, que a
ferramenta utilizada neste livro para ilustrar uma aplicao real de um SGBD.
Um SGBD constitui um servio ou engrenagem responsvel por armazenar e prover acesso
s informaes atravs da linguagem SQL. Para isto, estes sistemas mantm as suas
tabelas e bancos de dados dentro do sistema de arquivos fornecido pelo Sistema
Operacional (SO). Este por sua vez o responsvel por controlar todos os recursos da
mquina, bem como a execuo de todos os programas instalados nela. Portanto, o
SGBD cria um conjunto de arquivos e diretrios a fim de armazenar a sua estrutura de
dados.
Com isto, preciso configurar o SGBD indicando os parmetros para utilizao de discos, ou seja, quais arquivos e diretrios sero criados e onde sero colocados. Alm
disto, preciso definir a quantidade de memria que o sistema utilizar, bem como
definir as polticas de acessos aos dados e os usurios que tero acesso a estas informaes.
A administrao do banco de dados realizada pelo Administrador de Banco de Dados,
conhecido como DBA (DataBase Administrator). Esta a pessoa responsvel pela configurao do SGBD e pela manuteno dos dados, isto , criao, alterao e excluso de
bancos de dados e tabelas de acordo com a necessidade de modificaes do sistema.
Alm disto, o DBA deve criar os usurios para acessar os dados, bem como definir e
garantir o respeito s regras de acesso aos mesmos. Por exemplo, pode-se limitar o
acesso de um determinado usurio a ler somente uma tabela do sistema, enquanto
outro usurio tem acesso a todas as tabelas. Isto ocorreria, por exemplo, em um sistema de uma empresa onde nem todos os usurios devem ter acesso aos dados sobre
faturamento e folha de pagamento. Portanto esta restrio deve ser respeitada via
controle de acessos do SGBD.

Cadernos de Informtica

Por ltimo, mas no menos importante vem a questo das cpias de segurana dos
dados, conhecidas como backups. Estas cpias tm o objetivo de criar uma imagem dos
dados que possa ser utilizada caso haja alguma perda de informaes do sistema. Estas
perdas podem ser acarretadas por falhas em equipamentos, tais como discos ou por
usurios que realizam operaes indevidas. Por exemplo, apagam por engano toda a
base de dados de um sistema ou at mesmo uma nica tabela. Nestes casos, o DBA deve
utilizar esta cpia de segurana para restaurar os dados originais.

96

O objetivo deste captulo apresentar tcnicas para a execuo de tarefas administrativas do banco de dados, tais como as apresentadas anteriormente. Isto , devem-se
entender os papis do DBA, e compreender as operaes delegadas a ele. Para realizar
a administrao do MySQL, ser utilizada uma ferramenta conhecida como MySQL
Administrator, que fornece uma interface amigvel para a criao de usurios, configurao de parmetros do servidor, realizao de cpias de segurana e restaurao das
mesmas, e finalmente, o monitoramento da execuo do servidor. Para isto, ser dada
inicialmente uma viso geral desta ferramenta, e posteriormente sero discutidas as
principais tarefas administrativas do sistema.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

2. INTRODUO

AO

MYSQL ADMINISTRATOR

O MySQL Administrator uma ferramenta desenvolvida com o propsito de facilitar as


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

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

Cadernos de Informtica

Figura 2: Tela
inicial do MySQL
Administrator

97

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.

EXPLORANDO

AS OPES DA FERRAMENTA

MYSQL ADMINISTRATOR

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

3.1. CONTROLE

DO SERVIO

MYSQL

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

Figura 3: Menu
de tarefas do
MySQL
Administrator

Cadernos de Informtica

Figura 4:
Explorando a
opo Controle do
servio

98

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.2. CONFIGURANDO

OS PARMETROS DO SERVIDOR

MYSQL

Existe um vasto conjunto de parmetros relacionados ao servidor de banco de dados,


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

possvel notar que existe um conjunto considervel de parmetros, que esto organizados de acordo com os seus propsitos. A distribuio destes parmetros feita em
oito grupos: 1. General parameters (Parmetros gerais), 2. Security (Segurana), 3.
Networking (Configuraes de rede), 4. Advanced (Avanado), 5. Performance (Desempenho), 6. Log files (Arquivos de monitoramento), 7. Replication (Replicao de dados) e 8. InnoDB, MyISAM parameters (Parmetros para MyISAM e InnoDB ). Este livro
no abordar todos os conjuntos de parmetros disponveis, ficando restrito apenas a
exemplificar como alterar uma determinada configurao. O ajuste avanado das configuraes do servidor fica fora do escopo deste livro.
Portanto para alterar um parmetro qualquer, por exemplo, Key buffer (rea de memria para chaves ou ndices), basta digitar o novo valor desejado e ento acionar o
boto Apply changes (Confirmar alteraes), para confirmar a alterao. Assim, o novo
valor ser assumido pelo sistema imediatamente. Caso a alterao deva ser desfeita,
basta acionar o boto Discard changes (Descartar alteraes). Desta forma podem ser
alterados quaisquer parmetros do servidor de forma a adequ-los aplicao que o
utiliza, obtendo assim um melhor desempenho da aplicao como um todo.

Cadernos de Informtica

Figura 5:
Explorando as
configuraes
do sistema

99

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.3. ADMINISTRAO

DOS USURIOS DO SISTEMA

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

Cadernos de Informtica

Figura 6:
Explorando a
opo de
administrao
de usurios

100

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 7:
Criando um
novo
usurio
chamado
UsuarioCurso

Definida as informaes do usurio necessrio informar os seus privilgios acionando


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

Por ltimo possvel controlar a utilizao de recursos do sistema atravs do item


Resources (Recursos), tais como o nmero de atualizaes e conexes por hora. Concluda a entrada dos dados do usurio acione o boto Apply changes (Confirmar
alteraes) para confirmar a criao do usurio. Para descartar a incluso, o boto

Cadernos de Informtica

Figura 8:
Definindo o
esquema de
privilgios do
usurio
UsuarioCurso

101

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

Figura 9:
Concluindo a
insero do
usurio
UsuarioCurso

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

3.4. MONITORANDO

A ATIVIDADE DO SERVIDOR

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

Cadernos de Informtica

Figura 10:
Exibindo as
conexes de
usurios

102

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Alm de monitorar as conexes ou processos em execuo no SGBD, a segunda opo


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

Figura 11:
Monitorando a
utilizao de
memria

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

Cadernos de Informtica

Figura 12:
Acessando os
arquivos de log
do sistema

103

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Finalmente, esta ferramenta permite visualizar os bancos de dados do sistema, bem


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

Figura 13:
Acessando a
estrutura do
banco de dados
curso

3.5. REALIZANDO

CPIAS DE SEGURANA DO BANCO DE DADOS

Cadernos de Informtica

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.

104

As cpias de segurana devem ser feitas periodicamente garantindo que haver disponvel uma cpia atual dos dados, minimizando as perdas de dados. No MySQL
Administrator esta tarefa realizada a partir da opo Backup, onde ser criado um
projeto para a cpia dos dados desejados. Para isto, acionam-se boto New project
(Novo projeto), definem-se o nome do projeto, selecionam-se os bancos de dados a
serem copiados, e finalmente armazena o projeto acionando-se o boto Save project
(Salvar projeto), conforme ilustra a Figura 14
14.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

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

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

Cadernos de Informtica

Figura 15:
Especificando
o local e o
arquivo de
backup

105

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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


ilustra esta situao.

Figura 16:
Restaurao
de uma cpia
de segurana

Finalmente, acionando o boto Start restore (Iniciar restaurao), o banco de dados


ser restaurado para a posio em que se encontrava no momento em que o backup foi
realizado. Desta forma, toda a informao perdida devolvida para o sistema.

4. CONCLUSES
Este captulo ilustrou as principais rotinas para administrao de um sistema de banco
de dados, salientando as principais tarefas realizadas pelo DBA. O objetivo introduzir
a ferramenta MySQL Administrator como um sistema auxiliar, bem como formar conhecimento bsico sobre este procedimento para a manuteno do seu SGBD. importante
ressaltar, que o objetivo deste livro no formar um DBA em MySQL, mas sim apresentar
as rotinas pertinentes manuteno de um sistema de banco de dados, construindo
uma viso geral dos mesmo.

Cadernos de Informtica

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.

106

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.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

5- Execute o MySQL Administrator e liste todos os privilgios disponveis nesta ferramenta.


6- O que um esquema de banco de dados? E um catlogo?
7- O que voc entende por backup? D exemplos de sua utilizao.
8- O que a restaurao de uma cpia de segurana? Em quais situaes esta operao
seria realizada?

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.

Cadernos de Informtica

6. REFERNCIAS

107

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CAPTULO 10
1.

INTRODUO
No decorrer deste livro foram apresentados diversos conceitos acerca de um sistema de
banco de dados relacional. Para a elaborao de um sistema baseado em um banco de
dados relacional preciso passar por vrias etapas a fim de se determinar qual a estrutura final do mesmo. Inicialmente foram apresentadas as questes ligadas modelagem de dados. Nesta etapa foram definidas as entidades que compem o sistema, bem
como os seus atributos e as regras de integridade que se aplicam aos dados. O produto
final da etapa de modelagem o modelo lgico do banco de dados conhecido como
modelo Entidade-Relacionamento, ou somente modelo ER. Esta uma forma de representar o banco de dados graficamente permitindo a documentao do sistema.
A segunda etapa do processo se refere construo do banco de dados utilizando um
Sistema Gerenciador de Banco de Dados (SGBD), neste livro foi adotado o MySQL como
exemplo. Esta definio do banco de dados foi elaborada a partir do modelo ER, e foi
empregada a ferramenta DBDesigner4 para esta tarefa.
Uma vez construdo um banco de dados exemplo, denominado curso, foram apresentadas as tcnicas de consulta s informaes. Para efeito prtico a linguagem SQL foi
introduzida, sendo exibida a sua Linguagem de Definio de Dados (DDL), e a Linguagem para Manipulao de Dados (DML). Sobre a linguagem de consulta, esta uma
ferramenta que permite manipular as informaes contidas no banco de dados. Deste
modo, vrios exemplos de relatrios bsicos e avanados foram ilustrados, permitindo
o entendimento da mesma. Vale lembrar, que o MySQL Query Browser foi introduzido
possibilitando a sua utilizao para a extrao de dados do MySQL, sem a utilizao do
SQL explicitamente.

Cadernos de Informtica

Um sistema de banco de dados mantido pelo SGBD, e algumas tarefas tm que ser
executadas periodicamente a fim de se garantir o funcionamento adequado do sistema.
Para isto, foram discutidas as principais tcnicas de administrao de um sistema desta
natureza, alm de apresentar a ferramenta MySQL Administrator como um mecanismo
eficiente para a execuo destas operaes.

108

Neste ponto todos os aspectos importantes relativos utilizao de um sistema de


banco de dados j foram conceituados e exemplificados, possibilitando a sua aplicao
em um sistema real. No entanto as aplicaes reais operam em um contexto onde h
uma grande complexidade nos dados, bem como nas regras de utilizao dos mesmos.
Alm disto, em um ambiente prtico, ao contrrio do que ocorreu nos exemplos deste
livro, o banco de dados utilizado por diversos usurios simultaneamente. Isto introduz dificuldades e requer mecanismos para realizar o controle de concorrncia sobre os
dados. Exemplificando, no seria impossvel que em um sistema dois usurios tentassem alterar um mesmo registro ao mesmo tempo, e neste caso, deve-se garantir a integridade da informao.
Outro problema comum so as falhas que podem ocorrer durante uma operao, isto ,
pode haver uma queda de energia durante a manipulao das informaes e isto poderia levar a uma inconsistncia nos dados. No entanto, para contornar estas dificuldades
um SGBD prov mtodos para controlar o acesso simultneo aos dados, bem como
eliminar inconsistncias de informaes devido s falhas de sistema ou at mesmo de
usurios. Este recurso conhecido como controle de transaes, e ser apresentado

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

posteriormente neste captulo.


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

ENTENDENDO

O CONTROLE DE TRANSAES

Um SGBD transacional aquele que suporta uma transao ACID, ou seja, Atomicidade,
Consistncia, Isolamento e Durabilidade. Atomicidade consiste em executar um grupo
de comandos como se fosse nico, sendo que caso ocorra uma falha em um destes
comandos, toda a transao ser descartada levando a base de dados situao inicial.
O conceito de consistncia conseqncia da atomicidade, j que em caso de falhas do
sistema os dados sero restaurados para a situao inicial, eliminando assim as perdas
de informaes. O isolamento consiste em permitir que vrias transaes ocorram sobre
o mesmo dado e estas no interfiram umas nas outras, isto , garante o controle de
concorrncia sobre os dados. Finalmente, a durabilidade est associada ao fato de que
uma vez encerrada a sua transao os efeitos dela persistiro mesmo que haja uma
falha do sistema.
Para ilustrar a utilizao do controle de transao ser considerada uma tabela que
armazena os saldos de todos os correntistas de um determinado banco. Este cadastro
de clientes ilustrado pela Tabela 11, lembrando que esta tabela ser reproduzida no
MySQL, dentro do banco curso.

Cadernos de Informtica

2.

109

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

CDIGO
1

NOME
JOS DA SILVA

SALDO
2.000

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 11, ilustra a tabela de clientes aps a execuo dos comandos exibidos na
Tabela 11, atravs do MySQL Query Browser.

Cadernos de Informtica

Figura 1: Tela
com a tabela de
saldos dos
correntistas

110

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Figura 2:
Falha em uma
transferncia
de fundos
entre contas

A operao de transferncia, no ponto de vista do SGBD, consiste em executar dois


comandos UPDATE de forma a retirar a quantia de uma conta e depositar na outra. Ou
seja, um comando UPDATE ser responsvel pela reduo do saldo da conta do cliente
1 em R$100,00, e o segundo comando UPDATE deve fazer um acrscimo da mesma
quantia no saldo do cliente 2. Desta forma, o total em reais existentes nas duas contas
no se alterar ao final da operao, j que R$100,00 foram sacados da primeira conta
e depositado na segunda.
O cenrio descrito anteriormente seria perfeito desde
que houvesse garantia de que os dois comandos seriam executados sem problemas. Na verdade, em um sistema real no h como garantir que no haver uma
queda de energia durante a operao de transferncia.
Neste caso, pode ocorrer de o primeiro comando ser
executado com sucesso, realizando o saque na conta
do cliente 1, e devido esta falta de energia, o segundo comando no ser executado. Deste modo, o depsito da mesma quantia no seria feito na conta 2, o que
levaria a base de dados uma situao inconsistente,
ou seja, desapareceriam R$100,00. A Figura 2 ilustra a
execuo desta operao e a situao final em que se
encontram os saldos das contas. Vale destacar que para
simular a queda de energia, a ferramenta encerrada
no meio da transao acionando o X no canto superior direito da tela. Desta forma, impe-se uma interrupo abrupta no processo durante a sua execuo, similar quela que ocorreria durante a falha de energia.

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

Existem trs comandos bsicos que so o START TRANSACTION, COMMIT e


ROLLBACK. O primeiro marca o incio da transao, o segundo confirma todos os comandos executados at o momento, ou seja, a confirmao da
transao. Caso queira desfazer todos os comandos de uma transao basta enviar um
ROLLBACK, que todos os comandos executados at este momento sero desfeitos automaticamente. Assim, quando ocorrer uma falha no meio da transao o SGBD no receber a confirmao (COMMIT), e ento desfar todo o processo retornando a base de
dados para a situao em que se encontrava no incio da operao. A Figura 4 ilustra a
mesma operao de transferncia utilizando o controle de transao.

Cadernos de Informtica

Para resolver este problema deve-se entender a operao de transferncia como uma nica transao, composta de mais de um comando. Desta forma, a transao s seria processada se todos os comandos que a
constitui forem executados com sucesso. Para isto,
preciso indicar para o SGBD o incio e o trmino da sua transao. No MySQL
Query Browser existem as teclas para o controle de transao, conforme ilustra
igura 33.
a Figura

111

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

Neste caso, ao encerrar o MySQL Query Browser


no meio da transao o primeiro comando
UPDATE que havia sido executado foi desfeito
pelo SGBD, devolvendo a quantia para a conta
1, eliminado assim a perda de dados ocorrida
no caso onde no foi utilizado este controle.
A Figura 5 ilustra a transao completa aps
a execuo do comando COMMIT, neste caso
todas as alteraes foram aplicadas com sucesso, e a quantia foi movimentada entre contas sem perdas de informaes, ou seja, de
modo consistente.

Cadernos de Informtica

Figura 4: Transferncia
bancria com controle de
transao

112

Figura 5:
Confirmando a
transferncia
bancria com o
COMMIT

Pode ocorrer ainda de aps terem sido executados os dois comandos para realizar a transferncia de fundos, haja a necessidade de desistir da operao. Neste caso, utilizando o
controle de transao isto bem simples de
ser feito, basta acionar o comando ROLLBACK.
Desta forma tudo que tenha sido realizado at
o momento ser desfeito. Assim, o saque e o
depsito sero desfeitos e o saldo inicial ser
restabelecido, da mesma forma como ocorre
no exemplo da Figura 44.
Este um pequeno exemplo do uso do controle de
transaes em um sistema
real. Este um mecanismo
complexo e indispensvel
em determinados sistemas, visto que ele fornece
uma garantia de consistncia das informaes
contidas no banco de dados, mesmo em situaes
de falhas, muito corriqueiras na prtica.
importante ressaltar que
existem outros aspectos a
respeito do controle de
transaes que sero omitidos neste livro, j que o
objetivo aqui apenas fornecer os conceitos bsicos
acerca deste recurso.

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

3.

UTILIZANDO

A REPLICAO PARA OBTER ALTA DISPONIBILIDADE

Aplicaes crticas exigem, em geral, que as informaes estejam sempre disponveis


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

O grande benefcio desta abordagem que como existem diversas cpias idnticas dos
dados, em mquinas distintas, a aplicao no fica vulnervel a um problema localizado
no servidor que acessado primariamente pela aplicao. Considerando que caso ocorra um dano no equipamento, a aplicao pode ser redirecionada para um dos demais
servidores e continuar operando como se nada tivesse ocorrido ao sistema de banco de
dados.

4.

TRABALHANDO

COM ROTINAS ARMAZENADAS NO

SGBD

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

Cadernos de Informtica

Alm desta segurana um sistema de replicao permite que mais usurios acessem as
informaes simultaneamente, j que estes acessos podem ser distribudos entre os
vrios servidores existentes. Dado que a informao contida nestas mquinas igual,
permitida a distribuio de carga, aumentando consideravelmente o desempenho do
sistema como um todo.

113

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

O objetivo deste recurso permitir uma padronizao do acesso aos dados e garantir
que a base de dados no ser levada para uma situao de inconsistncia. Para ilustrar
este recurso, ser considerada a tabela de clientes criada na seo anterior. Tomando
como exemplo a transao de transferncia bancria, existem algumas regras que devem ser cumpridas durante este procedimento. Por exemplo, no se deve permitir que
um cliente faa uma transferncia de uma quantia
superior ao saldo de sua conta.
Assim, para garantir o cumprimento deste requisito, interessante criar uma rotina que antes de realizar a operao, verifica se h saldo suficiente. A
execuo do procedimento s prossegue se houver
uma quantia suficiente de dinheiro na conta de onde
ser feito o saque. Desta forma, todo usurio do
sistema que venha a realizar esta operao no precisar conhecer os detalhes que cercam esta operao, bastaria apenas invocar esta rotina que j est
escrita e armazenada no SGBD. A Figura 7 ilustra a
criao e utilizao de uma rotina que transfere uma
quantia qualquer entre duas contas quaisquer.

Figura 7:
Rotina para
transferncia
bancria

A rotina chamada transfere_quantia recebe trs argumentos como parmetros, que so uma conta de
origem (conta_origem), a conta de destino
(conta_destino), e a quantia a ser transferida entre
elas (quantia). A rotina executa uma consulta para verificar se o saldo da conta de
origem superior quantia a ser transferida. Caso no tenha saldo suficiente, a mensagem Saldo insuficiente ser impressa. Caso contrrio, a transferncia ser realizada. A
Figura 7 ilustra a chamada desta rotina exemplificando o resultado nas duas situaes
ilustradas anteriormente. Os comandos executados so CALL transfere_quantia(1, 2,
300000), CALL transfere_quantia(1, 2, 100) e SELECT * from clientes c. Perceba que
para executar um procedimento basta utilizar o comando call (Chamar).
Portanto, com a utilizao de rotinas armazenadas possvel esconder a complexidade
dos dados dos usurios, e padronizar o acesso base de dados. O exemplo serve apenas
como uma motivao para a utilizao deste recurso. Vale ressaltar que existem detalhes sobre esta abordagem que foram omitidos por estar fora do escopo deste livro.

Cadernos de Informtica

Com isto, tem-se uma viso geral do que e qual a aplicao prtica deste recurso,
possibilitando um entendimento bsico deste mecanismo que amplamente utilizado
em aplicaes reais.

114

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

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

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

6. EXERCCIOS

DE FIXAO

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

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.

Cadernos de Informtica

7. REFERNCIAS

115

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

116

Cadernos de Informtica

CURSO DE INTRODUO AOS BANCOS DE DADOS


Secretaria de Estado de Educao MG

117

S-ar putea să vă placă și