You are on page 1of 181

Governador

Cid Ferreira Gomes


Vice Governador
Domingos Gomes de Aguiar Filho
Secretria da Educao
Maria Izolda Cela de Arruda Coelho
Secretrio Adjunto
Maurcio Holanda Maia
Secretrio Executivo
Antnio Idilvan de Lima Alencar
Assessora Institucional do Gabinete da Seduc
Cristiane Carvalho Holanda
Coordenadora da Educao Profissional SEDUC
Andra Arajo Rocha

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

FASE I : INTRODUO A BANCO DE DADOS


1. Conceitos Iniciais
A rea de banco de dados de grande importncia no mundo da
informtica, uma vez que a informao um bem precioso e deve ser
armazenada de forma coerente e adequada, pois de fundamental importncia
na tomada de deciso de uma empresa.
Existem vrios tipos de banco de dados e eles esto presentes na nossa
vida h muito tempo, a lista telefnica, por exemplo, pode ser considerado um
banco de dados. Voc mesmo j deve ter ligado para algum atendimento
eletrnico e ouviu a atendente dizer: Espere um pouco que estamos
consultando nosso banco de dados. Quando voc utiliza o facebook, tambm
est fazendo uso de um banco de dados, pois ele armazena em um sistema de
banco de dados suas informaes pessoais, mensagens dos amigos, fotos,
etc. Se voc sair de sua pgina e entrar novamente, suas informaes ainda
estaro l, isso ocorre porque suas informaes foram armazenadas em um
banco de dados, e, portanto, podem ser recuperadas a qualquer momento,
quando o usurio solicitar.
Antigamente as empresas armazenavam informaes em arquivos
fsicos, como fichas de cadastro, mas o surgimento e evoluo dos
computadores possibilitaram o armazenamento de dados de modo digital.
Assim os bancos de dados evoluram e se tornaram o corao de muitos
sistemas de informao.
Atualmente, por mais simples que seja um sistema de informao ele
precisar armazenar dados, de forma que possa recuper-los e/ou alter-los
quando necessrio. Por exemplo, se voc desenvolver um sistema de
informao para a biblioteca da escola, este sistema dever armazenar dados
dos alunos, dos livros, dos emprstimos realizados e devolues. para
armazenar essas informaes e recuper-las quando necessrio de forma
rpida e segura que utilizamos um sistema de banco de dados.

1.1.

Dado, informao, fato e metadados

Muitos consideram dados e informaes como palavras sinnimas, mas


na verdade no so. Para entender o que um banco de dados muito
importante conhecer alguns conceitos bsicos.

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Dado: qualquer elemento identificado em sua forma bruta que, por si


s, no conduz a uma compreenso de determinado fato ou situao.
(Oliveira, 2005).
Fato: um conjunto de dados relacionados. Registram o mundo real.

Informao: um agrupamento de dados de forma organizada para


fazer sentido, gerar conhecimento, e auxiliar na tomada de decises de
uma empresa.
Metadado: So dados sobre dados. Fornecem uma descrio das
caractersticas dos dados e do conjunto de relacionamentos que ligam
os dados encontrados no banco de dados.

Para os conceitos acima temos o seguinte exemplo: O ano 2013 no faz


nenhum sentido se voc visualiz-lo sozinho. Se voc agora analisar um
conjunto de dados relacionados (fato), como: Brasil, 2013, 1 Lugar, Copa
das Confederaes. Esse fato registra algo do mundo real e a partir dele voc
chega informao de que O Brasil foi campeo da Copa das Confederaes
do ano de 2013. Os metadados so algumas informaes que voc pode ter a
respeito de cada dado, por exemplo: Brasil (Pas nome do dado, texto tipo
do dado), 2013 (Ano nome do dado, numrico tipo do dado).
1.2.

Histrico dos Bancos de Dados

Como citado anteriormente antigamente as empresas armazenavam


dados em fichas de papel que eram organizadas em arquivos fsicos atravs de
pastas. Extrair informaes e manter esses arquivos organizados era uma
tarefa muito custosa. Alm disso, o acesso informao dependia da
localizao geogrfica dos arquivos. Enfim esses arquivos fsicos evoluram
para arquivos digitais. No incio cada entidade (clientes, funcionrios, produtos,
etc.) era um arquivo de dados que eram acompanhados de um software
simples para manipular os dados do arquivo, esses softwares permitiam
realizar operaes de cadastro, alterao, excluso e consulta nos arquivos
digitais. De fato melhorou bastante, principalmente a tarefa de consulta de
informaes, porm os arquivos digitais eram ainda uma verso melhorada dos
arquivos fsicos, mas as entidades precisavam relacionar-se, por exemplo, um
produto fornecido por um fornecedor, e com os arquivos digitais relacion-las
no era uma tarefa muito trivial, os softwares simples para manipular os
arquivos digitais comearam a ficar complexos para permitir os
relacionamentos entre entidades.
Na dcada de 60 a empresa IBM investiu fortemente em pesquisas para
solucionar estes problemas dos bancos de dados digitais primitivos. Em 1970,
Edgar Ted Codd, matemtico funcionrio da IBM, escreveu um artigo que

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

viria a mudar tudo isso. Apresentou um modelo relacional onde usurios, sem
conhecimento tcnico, poderiam armazenar e extrair grandes quantidades de
informaes de um banco de dados. Na poca, ningum percebeu que as
teorias obscuras de Codd desencadeariam uma revoluo tecnolgica
comparvel ao desenvolvimento dos computadores pessoais e da internet.
Apesar de ter sido o marco dos bancos de dados relacionais, o artigo de
Codd no foi muito explorado no incio. S no final da dcada de 70 que a IBM
desenvolveu um sistema baseado nas ideias do cientista, o Sistema R. Junto
com esse sistema foi criado a linguagem de consulta estruturada (SQL
Structured Query Language) que se tornou a linguagem padro para bancos de
dados relacionais. Embora tenha contribudo para a evoluo dos bancos de
dados relacionais, o System R no foi muito bem sucedido comercialmente,
tendo em vista que a IBM voltava-se para o IMS, um sistema de banco de
dados confivel, de alta tecnologia, que havia surgido em 1968.
Entre os leitores do artigo de Codd estava Larry Ellison, que havia
acabado de fundar uma pequena empresa. Recrutando programadores do
Sistema R e da Universidade da Califrnia. Ellison conseguiu colocar no
mercado o primeiro banco de dados relacional com base em SQL em 1979, o
Oracle 2, bem antes da IBM. Em 1983, a empresa lanou uma verso porttil
do banco de dados, teve um faturamento bruto anual de US$ 5.000.000 e
mudou seu nome para Oracle. Impelida pela concorrncia, a IBM finalmente
lanou o SQL/DS, seu primeiro banco de dados relacional, em 1980. Na
sequencia vieram SQL Server, MySQL, DBase III, Paradox, etc.
Em 2007, as vendas globais de sistemas de gerenciamento de banco de
dados chegaram ao pico de US$ 15 bilhes com a Oracle detendo uma
participao de praticamente metade do mercado, seguida pela IBM, com
menos de um quarto. A participao do SQL Server da Microsoft cresceu mais
rpido do que a de seus competidores, chegando a 14%.
1.3.

O que um Banco de Dados?

A partir do j exposto nas sees anteriores podemos ento dizer que


banco de dados, ou base de dados, uma coleo de dados interrelacionados, representando informaes sobre um domnio especfico, ou
seja, sempre que for possvel agrupar informaes que se relacionam e tratam
de um mesmo assunto, podemos dizer que temos um banco de dados. Os
bancos de dados tem o objetivo de fornecer os dados necessrios aos
Sistemas de Informao para processamento e gerao de informao para os
usurios.
Vale lembrar que um banco de dados projetado, construdo e
preenchido com dados para um propsito especfico. Ele representa algum

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

aspecto do mundo real, algumas vezes chamado de mini-mundo. Mudanas


no mini-mundo provocam mudanas no banco de dados.
O usurio pode realizar 4 operaes bsicas sobre um banco de dados
que so:

Insero: onde ele pode inserir um novo dado no banco;


Remoo: quando ele apaga alguma registro de dados;
Atualizao: quando ele edita ou altera algum registro;
Consulta: quando ele quer apenas visualizar os dados contidos no
banco de dados.

Essas operaes sobre o banco de dados no acontecem diretamente,


os usurios as realizam a partir de um sistema de informao. Esse sistema de
informao fica conectado a um Sistema Gerenciador de Banco de Dados, que
acessa os dados realizando as operaes solicitadas pelo usurio.
Podemos dizer que um Sistema de Banco de Dados envolve 4
componentes bsicos: Dados, Software, Hardware e Usurio. Sobre o Dado j
explicamos que o componente principal, so os registros que sero
armazenados. Hardware toda a parte fsica, a mquina em si. Alguns o
resumem apenas ao computador, mas um erro, visto que mesmo um celular
pode enviar e receber dados. Software toda a parte lgica, os programas
aplicativos, os programas de acesso aos dados, at mesmo o sistema
operacional. Sobre os Usurios, alguns livros os dividiram em trs tipos: o
Administrador de Banco de Dados, responsvel por monitorar e gerenciar todas
as bases de dados criadas no SGBD; o Programador de Aplicativos,
responsvel por modelar a base de dados e implementa-la no SGBD, bem
como desenvolver a aplicao que se conectaro ao Banco de Dados; e o
Usurio Final, que iro trabalhar diretamente com a aplicao desenvolvida,
entrando com dados e no precisam ter nenhum conhecimento sobre banco de
dados, o que importa pra ele que os dados fiquem armazenados.
1.4.

Abstrao de Dados

O grande objetivo de um sistema de banco de dados prover aos


usurios uma viso abstrata dos dados. Isto , o sistema omite certos detalhes
de como os dados so armazenados e mantidos. Entretanto, para que o
sistema possa ser utilizado, os dados devem ser buscados de forma eficiente.
Este conceito tem direcionado o projeto de estrutura de dados complexas para
a representao de dados em um banco de dados. Uma vez que muitos dos
usurios de banco de dados no so treinados para computao, a
complexidade est escondida deles atravs de diversos nveis de abstrao
que simplificam a interao do usurio com o sistema.

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Nvel Interno ou fsico: o nvel mais baixo de abstrao descreve como


os dados esto realmente armazenados. Neste nvel se desenham os
arquivos que contm a informao, a localizao dos mesmos e sua
organizao, ou seja, criam-se os arquivos de configurao.
Nvel conceitual: o prximo nvel de abstrao descreve quais dados
esto armazenados de fato no banco de dados e as relaes que
existem entre eles. Aqui o banco de dados inteiro descrito em termos
de um pequeno nmero de estruturas relativamente simples. Embora as
implementaes de estruturas simples no nvel conceitual possa
envolver complexas estruturas de nvel fsico, o usurio do nvel
conceitual no precisa preocupar-se com isso. O nvel conceitual de
abstrao usado por administradores de banco de dados, que podem
decidir quais informaes devem ser mantidas no BD;
Nvel externo ou de viso: o mais prximo ao usurio e descreve
apenas parte do banco de dados. Apesar do uso de estruturas mais
simples do que no nvel conceitual, alguma complexidade perdura
devido ao grande tamanho do banco de dados. Muitos usurios do
sistema de banco de dados no estaro interessados em todas as
informaes. Em vez disso precisam de apenas uma parte do banco de
dados. O nvel de abstrao das vises de dados definido para
simplificar esta interao com o sistema, que pode fornecer muitas
vises para o mesmo banco de dados.

Figura 2.1 Nveis de Abstrao de Dados

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

EXERCCIOS
1. Qual a importncia dos bancos de dados para os Sistemas de Informao?
_______________________________________________________________
_________________
2. O que um Banco de Dados? Cite dois exemplos de sistemas que voc
acredita que utiliza banco de dados.
_______________________________________________________________
_______
3. Qual a diferena entre dado, fato, informao e metadados?
_______________________________________________________________
___
4. Quais os principais componentes de um Sistema de Banco de Dados?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_____________________
5. Quais as operaes bsicas que o usurio pode realizar em um banco de
dados?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_____________________
6. Quais os nveis de abstrao de um Banco de dados?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_____________________

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

2. Sistema Gerenciador de Banco de dados - SGBD


Tudo que fazemos em um banco de dados passa pelo SGBD! Ele
responsvel por salvar os dados no HD, manter em memria os dados mais
acessados, ligar dados e metadados, disponibilizar uma interface para
programas e usurios externos acessem o banco de dados (para banco de
dados relacionais, utilizada a linguagem SQL), encriptar dados, controlar o
acesso a informaes, manter cpias dos dados para recuperao de uma
possvel falha, garantir transaes no banco de dados, enfim, sem o SGBD o
banco de dados no funciona!
Podemos ento definir um Sistema Gerenciados de Banco de Dados
como um o conjunto de programas de computador (softwares) responsveis
pelo gerenciamento de uma base de dados. Seu principal objetivo retirar da
aplicao cliente a responsabilidade de gerenciar o acesso, a manipulao e a
organizao dos dados. O SGBD disponibiliza uma interface para que seus
usurios possam incluir, alterar ou consultar dados previamente armazenados.
O SGBD ento responsvel por manipular os dados contidos no banco de
dados. Porm suas funcionalidades vo muito alm de manipulao de dados,
ele tambm responsvel por definir e construir um banco de dados.
2.1.

Caractersticas de um SGBD

O SGBD faz todo o gerenciamento de transaes dos bancos de dados


contidos nele. Uma transao em um banco de dados consiste em um conjunto
de operaes que so tratadas como uma unidade lgica indivisvel. Por
exemplo, quando vamos fazer uma transferncia bancria, so feitas no
mnimo duas operaes, a retirada do dinheiro da conta de quem est
transferindo e o depsito na conta da pessoa que vai receber o valor
transferido, ou seja, a transferncia o conjunto dessas operaes.
As transaes realizadas pelo SGBD nos bancos de dados devem
seguir algumas propriedades fundamentais conhecidas como ACID
(Atomicidade, Consistncia, Isolamento e Durabilidade).

Atomicidade: Capacidade de uma transao ter todas as suas


operaes executada ou nenhuma delas. tudo ou nada. Caso a
transao no acontea totalmente o banco de dados executa um
rollback e retorna ao seu estado consistente anterior, caso todas a
transao acontea executado o commit;
Consistncia: A execuo de uma transio deve levar o banco de
dados de um estado consistente a outro estado consistente.

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Isolamento: A propriedade de isolamento garante que a transao no


ser interferida por nenhuma outra transao concorrente.
Durabilidade: A propriedade de durabilidade garante que o que foi
salvo, no ser mais perdido.

Alm da gerencia de transaes o SGBD possui algumas caractersticas


que permitem controlar e acompanhar melhor os dados armazenados. As
caractersticas bsicas de um SGBD so:

Controle de Redundncias - A redundncia consiste no


armazenamento de uma mesma informao em locais diferentes,
provocando inconsistncias. Se uma mesma informao estiver
armazenada em mais de um lugar pode acontecer de voc atualizar em
um lugar e esquecer-se de atualizar no outro, ficando o banco de dados
inconsistente.
Controle de concorrncia - O SGBD permite que duas ou mais
pessoas acessem a mesma base de dados ao mesmo tempo e o
sistema deve controlar para que um acesso no interfira no outro. Um
sistema de compras Web por exemplo vrias pessoas podem realizar
uma compra ao mesmo tempo, e o prprio SGBD controla pra que os
dados de todas as compras sejam gravados corretamente.
Controle de Acesso - O SGDB tem mecanismos para criao de regras
de segurana, que vo desde a definio de login e senha para os
usurios, at a permisso de acesso ao SGBD e acesso aos dados
armazenados. possvel definir por exemplo que um usurio tem
permisso somente para leitura de dados, e um outro usurio tenha
permisso para criar base de dados e manipul-la, mas no pode criar
novos usurios ou fazer backup.
Controle de Integridade Um SGBD pode definir regras que garantem
a integridade dos dados. Essas regras so definidas para garantir que
os dados contidos no banco de dados estejam corretos. Por exemplo,
podemos definir uma regra em um banco que o campo sexo pode
receber somente M para masculino e F para feminino, no aceitando
outro tipo de letra, o que deixaria dados errados no banco.
Backups - O SGBD apresenta facilidade para recuperar falhas de
hardware e software, atravs da existncia de arquivos de "pr-imagem"
ou de outros recursos automticos, exigindo minimamente a interveno
de pessoal tcnico.

Existem vrios SGBD, e cada um deles implementa um banco de dados


(ou vrios) de maneira diferente, mas para o usurio isso quase transparente,
pois a linguagem de acesso aos dados a mesma, o SQL.

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Os fatores que levam a escolha do SGBD so tempo de resposta,


segurana, preo, espao para armazenamento, quantidade de processos que
podem ser realizados por minutos, entre outras caractersticas. Abaixo temos
os principais SGBD do mercado.

Firebird

PESQUISA
1. Pesquise na internet um comparativo das principais vantagens e
desvantagens dos principais SGBDs existentes no mercado.
Sugesto: Dividir as turma em equipes, onde cada equipe ficar responsvel
por pesquisar sobre um SGBD. Realizar um debate sobre as vantagens e
desvantagens enfocando suas caractersticas(tempo de resposta, segurana,
preo, espao para armazenamento, quantidade de processos que podem ser
realizados por minutos, etc.)
2.2.

Arquitetura do SGBD

Quanto a arquitetura o SGBD pode ser classificados dentre quatro tipos:

Banco de Dados [Informtica]

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

2.2.1. Arquitetura Stand-Alone (Sistema de Computador Pessoal)

Os computadores pessoais trabalham em


sistema stand-alone, ou seja, fazem seus
processamentos sozinhos. O SGBD roda na
prpria mquina. No comeo esse processamento
era bastante limitado, porm, com a evoluo do
Figura 3.1 Arquitetura Stand-Alone
hardware, tem-se hoje PCs com grande
capacidade de processamento. Eles funcionam
como hospedeiros e terminais. Desta maneira, possuem um nico aplicativo a
ser executado na mquina. A principal vantagem desta arquitetura a
simplicidade.
2.2.2. Arquitetura Centralizada

Nessa arquitetura existe um computador


com grande capacidade de processamento, o qual
o hospedeiro do SGBD e emuladores para os
vrios aplicativos. Esta arquitetura tem como
Figura 3.2 Arquitetura Centralizada
principal vantagem a de permitir que muitos usurios
manipulem grande volume de dados. Sua principal
desvantagem est no seu alto custo, pois exige ambiente especial para
mainframes e solues centralizadas.

2.2.3. Arquitetura Cliente-Servidor

Nesse tipo de arquitetura o cliente (front_end) executa as tarefas do


aplicativo, ou seja, fornece a interface do usurio (tela, e processamento de
entrada e sada). O servidor (back_end) executa as consultas no SGBD e
retorna os resultados ao cliente. Apesar de ser uma
arquitetura bastante popular, so necessrias solues
sofisticadas de software que possibilitem: o tratamento de
transaes, as confirmaes de transaes (commits),
desfazer transaes (rollbacks), linguagens de consultas
(stored procedures) e gatilhos (triggers).
O servidor de banco de dados faz a verdadeira
operao de busca e retorna somente os dados que
preencham corretamente a consulta do usurio. O sistema
cliente servidor possui algumas vantagens como: menor
intensidade de trfego de dados na rede comparado a

Banco de Dados [Informtica]

Figura 3.3 Arquitetura Cliente-Servidor

10

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

arquitetura distribuda; so rpidos, pois as consultas so feitas em servidores


de alta potencia. A maior desvantagem dessa arquitetura que eles exigem
que os dados sejam armazenados num nico sistema.
2.2.4. Arquitetura Distribuda

Nesta arquitetura, a informao est distribuda em diversos servidores.


Cada servidor atua como no sistema cliente-servidor, porm as consultas
oriundas dos aplicativos so feitas para qualquer servidor
indistintamente. Caso a informao solicitada seja mantida
por outro servidor ou servidores, o sistema encarrega-se
de obter a informao necessria, de maneira
transparente para o aplicativo, que passa a atuar
consultando a rede, independente de conhecer seus
servidores, tanto os dados como as funes de
processamento so distribudos em diversos locais.
Nos sistemas distribudos os dados podem estar
replicados, ou seja, eles se repetem em cada n da rede,
o que aumenta a disponibilidade do banco, ou os dados podem estar
fragmentados, ou seja, divididos por vrios ns da rede, aumentando a
velocidade pois permite processamento paralelo.
Dentre as vantagens dos sistemas distribudos
Figura 3.4 Arquitetura Distribuida
esto o menor risco de falhas, pois quando um n falha, o
trabalho mantido pelos outros ns da rede entre e outras
vantagens. Como desvantagem essa arquitetura mais complexa de ser
implementada, e mais propensa a falhas de segurana tendo em vista os
dados estar espalhados em vrios locais.

EXERCCIOS
1. O que um SGBD, e qual sua principal funo?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
2. Umas das caractersticas de um SGBD o gerenciamento de transaes. O
que uma transao no contexto de banco de dados?

Banco de Dados [Informtica]

11

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
3. Explique cada uma das propriedades ACID do gerenciamento de transaes
do SGBD.
a.Atomicidade:
_______________________________________________________________
_____________________________________________________________
b.Consistncia:
______________________________________________________________
_______________________________________________________________
c.Isolamento:
______________________________________________________________
_______________________________________________________________
d.Durabilidade:___________________________________________________
_______________________________________________________________
_______________________________________________________________
4. Quando um SGBD executa um rollback?
_______________________________________________________________
_______________________________________________________________
5. Explique com suas palavras cada uma das caractersticas do SGBD.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
6. Quais as principais arquitetura de SGBD? Aponte vantagens e desvantagens
de cada um deles.
_______________________________________________________________
_______________________________________________________________
______________________________________________________________

Banco de Dados [Informtica]

12

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

FASE I I: MODELAGEM DE BANCO DE DADOS


3. Introduo a Modelagem de Dados
Como vimos na primeira fase de nosso aprendizado um banco de dados
um conjunto de dados devidamente relacionados, e representam algum
aspecto no mundo real. Para obtermos um banco de dados que atenda as
necessidades de forma eficiente e coerente precisamos fazer a modelagem
dos dados que sero armazenados no banco. O objetivo
da modelagem de dados transmitir e mostrar uma
representao nica, no redundante, e resumida, dos
dados de uma aplicao. A fase de modelagem a
principal etapa no projeto de desenvolvimento de um
banco de dados. Por isso muito importante que se
dedique tempo e esforo no desenvolvimento de uma boa
modelagem de dados.
O projeto de desenvolvimento de um banco de
dados compreende as seguintes fases:

Modelagem
conceitual:
refere-se
ao
desenvolvimento de um modelo inicial da base de
dados que reflitam as necessidades do usurio.
Essa modelagem preocupa-se em descrever quais
dados sero armazenados na base de dados e
quais dados se relacionam. Para fazer o modelo
conceitual necessrio entender que dados o usurio final espera que o
sistema disponibilize. A modelagem conceitual fornece uma viso mais
prxima do modo como os usurios visualizam os dados realmente.
Modelagem lgica: Compreende o processo de desenvolver como os
dados sero armazenados no sistema e como iro se relacionar. Isso
significa transformar o modelo conceitual obtido na primeira fase num
modelo mais prximo da implementao, ou seja, fornece uma viso
mais detalhada do modo como os dados so armazenados no
computador. Nessa fase tambm so criados os dicionrios de dados, e
feita verificao se o modelo est normalizado, veremos os conceitos de
normalizao de dados mais a frente.
Implementao do modelo lgico: Uma vez que toda a etapa de
modelagem esteja concluda, ser necessrio implementar ou criar a
base de dados no SGBD escolhido. Essa fase requer que o
desenvolvedor conhea a linguagem SQL e conhea o SGBD
selecionado.

Banco de Dados [Informtica]

13

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Um ponto importante a se destacar aqui que para ser possvel criar


uma modelagem da base de dados necessrio grande interao do usurio
ou responsvel pela anlise de requisitos do sistema. Essa interao se faz
necessria uma vez que o projetista da base de dados, para desenvolv-la,
precisa ter uma clara compreenso do que o usurio espera do sistema, que
tipo de relatrios o usurio espera que este disponibilize, bem como saber
quais so os objetivos do sistema. A modelagem de dados tem como base
para seu inicio o levantamento de requisitos do sistema.

3.1.

Modelo de Dados

Um modelo de dados compreende a descrio de dados que devem ser


armazenados pelo sistema e como esses dados devem se relacionar. Para que
seja possvel fazer essa descrio, utilizada uma linguagem de modelagem,
que pode ser textual ou grfica. Um modelo de dados deve explicitar os tipos
de dados armazenados e as restries que esses dados possuem. Diversos
modelos de dados foram propostos e esto divididos em trs diferentes grupos:
Modelos baseados em registros, baseados em objetos e modelos fsicos.
3.1.1. Modelos baseados em Registros

So usados na descrio de dados nos nveis conceitual e viso,


especificam tanto a estrutura global, como uma descrio em auto nvel da
implementao, dividem-se em:

Modelo Hierrquico - O modelo hierrquico foi o primeiro a ser


reconhecido como um modelo de dados. Ele organiza os dados de cima
para baixo, como uma rvore e definido como uma coleo de
registros conectados por meio de ligaes, onde cada registro uma
coleo de campos e cada campo contm um nico valor. O registro da
hierarquia que precede a outros o registro-pai, os outros so
chamados
de
registros-filho.
Os
dados
so
classificados
hierarquicamente, em formato de rvore descendente.
Modelo em Rede - O modelo em redes surgiu como uma extenso ao
modelo hierrquico, eliminando o conceito de hierarquia e permitindo
que um mesmo registro estivesse envolvido em vrias associaes,
criando conexes bastante complexas e so bastante utilizados em
sistemas para computadores de grande porte.

Banco de Dados [Informtica]

14

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Modelo Relacional - O modelo relacional apareceu devido


necessidade aumentar a independncia de dados nos SGBDs e prover
um conjunto de funes apoiadas em lgebra relacional para
armazenamento e recuperao de dados. o modelo mais utilizado hoje
no mercado, pois se revelou ser o mais flexvel e adequado ao
solucionar os vrios problemas que se colocam no nvel da concepo e
implementao da base de dados.

3.1.2. Modelos baseados em Objetos

Usados na descrio de dados no nvel conceitual e viso, proporcionam


ampla e flexvel capacidade de estruturao e permitem a especificao de
restries de dados de forma explicita. Entre os modelos mais conhecidos
esto:

Modelo Entidade-Relacionamento - o modelo que est sendo


largamente utilizado na prtica, ele se baseia numa percepo do
mundo real e consiste numa coleo de objetos bsicos chamados de
entidades e de relacionamento entre estes objetos.
Modelo Orientados a Objetos No modelo OO toda e qualquer
entidade do mundo real representada por um modelo conceitual, o
objeto. Um objeto sempre estar associado a um estado e um
comportamento. A motivao para seu surgimento est em funo dos
limites de armazenamento e representao semntica impostas no
modelo relacional. So muito utilizados em sistemas de informaes
geogrficas (SIG), os sistemas CAD e CAM, que so mais facilmente
construdos usando tipos complexos de dados. Possui algumas
desvantagens como falta de padronizao das linguagens de
manipulao dos dados, alto custo de aquisio das novas tecnologias;

3.1.3. Modelos Fsicos

Usados para descrever os dados em seu nvel mais baixo. Capturam os


aspectos de implementao do SGBD.

EXERCCIOS
1. Qual o objetivo da modelagem de um banco de dados?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________

Banco de Dados [Informtica]

15

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

_______________________________________________________________
_______________________________________________________________
___________________________________
2. Quais as etapas de um Projeto de Desenvolvimento de um Sistema de
Banco de Dados? O que feito em cada uma dessas etapas?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
3. O que so modelos de dados?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
4. Qual a diferena entre os modelos orientados a registros e os modelos
orientados a objetos? Cite exemplos de cada um deles.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________

4. Modelo Entidade-Relacionamento (MER)


O Modelo Entidade-Relacionamento um modelo conceitual, e deve
estar o mais prximo possvel da viso que o usurio tem dos dados. Tem por
objetivo descrever quais dados devero ser armazenados pela aplicao e
como esses dados se relacionam. Nele esto representadas todas as
entidades de interesse do domnio da aplicao, com seus respetivos atributos
e o relacionamento existente entre as entidades. Este modelo representado
de forma grfica pelo Diagrama de Entidade-Relacionamento (DER).
Existem algumas ferramentas que auxiliam na criao deste modelo.
Nesta apostila utilizaremos o brModelo, uma ferramenta de cdigo aberto
extremamente compacto e leve, podendo rodar diretamente de pendrives ou

Banco de Dados [Informtica]

16

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

qualquer outro dispositivo porttil. Alm disso, no necessrio instal-lo,


basta fazer o download no site: http://sis4.com/brModelo.
4.1.

Entidades

Uma entidade representa um conjunto de objetos de um mesmo tipo do


mundo real e sobre os quais se pretende armazenar dados. Geralmente as
entidades so reconhecidas por serem substantivos e uma forma simples de
identifica-las em um domnio de aplicao fazer as seguintes perguntas:

Sobre que objetos ou coisas precisamos guardar informao?


H mais de um objeto deste tipo?
Existe uma chave capaz de identificar cada um dos objetos
unicamente?

Para ser entidade as trs perguntas acimas precisar ter respostas


afirmativas.
Vamos ver como funciona:

Figura 5.1 Nota de compra de produtos

A imagem acima uma nota de compra de uma empresa. Para esta


aplicao o pedido uma provvel entidade. Vamos verificar se ele atende os
requisitos para que seja uma entidade.
PERGUNTAS
H necessidade de
guardarmos
informao dos pedidos?
Pode haver mais de um pedido?

RESPOSTAS
a

Existe uma chave capaz de identificar cada


um dos pedidos unicamente?

Sim, temos que guardas as informaes de


todos os pedidos.
Sim, existem diversos pedidos e no apenas
um.
Sim, cada pedido realizado possui um nmero
nico para controle de pedidos.

Verifique agora as perguntas para a quantidade da imagem acima

Banco de Dados [Informtica]

17

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

PERGUNTAS

RESPOSTAS

H necessidade de
guardarmos
informao da quantidade?
Pode haver mais de uma quantidade?

Existe uma chave capaz de identificar cada


quantidade unicamente?

A partir deste ponto vamos tomar como exemplo para um melhor


entendimento do modelo Entidade-Relacionamento, um pequeno sistema de
banco de dados de uma escola, de acordo com o levantamento de requisitos
abaixo:
Uma escola precisa de um sistema para guardar os registros de dados
de alunos, professores, disciplinas e turmas. Nesse sistema preciso saber do
aluno: matricula, nome, data de nascimento; dos professores importante
guardar informaes como: matricula, nome, cpf, telefone, endereo e data de
nascimento. O professor pode possui telefone celular e residencial. Cada turma
tem um nome e um cdigo, assim como as disciplinas tambm tem nome e
cdigo. Um professor pode dar aula de vrias disciplinas em vrias turmas.
Uma disciplina pode ser ministrada por mais de um professor. Um aluno s
pode fazer parte de uma nica turma.
Podemos citar ento como entidades desse sistema: professor, aluno,
disciplina, turma, curso. Cada uma dessas entidades armazenar um conjunto
de objetos do mesmo tipo. Uma entidade representada graficamente por um
retngulo com o nome da entidade dentro do retngulo. Por exemplo:

Figura 5.2 Exemplo de Entidade

4.2.

Atributos

Cada entidade possui algumas propriedades que definem suas


caractersticas. Essas caractersticas das entidades so chamadas de
atributos. Por exemplo, para a entidade Professor, necessrio armazenar
dados como: CPF, nome, telefone, endereo, data de nascimento, matricula.
Esses dados so atributos da entidade Professor e so eles que caracterizam
um objeto do tipo professor.

Banco de Dados [Informtica]

18

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 5.3 Exemplo de Entidade com atributos

Um atributo pode ser representado graficamente por uma bolinha


ligando a entidade com o nome do atributo ao lado, conforme figura 5.3.
Alguns atributos podem ser divididos em subpartes com significados
independentes. Por exemplo, o atributo endereo_professor da entidade
Professor acima, pode ser dividido em: rua, numero, bairro, cidade, estado e
CEP. Um atributo que composto de outros atributos mais bsicos chamado
atributo composto. J, atributos que no so divisveis so chamados
atributos simples. Os atributos compostos podem ser representados como na
Figura 5.4.

Figura 5.4 Exemplo de atributo composto

Muitos atributos tm apenas um nico valor. Esses atributos so


chamados
atributos
monovalorados,
por
exemplo,
o
atributo
data_de_nasc_prof da entidade Professor. Em outros casos, um atributo
pode ter um conjunto de valores, tais atributos so chamados de atributos
multivalorados, por exemplo, o professor pode possuir mais de um telefone,
um residencial e um celular. Um atributo multivalorado representado na figura
5.5.

Banco de Dados [Informtica]

19

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 5.5 Exemplo de atributo multivalorado

Um atributo derivado aquele cujo valor deriva de outro(s) atributo(s).


Por exemplo, podemos acrescentar ao professor do exemplo acima, o atributo
idade que calculado automaticamente a partir da data de nascimento e data
atual pela prpria aplicao ou SGBD.
Um atributo tem um valor nulo quando uma entidade no possui um
valor para ele. O valor nulo representa a inexistncia de um valor, ou seja,
significa que o usurio no precisa cadastrar um valor para o atributo e pode
deixa-lo vazio. Em algumas situaes inevitvel que permitamos valores
nulos para os atributos, por exemplo, digamos que seja acrescentado
entidade professor o atributo email. Alguns professores possuem email, outros
no. Aqueles que no possurem email tero nesse campo um valor nulo, ou
vazio.
Um conjunto de atributos que tem a propriedade de identificar
univocamente uma ocorrncia (instncia) de uma entidade chamado de
identificador desta entidade. Toda entidade deve possuir um identificador. O
identificador tambm conhecido como Chave Primria (Primary Key PK).
Voc deve ter reparado que na entidade Professor, o atributo matricula_
professor definido com uma bolinha pintada, esta a forma de representar a
chave primria da entidade professor.

CHAVE PRIMRIA

Figura 5.6 Exemplo de chave primria em uma entidade

Banco de Dados [Informtica]

20

Escola Estadual de Educao Profissional


4.3.

Ensino Mdio Integrado a Educao Profissional

Relacionamento

Um relacionamento uma associao entre as entidades. Como vimos


no inicio da apostila os dados devem ser armazenados e estarem relacionados
na base de dados para que possamos utiliz-los eficientemente. O
relacionamento entre os dados o que nos permite descobrir, dadas duas
entidades como Professor e Disciplina, qual a disciplina que o professor

leciona, conforme mostra a figura 5.7.

Representao de um relacionamento

Figura 5.7 Exemplo de Relacionamento

Um relacionamento representado por um losango como o nome do


relacionamento no centro. O nome do relacionamento representa a relao que
existe entre as entidades. Esse nome pode ser um verbo, como por exemplo:
pertence, leciona, estuda, possui, etc.; ou tambm pode ser uma composio
dos nomes das entidades: Aluno_Turma ao invs de pertence.
Um relacionamento pode ter atributos. Esses atributos so denominados
de atributos descritivos. Imagine que seja necessrio armazenar a ano em que
um professor lecionou determinada disciplina. O atributo ano, no pode
pertencer nem a entidade Professor e nem a entidade Disciplina. Esse
atributo pertence ao relacionamento leciona, ou seja, um atributo do
relacionamento. E ele s deve ser preenchido com um valor, quando for feita a
relao entre professor e disciplina.

Banco de Dados [Informtica]

21

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 5.8 Exemplo de atributo descritivo

EXERCCIOS
1. Para que serve o Diagrama Entidade Relacionamento?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________________
2. Defina o que entidade e d pelo menos trs exemplos de entidades
(diferente dos apresentados na apostila).
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
3. Defina atributo e cite 4 atributos para cada entidade que voc citou na
questo 2.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________________
4. Quais os tipos de atributos? Explique cada um deles.
_______________________________________________________________
_______________________________________________________________

Banco de Dados [Informtica]

22

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

5. Explique o que chave primria e para que ela serve. Apresente 3 exemplos
de atributos que poderiam ser chave primria e explique o porque.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________________
6. Uma chave primria pode assumir valor nulo? Explique sua resposta.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________
7. Dado o DER abaixo, coloque os atributos para cada entidade e marque as
chaves primrias para cada entidade.

8. Dado diagrama abaixo, pode-se afirmar que a entidade Endereo possui


trs chaves primrias? Explique sua resposta.
_______________________________________
_______________________________________
_______________________________________
_______________________________________
_______________________________________
_______________________________________
_______________________________________
_______________________________________
__

4.4.

Cardinalidade de um relacionamento

A cardinalidade indica quantos objetos (instancias) de uma entidade,


podem se relacionar com outra entidade atravs de um relacionamento.

Banco de Dados [Informtica]

23

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Na hora de fazer a cardinalidade de um relacionamento deve ser


considerado as cardinalidades mnimas e mximas.

Cardinalidade mnima: o nmero mnimo de instncias de uma


entidade que devem se relacionar com uma instncia de outra entidade.
A cardinalidade mnima usada para indicar o tipo de participao da
entidade em um relacionamento e sempre ocupa a primeira posio
dentro do parntese que representa a cardinalidade. Esta participao
no relacionamento pode ser:
Mxima 1 ou N

Mxima 1 ou N

Mnima 0 ou 1

Mnima 0 ou 1

Figura 5.9 Exemplo de Cardinalidade em um relacionamento

o Parcial ou Opcional: quando uma ocorrncia da entidade pode


ou no participar de determinado relacionamento; indicado pela
cardinalidade mnima = 0 (zero). Por exemplo, na figura 5.10,
pode existir algum professor que diretor da escola. Observe que
ser diretor na escola no obrigatrio, por isso atribumos o valor
0 (zero), ao relacionamento dirige, no lado escola.
o Total ou Obrigatria: quando todas as ocorrncias de uma
entidade devem participar de determinado relacionamento;
indicado pela cardinalidade mnima = 1. Na figura 5.10, uma
escola obrigatoriamente dirigida por um professor.

Figura 5.10 Exemplo de cardinalidade Mnima

Cardinalidade mxima: o nmero mximo de instncias de uma


entidade que podem se relacionar com uma instncia de outra entidade.
A cardinalidade mxima pode assumir valores 1 e N, e ocupa a segunda
posio dentro do parntese que denota a cardinalidade de uma
entidade em relao a outra.

Banco de Dados [Informtica]

24

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

o Cardinalidade 1:1 (Um para Um) Ocorre quando uma instancia


de uma entidade pode se relacionar a apenas um objeto de outra
entidade e vice-versa. Por exemplo, na figura 5.10, um professor
diretor de uma escola, e uma escola s pode ser dirigida por um
professor.
o Cardinalidade 1:N (Um para muitos) Ocorre quando uma
instancia de uma entidade pode se relacionar com mais de um
objeto de outra entidade, mas a recproca no verdadeira. Por
exemplo, na figura 5.11, em uma escola podem lecionar vrios
professores, porm um professor s pode lecionar em uma
escola.

Figura 5.11 Exemplo de Relacionamento Um para Muitos

o Cardinalidade N:N (Muitos para muitos) Ocorre quando uma


ocorrncia de uma entidade pode se relacionar com mais de um
objeto de outra entidade e vice versa. Por exemplo, um professor
pode lecionar mais de uma disciplina, assim como uma disciplina
pode ser lecionada por mais de um professor.

Figura 5.12 Exemplo de Relacionamento Muitos para Muitos

Quando queremos descobrir a cardinalidade de um relacionamento


fazemos a seguinte pergunta: Um objeto da minha entidade X, pode estar

Banco de Dados [Informtica]

25

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

relacionamento no mnimo com quantos objetos da minha entidade Y? E no


mximo?.
Vamos verificar o relacionamento casamento de uma entidade homem, e
mulher. Fazemos ento a pergunta acima:

Um homem pode ser casado no mnimo com quantas mulheres na outra


entidade? E no mximo?

Uma mulher pode ser casada no mnimo com quantos homens na outra
entidade? E no mximo?

4.5.

Grau de um Relacionamento

O grau de um relacionamento indica quantas entidades esto envolvidas


em um relacionamento. E pode ser classificado em binrio e ternrio.

Relacionamento binrio - aquele em que duas entidades esto


ligadas por um relacionamento. O relacionamento da figura 5.12, um
exemplo de relacionamento binrio, pois um professor est relacionado
a uma disciplina.
Relacionamento ternrio - quando existem trs entidades envolvidas
em um relacionamento. Digamos que queremos acrescentar na nossa
modelagem que um professor leciona uma disciplina para uma turma.
Teramos ento que associar mais uma entidade ao relacionamento
leciona. Ficaramos ento com um relacionamento ternrio, mostrado na
figura

Banco de Dados [Informtica]

26

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

5.13.

Figura 5.13 Exemplo de relacionamento ternrio

Relacionamentos maiores que ternrios devem ser evitados, pois so


difceis de serem entendidos e de serem implementados tornando a relao
bastante complexa.
Quando no possvel definir uma chave primria, nem simples e nem
composta, para uma entidade, temos uma entidade fraca. A entidade fraca
dependente de outra entidade, e o relacionamento entre ela e outra entidade
normalmente 1:N. Representamos uma entidade fraca, com a linha que liga
seu relacionamento em negrito, como mostra o exemplo na figura 5.14.

Representao de uma entidade fraca


Figura 5.14 Exemplo de entidade Fraca

EXERCCIOS
1. O que cardinalidade? Qual a diferena entre cardinalidade mnima e
mxima?
_______________________________________________________________
_______________________________________________________________

Banco de Dados [Informtica]

27

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

2. O que determina o grau de um relacionamento?


_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________________
3. O que uma entidade fraca?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
3. Nos diagramas abaixo, para cada entidade defina no mnimo 3 atributos, sua
chave primria e a cardinalidade dos relacionamentos:

4. Desenhe o diagrama das situaes abaixo, definindo no mnimo 3 atributos


para cada entidade, a chave primria e a cardinalidade do relacionamento.
a) Uma universidade tem muitos estudantes e um estudante pode se
dedicar a no mximo uma universidade.
b) Uma aeronave pode ter muitos passageiros, mas um passageiro s
pode estar em um vo de cada vez.
c) Um paciente pode ter muitos mdicos e um mdico muitos pacientes.
d) Uma nao possui vrios estados, e um estado, muitas cidades. Um
estado s poder estar vinculado a uma nao e uma cidade s poder
estar vinculado a um estado.

Banco de Dados [Informtica]

28

Escola Estadual de Educao Profissional


4.6.

Ensino Mdio Integrado a Educao Profissional

Auto-relacionamento

Dizemos que existe um auto-relacionamento quando uma entidade se


relaciona com ela mesma. Por exemplo, digamos que no exemplo que estamos
trabalhando da escola alguns poucos alunos representam grupos de outros
alunos em reunies e assuntos estudantis. Poderamos criar uma nova
entidade representante, porm a entidade representante teria os mesmos
atributos do aluno, ento ao invs de criar uma nova entidade, podemos
simplesmente criar uma relao representante e auto-relacionar a entidade
aluno conforme a figura 5.15.

Figura 5.15 exemplo de auto-relacionamento

4.7.

Relacionamento mutuamente exclusivo

Um relacionamento mutuamente exclusivo aquele em que uma


ocorrncia de uma entidade pode estar associada com ocorrncias de outras
entidades, mas no simultaneamente. Por exemplo uma conta pertence uma
pessoa jurdica ou pessoa fsica, nunca aos dois ao mesmo tempo.

Banco de Dados [Informtica]

29

Escola Estadual de Educao Profissional


4.8.

Ensino Mdio Integrado a Educao Profissional

Especializao e Generalizao

Especializao consiste na subdiviso de uma entidade mais genrica


(ou entidade pai) em um conjunto de entidades especializadas (ou entidades
filhas). Isso ocorre quando um conjunto de entidades pode conter subgrupos de
entidades com atributos especficos para cada subgrupo. A figura 5.16
apresenta um exemplo de especializao entre as entidades Pessoa,
Professor e Aluno.
A especializao indicada por um triangulo, e as entidades filhas esto
relacionadas com a entidade pai por meio deste triangulo.

Figura 5.16 exemplo de especializao

As entidades filhas herdam todos os atributos da entidade pai e,


portanto, no se devem repetir os atributos da entidade pai nas entidades
filhas. Isso significa que os atributos que aparecem na entidade pai so os
atributos que existem em comum entras as entidade filhas. No diagrama da
figura 5.16, os atributos da entidade Pessoa (rg_pessoa, telefone_pessoa e
nome_pessoa), sero herdados pelas entidades filhas Professor e Aluno.
Tambm no necessrio indicar uma chave primria para as entidades
filhas. As chaves primrias para as entidades filhas sero definidas no modelo
relacional.
Para utilizar uma especializao, deve-se analisar antes se as entidades
filhas possuem atributos especficos ou relacionamentos especficos ou ainda
outra especializao. Se as entidades filhas no possurem nem atributos
especficos, nem relacionamento especfico, ou outra especializao, como
mostra a figura 5.18, ento ela no deve ser especializada. Neste caso,

Banco de Dados [Informtica]

30

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

dizemos que o modelo deve ser generalizado, ou seja, deve passar pelo
processo de generalizao.
A generalizao o processo inverso da especializao. Em vez de
subdividir a entidade cria-se uma entidade mais genrica e adiciona-se um
atributo denominado tipo, que identifica o tipo de objeto, como mostra a figura
5.17. O atributo tipo identificar se o telefone do tipo celular ou residencial.

Figura 5.17 Exemplo de Generalizao

Figura 5.18 Exemplo errado de especializao

4.9.

Agregao

Imagine que tenhamos duas entidades Cliente e Produto ligadas pelo


relacionamento Compra. Agora, suponha que tenhamos que modificar esse
modelo de modo que seja necessrio saber quantas prestaes sero pagas
em uma compra. Relacionar a entidade Prestao com Cliente ou com
Produto no faz sentido, uma vez que as prestaes sero referentes a
compra efetuada. Sendo assim, a entidade Prestao deve se relacionar
entidade Compra, como mostra a figura 5.19. O retngulo desenhado em
volta do relacionamento indica a agregao.

Banco de Dados [Informtica]

31

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 5.19 Exemplo de agregao

Podemos tambm reescrever o modelo sem utilizar agregao. Nesse


caso, o relacionamento Compra seria transformado em uma entidade que
poderia ser relacionada Prestao, como mostra a figura 5.20.

Figura 5.20 Outra forma de modelar agregao

Banco de Dados [Informtica]

32

Escola Estadual de Educao Profissional


4.10.

Ensino Mdio Integrado a Educao Profissional

Notao do MER

Na apostila, foi apresentada uma notao utilizando a ferramenta


brModelo, porm alguns projetistas utilizam outras notaes conforme
apresentado abaixo:

Atributo Simples ou Monovalorad0

Atributo Multivalorado

Relacionamento

Entidade

Atributo Derivado
Atributo Composto

Atributo Chave

Entidade Fraca

EXERCCIOS
1. O que um auto-relacionamento? Cite um exemplo diferente da apostila que
caracteriza este relacionamento.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________
2. O que especializao e generalizao? Cite um exemplo.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________________

Banco de Dados [Informtica]

33

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

3. O que caracteriza a agregao?


_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
____________________
4. O que um relacionamento mutuamente exclusivo?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________
5. Faa o DER dos sistemas abaixo:
Uma concessionria que trabalha com venda de veculos deseja criar uma
base de dados para seu negcio. Para qualquer veculo, sabemos o nmero do
chassi, nmero da placa, cor, ano de fabricao, quilometragem, cdigo da
marca, nome da marca, cdigo do modelo, e nome do modelo. Todo carro
pertence a um modelo, e este modelo pertence a uma marca. Como a
concessionria vende veculos usados de diferentes marcas, interessante
haver um cadastro para as marcas e um cadastro para os modelos. Uma
pessoa pode assumir um dos seguintes papeis em relao a concessionria:
corretor ou comprador. Sobre o comprador do veculo, tem-se CPF, nome,
estado civil, e se for casado, os dados do cnjuge(como nome e CPF). Sobre
os corretores, tem-se numero da matricula, nome e data de admisso. Um
corretor negocia com um comprador a venda de um veculo. Sobre a venda,
so necessrias as seguintes informaes: data da venda, valor da venda e
valor da comisso do corretor.

5. Modelo Relacional
O modelo Relacional um modelo lgico, utilizado em bancos de dados
relacionais. Ele tem por finalidade representar os dados como uma coleo de
tabelas e cada linha (tupla) de uma tabela representa uma coleo de dados
relacionados. Neste modelo, comeamos a nos preocupar em como os dados
devem ser armazenados e em como criaremos os relacionamentos do modelo
conceitual. tambm nessa etapa que definimos o SGBD que ser utilizado,
bem como os tipos de dados para cada atributo. O modelo Relacional
definido usando como base o MER.
O Modelo Relacional foi introduzido por Edgar Frank Codd (1970) e
tornou-se um padro para aplicaes comerciais, devido a sua simplicidade e

Banco de Dados [Informtica]

34

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

desempenho. um modelo formal, bastante representativo e ao mesmo tempo


bastante simples, foi o primeiro modelo de dados descrito teoricamente.
O Modelo Relacional representa os dados num Banco de Dados como
uma coleo de tabelas e seus relacionamentos. Cada tabela contm um
nome e um conjunto de atributos com seus respectivos nomes. Por exemplo,
podemos ter a tabela tbAluno, para guardar todos os dados do aluno como:
matricula, nome, data de nascimento. Esses dados que so armazenados so
os atributos do aluno como j visto anteriormente.
No modelo relacional os atributos precisam ter um domnio definido, ou
seja, precisamos especificar todos os valores possveis que um atributo pode
receber. O domnio de um atributo define qual o tipo de dado e o formato que o
dado pode ser armazenado por aquele atributo, por exemplo, no atributo
matrcula podem ser guardados valores inteiros, no atributo nome podem ser
guardados at 100 caracteres, no atributo data pode ser guardado uma data no
formato dd/mm/aaaa.
As tuplas representam os valores de uma tabela. A Figura abaixo
mostra a tabela tbAluno preenchida com valores hipotticos. Note que as
colunas da tabela representam os atributos, enquanto as linhas representam os
registros. Se uma tabela no tiver tuplas, ela estar vazia, ou seja, sem dados.
Informalmente, as tuplas so tambm chamadas de registros pelos
desenvolvedores.
matricula_aluno
100
101
102
103
104

nome_aluno
Ana
Joo
Maria
Jos
Marcos

data_nasc_aluno
12/05/1997
15/04/1996
22/06/1998
03/01/1997
19/03/1996

Para descrever uma tabela no modelo relacional, usamos o


tabela seguida dos atributos entre parnteses. Para identificar
primria, devem-se sublinhar o(s) atributo(s) correspondente(s) a ela.
cada atributo tambm deve aparecer no modelo relacional, como
exemplo abaixo:

nome da
a chave
O tipo de
mostra o

tbAluno (matricula_aluno: inteiro, nome_aluno: caracter(100),


data_nasc_aluno: data)

Banco de Dados [Informtica]

35

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Podemos tambm criar um diagrama lgico para representar


este modelo. Nesta apostila para a criao do modelo lgico
do banco de dados utilizaremos a ferramenta MySQL
Workbench, uma ferramenta disponibilizada pela Oracle para
modelagem lgica de Banco de Dados e que voc pode fazer
o download no site: http://dev.mysql.com/downloads/tools/workbench/.
Antes de criarmos nossa representao da tabela aluno utilizando o
workbench, vamos primeiramente vamos abrir o programa. A figura abaixo
mostra a tela inicial do MySQL Workbench.

Figura 5.1 Tela inicial do MySQL Workbench

Para comear, vamos escolher a opo Create New EER Model.


Escolhendo essa opo, avanamos para uma prxima tela, na qual temos a
opo Add Diagram. Essa tela pode ser visualizada pela Figura 5.2.

Banco de Dados [Informtica]

36

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 5.2

Clicando duas vezes em Add Diagram, abrimos nossa rea para


criarmos o Modelo de Relacional.

Figura 5.3

Pronto, agora voc j pode criar o seu diagrama lgico utilizando o


MySQL Workbench. Para exemplificar, vamos mostrar como criar uma tabela
e definir seus atributos. Para comear, vamos definir a tabela Aluno usando a
ferramenta MySQL Workbench. Na Figura 5.3, temos o ambiente da

Banco de Dados [Informtica]

37

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

ferramenta onde iremos criar nosso Modelo Relacional. O modelo criado na


parte branca que ocupa a maior parte do lado inferior direito da ferramenta.
Na barra mostrada pela Figura 5.4, podemos ver vrios cones. Para
criar uma tabela, voc deve clicar no cone place a new table e depois clicar
na parte branca situada logo a direita da barra mostrada na Figura 5.4.

Insere uma nova tabela

Nova tabela
inserida

Figura 5.4

Ao clicar com o boto direito do mouse em cima da tabela criada, voc


ir ver a opo Edit Table. Quando clicar nessa opo, vai aparecer, na parte
inferior da tela, uma aba onde existe a opo Table. Nessa aba, voc ir ver
um campo de texto com nome Name onde colocamos o nome da tabela. Note
que Table em ingls equivale tabela em portugus. Para o nosso exemplo,
voc deve fornecer o nome tbAluno. Ao final dessa operao, voc deve obter
algo parecido com a Figura 5.5.

Figura 5.5

Banco de Dados [Informtica]

38

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Agora, devemos definir os atributos da tabela. Para isso, devemos clicar


na aba inferior chamada Columns. Voc deve informar o nome do atributo e o
tipo em cada linha da tabela. Note que ao clicar na aba Columns o MySQL
Workbench cria automaticamente um atributo com nome idtbAluno com tipo
INT.

Figura 5.6

Para criar um atributo com nome e tipo desejado, voc deve clicar duas
vezes em cima da linha onde est o nome do atributo idtbAluno. Quando o
cursor ficar como o mostrado na Figura 5.7, voc pode digitar o nome do
atributo desejado.

Figura 5.7

Para o nosso exemplo, voc deve digitar matricula_aluno. Para criar


outro atributo, voc precisa apenas clicar duas vezes na linha abaixo do
atributo criado. Tente repetir essa operao para criar os atributos:
nome_aluno, data_nasc_aluno.
Depois de definir o nome dos atributos, voc precisa definir os tipos de
cada um. Para definir o tipo de cada atributo, voc deve clicar na coluna
Datatype de cada atributo. Ao clicar, ir aparecer uma lista com vrias opes
de tipos suportadas pelo MySQL.

Banco de Dados [Informtica]

39

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Voc deve definir os tipos de modo que o seu modelo fique parecido
como o mostrado na Figura 5.8. Note que os tipos dos atributos suportados
variam entre os SGBDs. No caso do MySQL, os principais tipos suportados
so:
Tipo
VARCHAR

INT
DECIMAL
DATA

Descrio
Valores no campo VARCHAR so strings de tamanho varivel. Voc pode declarar um
campo VARCHAR para ter qualquer tamanho entre 1 e 255, assim como para campo
CHAR. No entanto, diferente de CHAR, valores VARCHAR so armazenados usando
apenas quantos caracteres forem necessrios, mais 1 byte para gravar o tamanho.
Valores inteiros de -2147483648 a 2147483647.
O tipo DECIMAL usado por valores para os quais importante preservar a exatido
como, por exemplo, dados monetrios.
O tipo DATA usado quando se necessita apenas do valor da data, sem a parte da
hora. MySQL recupera e mostra valores do tipo DATA no formato 'ano-mm-dd'

Figura 5.8

Chave Primria
Para inserirmos a chave primria, temos que marc-la, na Figura 14 h
vrios quadradinhos ao lado de cada atributo com algumas opes, vamos
marcar a opo PK, que a nossa chave primria. O termo PK vem do ingls
Primary Key, que em portugus quer dizer chave primaria.

Figura 5.9

Banco de Dados [Informtica]

40

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Chave Estrangeira
Um conceito muito importante quando se fala em modelo relacional o
conceito de Chave Estrangeira (Foreign Key - FK).
Uma chave estrangeira um atributo da tabela, que faz referencia a uma
chave primaria de outra tabela ou da prpria tabela. Suponha que tenhamos as
tabelas Turma e Aluno, representadas no modelo relacional a seguir.
Observe que a tabela tbAluno possui um atributo cdigo_turma. Esse atributo
chave primria na tabela tbTurma e, portanto, uma chave estrangeira na
tabela tbAluno. O atributo que chave estrangeira deve ser do mesmo tipo e
do mesmo tamanho que sua primria correspondente. importante deixar
explicito a qual tabela a chave estrangeira est fazendo referncia.
tbTurma (cdigo_turma: inteiro, nome_turma: caracter(5))

tbAluno (matricula_aluno: inteiro, nome_aluno: caracter(100),


data_nasc_aluno: data, cdigo_turma: inteiro)
cdigo_turma referencia tbTurma

Uma chave estrangeira sempre faz referencia a uma chave primria. A


chave estrangeira nunca far referencia a um atributo que no seja uma chave
primria.
No Modelo Relacional a chave estrangeira que especifica o
relacionamento entre as tabelas. atravs da chave estrangeira que
conseguimos descobrir, por exemplo, que o aluno Joo pertence a turma do 2
ano do Curso Tcnico em Informtica, como mostrado abaixo.
matricula_aluno
100
101
102
103
104

nome_aluno
Ana
Joo
Maria
Jos
Marcos

codigo_turma
1
2
3
4

Banco de Dados [Informtica]

data_nasc_aluno
12/05/1997
15/04/1996
22/06/1998
03/01/1997
19/03/1996

cdigo_turma
1
3
2
1
3

nome_turma
1 Informtica
2 Informtica
3 Informtica
1 Enfermagem

41

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

O valor da chave estrangeira deve ser um valor que j tenha sido


cadastrado na chave primria da tabela correspondente, ou um valor nulo. No
exemplo acima, no poderia cadastrar uma aluna Maria pertencente turma de
cdigo 9, uma vez que no existe nenhum cdigo 9 cadastrado na tbTurma.
A chave estrangeira garante a integridade referencial do modelo
relacional, ou seja, ela garante que no se faa referencia a valores que no
existam na base de dados, evitando assim inconsistncias.
Uma chave estrangeira pode tambm fazer referencia a uma chave
primria dentro da mesma tabela. Isso acontece quando temos um
autorelacionamento. Por exemplo:
tbAluno (matricula_aluno: inteiro, nome_aluno: caracter(100),
data_nasc_aluno: data, matricula_aluno_representante: inteiro)
matricula_aluno_representante referencia tbAluno

Bom, vamos aprender agora como inserimos nossa chave estrangeira


utilizando a ferramenta MySql Workbench. Primeiro devemos criar nossa
tabela tbTurma. Depois inserir na tabela tbAluno, o atributo que vai fazer
referencia a tabela tbTurma. Inicialmente ficaremos como o diagrama como
mostrado na figura 5.10

Figura 5.10

Agora com a tabela tbAluno selecionada, clicamos na aba Foreign


Keys e definir o nome da chave estrangeira no campo Foreign Key name.
Depois disso, voc deve informar qual tabela (Referenced Table) essa chave
estrangeira ir se referenciar. No nosso caso, a tabela referenciada a tabela

Banco de Dados [Informtica]

42

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

tbTurma. Para finalizar, voc deve informar qual atributo da tabela tbTurma
ser utilizada para controlar a integridade da tabela tbAluno. Nesse caso, voc
deve marcar o atributo cdigo_turma.

Figura 5.11

Observe que automaticamente o Workbench faz a ligao de uma tabela


outra, caracterizando assim o relacionamento entre elas pela chave
estrangeira.
EXERCCIOS
1. O que o Modelo Relacional?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________
2. O que so as tabelas no modelo relacional? O que representam as colunas e
as tuplas?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________

Banco de Dados [Informtica]

43

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

3. O que voc entende por Domnio de um atributo?


_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________
4. Para que servem as chaves primrias e estrangeiras?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_________________________
5. Qual a relao do modelo Entidade-Relacionamento com o Modelo
Relacional?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
________________________________
6. Crie as tabelas abaixo, seguindo o modelo relacional.
a. Departamento com atributos: Nome, Nmero, Localizao.
b. Empregado com atributos: Matricula, Nome, Sexo, Endereo,
DataNascimento
c. Dependente com atributos: Nome, sexo, DataNascimento e
Parentesco.
7. Relacione as tabelas da questo anterior utilizando chave estrangeira.

6. Mapeamento do Modelo Entidade-Relacionamento para o


Modelo Relacional
Para transformar do modelo Entidade Relacionamento (ER) para o
Modelo Relacional (MR), necessria a realizao de alguns passos. Para
mostrar tais passos, iremos utilizar inicialmente a Figura baixo, que descreve
um modelo ER parecido com o apresentado nas aulas passadas.

Banco de Dados [Informtica]

44

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 6.1

6.1.

Mapear entidades

O primeiro conceito que devemos mapear do modelo ER para o Modelo


Relacional o conceito de entidade. No Modelo Relacional, entidades so
mapeadas para tabelas. Ou seja, cada entidade do modelo ER ser mapeado
para uma tabela no Modelo
Relacional.

Figura 6.2

6.2.

Mapear atributos simples

Depois de mapear as entidades, voc deve mapear os atributos de uma


entidade do modelo ER para os atributos em tabelas no Modelo Relacional.
importante lembrar que no Modelo Relacional os atributos possuem um
domnio definido. Ou seja, para definir um atributo voc deve indicar no MySql
Workbench o tipo de dado que o atributo ir armazenar. Como voc sabe, os
tipos de dados suportados dependem do SGDB utilizado.

Figura 6.3

Banco de Dados [Informtica]

45

Escola Estadual de Educao Profissional


6.3.

Ensino Mdio Integrado a Educao Profissional

Mapear atributos compostos

Como voc deve lembrar, um atributo composto aquele onde seu


contedo formado por vrios itens menores. Para mapear atributos
compostos no Modelo Relacional, voc deve definir na tabela apenas os
atributos simples do atributo composto. Ou seja, no nosso exemplo da tabela
professor o atributo composto endereo_professor possui cinco atributos
simples: Rua, Nmero, Bairro, Cidade e Cep. Assim, voc deve inserir esses
atributos na tabela tbProfessor.

Figura 6.4

6.4.

Mapear atributos Chave

No modelo Entidade-Relacionamento da figura 6.1, os atributos chaves


so aqueles onde as bolinhas esto pintadas. Atributos chaves no modelo ER
so mapeados para chaves primrias no Modelo Relacional. J vimos
anteriormente como criar chave primria no Modelo Relacional.
6.5.

Mapear os atributos multivalorados

Os atributos multivalorados no modelo ER so aqueles onde seu


contedo formado por mais de um valor. No exemplo da Figura 6.1, o atributo
telefone_professor um exemplo de atributo multivalorado. Nesse caso, um
empregado pode ter mais de um telefone. Para fazer o mapeamento do atributo

Banco de Dados [Informtica]

46

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

multivalorado para o Modelo Relacional, necessrio criar uma nova tabela


para armazenar os valores do atributo. Desse modo, o mapeamento de
atributos multivalorados envolve os subpassos apresentados a seguir.
1. Crie uma tabela no MySql Workbench com o nome do atributo. Por
exemplo, a tabela criada poderia se chamar tbTelefone.

Figura 6.5

2. Crie uma chave estrangeira na tabela criada para referenciar a entidade


origem do atributo multivalorado. No exemplo da Figura 6.1, a entidade
origem do atributo multivalorado a entidade Professor. Portanto, voc
deve criar um atributo matrcula_professor na tabela tbTelefone e definir
uma chave estrangeira para esse atributo. Ao final deste subpasso, voc
deve obter um diagrama parecido com a figura abaixo.

Figura 6.6

3. O prximo subpasso criar um atributo na tabela recm criada para


armazenar os valores do atributo multivalorado. No caso do nosso
exemplo, voc deve criar um atributo telefone na tabela tbTelefone. Ao
final deste subpasso, voc deve obter algo parecido com a Figura 6.7.

Banco de Dados [Informtica]

47

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 6.7

4. Note que a tabela tbTelefone no possui chave primria. Como voc


sabe, todas as tabelas devem ter chaves primrias para garantir a
integridade dos dados. A ausncia de chave primria iria permitir que um
mesmo telefone fosse cadastrado mais de uma vez. Para evitar tal
problema, voc deve definir os dois atributos da tabela como chave
primria. No caso do exemplo, os atributos Matrcula e Telefone sero
chave primria da tabela tbTelefone. Ao final deste subpasso, voc deve
obter algo parecido com a Figura 6.8

Figura 6.8

Banco de Dados [Informtica]

48

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

EXERCCIOS
1. Crie o diagrama relacional das entidades abaixo:

6.6.

Mapear Relacionamentos Um para UM

Depois de mapear os atributos do modelo ER, iremos agora mapear os


relacionamentos. O primeiro tipo de relacionamento o um-para-um. A Figura
6.9 mostra um exemplo de relacionamento um-para-um no modelo ER.

Figura 6.9

Para mapear este relacionamento para o modelo relacional devemos


inserir em uma tabela uma chave estrangeira que referencia a chave primria
da outra entidade. Para o caso do exemplo, devemos definir na tabela tbEscola
uma chave estrangeira que referencia a chave primria da tabela tbProfessor.

Banco de Dados [Informtica]

49

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Por exemplo, a Figura 6.10 mostra as duas tabelas sem o relacionamento umpara-um.

Figura 6.10

Agora, para definir o relacionamento no MySql Workbench, voc deve fazer os


seguintes subpassos:
1. inserir um atributo na tabela tbEscola com o mesmo nome e tipo do
atributo chave primria da tabela tbProfessor, neste caso
matricula_professor. Ao final deste subpasso, voc deve obter algo
parecido com a Figura 6.11.

Figura 6.11

2. Definir uma chave estrangeira com o atributo matricula_professor para


referenciar a chave primria da tabela Escola.

Banco de Dados [Informtica]

50

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 6.12

3. Note que na Figura 6.12 aparece a cardinalidade de 1..* e 1. Ou seja, o


MySql Workbench cria por padro um relacionamento um-para-muitos.
Portanto, devemos ajustar o relacionamento criado atravs de um clique
com o boto direito do mouse em cima das linhas que ligam as duas
tabelas. Escolha a opo Edit Relationship. Na aba Foreign key
marque a opo Cardinality para One-to-one 1:1. Ao final deste
subpasso, voc deve obter algo parecido com a Figura 6.13.

Figura 6.13

Banco de Dados [Informtica]

51

Escola Estadual de Educao Profissional


6.7.

Ensino Mdio Integrado a Educao Profissional

Mapear Relacionamentos Um para Muitos

Como j vimos no capitulo anterior o relacionamento um-para-muitos


usado quando uma entidade A pode se relacionar com uma ou mais entidades

B. A Figura 6.14 mostra um relacionamento um-para-muitos no modelo ER.


Agora veremos como mapear tal relacionamento para o modelo Relacional.

Para definir o relacionamento no MySql Workbench voc deve primeiro


mapear as entidades Aluno e Turma para o modelo Relacional, como j
Figura 6.14

mostramos anteriormente. Depois voc deve fazer os seguintes subpassos:


1. inserir um atributo na tabela tbAluno com o mesmo nome e tipo do
atributo chave primria da tabela tbTurma, neste caso o atributo
cdigo_turma. Uma dvida que voc pode ter como saber onde criar
(qual tabela) o novo atributo. A resposta para esta dvida : sempre que
voc tiver uma relao um-para-muitos ou 1:N, a entidade que estiver do
lado N dever receber o novo atributo com a chave estrangeira. No caso
do exemplo, a entidade que est do lado do N a entidade Aluno.

Figura 6.15

2. Definir uma chave estrangeira com o atributo cdigo_turma para


referenciar a chave primria da tabela tbTurma.

Banco de Dados [Informtica]

52

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Figura 6.16

6.8.

Mapear Relacionamento Muitos para Muitos

Neste passo voc deve primeiro lembrar que o relacionamento muitospara-muitos usado quando vrias entidades A se relacionam com vrias
entidades B. No exemplo da Figura 6.17 temos o relacionamento muitos-paramuitos entre Professor e Turma. Nela, a entidade Professor pode lecionar
vrias Turmas. Pelo outro lado, cada Turma pode possuir mais de um

Figura 6.17

Professor.

Para definir o relacionamento muitos-para-muitos no modelo Relacional,


usando o MySql Workbench, voc deve primeiro mapear as entidades
Professor e Turma para o modelo Relacional, como j mostramos
anteriormente. Depois voc deve fazer os seguintes subpassos:

Banco de Dados [Informtica]

53

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

1. criar uma nova tabela para representar o relacionamento muitos-paramuitos. No nosso exemplo, voc poderia criar uma tabela com o nome
tbProfessor_Turma, ou tbleciona, para representar o relacionamento no
modelo ER. Ao final deste subpasso, voc deve obter algo parecido com

a Figura 6.18.
2. inserir como chave estrangeira na tabela recm-criada as chaves
primrias das entidades participantes. No caso do exemplo, voc deve
inserir como chave estrangeira os atributos matricula_professor e
cdigo_turma, que so as chaves primrias das tabelas tbProfessor e
tbTurma, respectivamente. Ao final deste subpasso, voc deve obter
algo parecido com a Figura abaixo.

Figura 6.18

Figura 6.19

Banco de Dados [Informtica]

54

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

3. O ltimo passo consiste em definir a chave primria da tabela criada


para representar o relacionamento muitos-para-muitos. A chave primria
da tabela criada ser a composio das chaves primrias das tabelas
participantes da relao. No caso do exemplo, voc deve definir como
chave
primria
da
tabela
tbProfessor_Turma
os
campos
matricula_professor e cdigo_turma. Ao final deste subpasso, voc deve

obter algo parecido com a Figura abaixo.


EXERCCIOS
1. Passe os diagramas entidade-relacionamento abaixo para o modelo

Figura 6.20

relacional

Banco de Dados [Informtica]

55

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

7. Dicionrio de Dados
Aps o modelo relacional ter sido descrito ou diagramado, necessrio
criar o Dicionrio de Dados, que tem por objetivo descrever as propriedades de
uma tabela, sua estrutura fsica, e as restries que cada atributo possui.
Assim, o desenvolvedor que ir implementar o banco de dados saber
exatamente como a base de dados deve ser criada.
No Dicionrio de dados, cada tabela do modelo relacional dever ser
descrita e dever conter os seguintes campos: Nome do atributo, Descrio do
atributo, tamanho, tipo, e restries (valor nulo, regra de domnio, chaves, valor
default, unique).
A tabela abaixo apresenta um modelo de dicionrio de dados para a
tabela tbAluno.

Banco de Dados [Informtica]

56

Escola Estadual de Educao Profissional

Nome
matricula_aluno
RG_aluno
nome_aluno
data_nasc_aluno

Cidade_aluno
matricula_aluno_repres

Cdigo_turma

sexo_aluno

Ensino Mdio Integrado a Educao Profissional

Descrio

Tipo

Tamanho

Nulo

PK

Default

Unique

No

Regra de
Domnio
-

Armazena a
matricula do
aluno
Armazena o
RG do aluno
Armazena o
nome do
aluno
Armazena a
data de
nascimento
do aluno
Armazena a
cidade do
aluno
Armazena a
matricula do
aluno
representante
Armazena o
cdigo da
turma do
aluno
Armazena o
sexo a que o
aluno
pertence

Numrico

No

Caracter

11

No

Sim

Caracter

100

No

No

Data

No

No

Caracter

20

Sim

Fortaleza

No

Numrico

Sim

No

Inteiro

No

FK que
referencia
tbTurma

No

Caracter

No

(M)Masculino
(F)Feminino

--

No

importante fazer algumas observaes sobre a criao do dicionrio


de dados com relao as restries dos atributos da tabela
1. Alguns tipos de dados no possvel definir o tamanho, como o caso
da data que j predefinido pelo SGBD.
2. A restrio nulo define-se quando o atributo permite ou no um valor
nulo, ou seja, define se o atributo ser obrigatrio ou no.
3. A Regra de Domnio define quais valores sero permitidos cadastrar
para um atributo. No exemplo acima o atributo sexo, s permitido
guardar M para masculino e F para feminino.
4. As restries chave permitem identificar a chave primria (PK) e as
chaves estrangeiras da tabela. importante indicar a referencia da
chave estrangeira.
5. A restrio default permite que seja inserido um valor padro caso o
usurio no diga nada para o campo.
6. A restrio de unicidade, ou seja, no permitido dois RGs iguais nos
registros da tabela. Essa restrio s utilizada para atributos que no
so chave primria, tendo em vista que uma chave primria por si s j
nica.

Banco de Dados [Informtica]

57

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

8. Normalizao de Dados
8.1.

Principais problemas e Anomalias nos Bancos de Dados Relacionais

O Projeto de um Banco de Dados como j percebemos no uma tarefa


simples, e pode apresentar muitos problemas se no for projetado de forma
correta, ocasionando redundncia de dados, ou seja, informaes repetidas e
que iro consumir espao de armazenamento e dificultar a atualizao do
banco, gerando assim inconsistncia. Essas anomalias geralmente acontecem
na incluso, alterao, ou excluso de registros. Observe as tabelas abaixo:
Cliente_id

Nome

Endereo

Cidade

Joo Silva

Rua Uruguaiana

Porto Velho

Maria Francisca

Rua Mxico

Cacoal

Antonio Jos

Rua Piau

Porto Velho

Pedido_id

Preo

Data

Endereo

23

01/05/05

Rua Uruguaiana

Joo Silva

Porto Velho

45

06/08/05

Rua Mxico

Maria Francisca

Cacoal

10

67

04/07/05

Rua Uruguaiana

Joo Silva

Porto Velho

Nome

Cidade

Anomalia de incluso: Este tipo de anomalia ocorre toda vez que


quisermos adicionar um pedido, teremos que digitar novamente o nome,
o endereo e a cidade de quem fez o pedido. Se um campo for digitado
incorretamente ocorrer inconsistncia.
Anomalia de atualizao: Ocorrem quando, em um banco de dados
mal projetado, ao modificarmos uma informao, ocorre inconsistncia
nos dados. Se quisermos modificar uma informao, pode ser que
precisemos modifica-la vrias vezes, como o nome Joo Silva. Se
quisermos modificar seu nome para Joo da Silva teremos que
modific-lo tantas vezes quanto for o numero de seus pedidos. Se isso
no for feito, ocorrer inconsistncia nos dados, ou seja, uma anomalia
de modificao.
Anomalia de Excluso: Ocorrem quando ao excluir registros perdemos
informaes importantes para o banco, por exemplo, digamos que
precisssemos excluir os registros de pedido 8 e 10, automaticamente
perderamos todas as informaes do cliente Joo Silva.

Banco de Dados [Informtica]

58

Escola Estadual de Educao Profissional


8.2.

Ensino Mdio Integrado a Educao Profissional

Porque Normalizar?

Uma das formas de corrigir as anomalias em banco de dados utilizar a


normalizao de dados. A normalizao de dados uma srie de passos que
se seguem no projeto de um banco de dados, que permitem um
armazenamento consistente e um eficiente acesso aos dados em bancos de
dados relacionais. Esses passos reduzem a redundncia de dados e as
chances dos dados se tornarem inconsistentes.
O processo de normalizao geralmente aplicado quando temos uma
base de dados que foi criada antes da existncia de um banco de dados
relacional, ou foi desenvolvida sem considerar a existncia de um banco de
dados relacional. Ela tambm pode ser aplicada ao final do processo de
modelagem de um banco para conferir se o nosso modelo de dados est
normalizado e, caso no esteja, pode-se normaliza-lo antes da implementao
da base de dados do SGBD.
O processo de normalizao constitudo por um conjunto de formas
normais. As formas normais especificam critrios que definem quando uma
tabela est bem estruturada ou no. Assim, para saber se uma tabela est bem
estrutura, voc deve verificar se a estrutura da tabela satisfaz todas as formas
normais.

8.3.

Primeira Forma Normal (1FN)

Uma tabela est na Primeira Forma Normal (1FN) se e somente se


todos os atributos contiverem apenas dados atmicos. Ou seja, cada atributo
pode ter apenas um valor por registro (tupla).
A tabela abaixo no est na 1FN pois porque o atributo Telefones possui
mais de um telefone por registro (tupla). Por exemplo, a agncia 1524 possui
trs telefones.

NumAg
1524
1550
2051

Endereo
Prudente de Morais, 12, RN
Hermes da Fonseca, 15, RN
Eng. Roberto Freire, 20, RN

Banco de Dados [Informtica]

Telefones
3605-5223, 3605-5141, 3605-5142
4225-5889, 4225-5890
5223-8556, 5223-8557

59

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Para adequar uma tabela que no est na 1FN necessrio realizar os


seguintes passos:
1. Criar uma tabela para conter os dados do atributo compostos, neste
caso ento deveramos criar uma nova tabela tbTelefone;
2. Criar na nova tabela um atributo para conter o atributo composto da
tabela original, neste caso criar um atributo telefone, na nova tabela
tbTelefone;
3. Criar na nova tabela um atributo para conter a chave primria da tabela
original, podemos criar um atributo numero_agencia na tabela
tbTelefone;
4. Definir uma chave estrangeira para garantir a relao entre a nova
tabela e a tabela original;
5. Definir a chave primria da nova tabela;
6. Remover o atributo no atmico da tabela original.
Ao aplicar a 1FN teramos ento:
NumAg
1524
1550
2051

8.4.

Endereo
Prudente de Morais, 12, RN
Hermes da Fonseca, 15, RN
Eng. Roberto Freire, 20, RN

NumAg
1524
1524
1524
1550
1550
2051
2051

Telefones
3605-5223
3605-5141
3605-5142
4225-5889
4225-5890
5223-8556
5223-8557

Segunda Forma Normal (2FN)

Uma tabela est na Segunda Forma Normal (2FN) se e somente se ela


estiver na 1FN e todos os atributos no chave primria puderem ser obtidos da
combinao de todos os atributos que formam a chave primria.
A 2FN s aplicvel para tabelas que possuem uma chave primria
composta e que, alm disso, tenham outros atributos que no faam parte da
chave primria.
Para ilustrar o significado da 2FN, vamos olhar para a Figura xxx. Nesta
figura, a tabela tbAlocao armazena as horas trabalhadas por funcionrios

Banco de Dados [Informtica]

60

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

temporrios em determinadas agncias de um banco. A tabela possui a sua


chave primria formada pelos atributos cod_empregado e numero_agencia.
Alm destes dois atributos, a tabela Alocao possui mais trs atributos que
no fazem parte da chave primria. So eles: endereo_agencia,
nome_empregado e horas_trabalhadas.
Como voc viu anteriormente, para estar na 2FN todos estes trs
atributos
no
chave
(endereo_agencia,
nome_empregado
e
horas_trabalhadas) devem ser obtidos atravs dos dois atributos chaves
(cod_empregado e numero_agencia). Se for possvel obter um atributo no
chave primria atravs de apenas um dos atributos chave primria, ento a
tabela no est na 2FN. o que acontece com os atributos nome_empregado,
que pode ser obtido apenas de cod_empregado, e um outro exemplo o caso
do atributo agencia_endereco, que pode ser obtido apenas do atributo
numero_agencia.
Assim a tabela tbAlocao no est na 2FN porque possui pelo menos
um atributo que pode ser obtido de apenas um dos atributos que formam a
chave primria.
O fato de que uma tabela no est na 2FN pode gerar as anomalias
como para modificar o endereo da agncia de nmero 1550 voc teria que
modificar dois registros: o segundo e quarto registro, como mostra na tabela.

Cod_empregado
12
12
15
15

Num_agencia
1524
1550
1524
1550

Agencia_endereco
Prudente de Morais, 12
Hermes da Fonseca, 15
Prudente de Morais, 12
Hermes da Fonseca, 15

Nome_empregado
Luiz
Luiz
Ricardo
Ricardo

Horas_trabalhadas
20
18
10
15

Para adequar uma tabela que no est na 2FN necessrio fazer os


seguintes passos:
1. Criar duas novas tabelas para armazenar os dados dos campos
redundantes, onde seus valores apresentam repetio de valores, neste
caso criar as tabelas tbEmpregado e tbAgencia;

Banco de Dados [Informtica]

61

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

2. Remover os campos com valores redundantes da tabela original, neste


caso retirar o endereo_agencia e colocar na tabela tbAgencia, e
nomeEmpregado e colocar na nova tabela tbEmpregado;
3. Criar chaves primrias nas novas tabelas criadas com base na chave
primria da tabela original, neste caso para a tabela tbEmpregado a
chave primria seria cod_empregado, e para a tabela tbAgencia seria
num_agencia;
4. Criar relaes um-para-muitos entre as novas tabelas criadas e a tabela
original.
Aps a concluso destes passos obteramos este resultado:
Cod_empregado
12
12
15
15

Num_agencia
1524
1550
1524
1550

8.5.

Num_agencia
1524
1550
1524
1550

Agencia_endereco
Prudente de Morais, 12
Hermes da Fonseca, 15
Prudente de Morais, 12
Hermes da Fonseca, 15

Horas_trabalhadas
20
18
10
15
Cod_empregado
12
12
15
15

Nome_empregado
Luiz
Luiz
Ricardo
Ricardo

Terceira Forma Normal 3FN

Uma tabela est na Terceira Forma Normal (3FN) se e somente se ela


estiver na 1FN e na 2FN e todos os atributos no chave primria puderem ser
obtidos somente atravs da chave primria.
A tabela abaixo est na 1FN porque todos os seus atributos so
atmicos, e est na segunda forma normal porque no possui chave composta.
No entanto temos o atributo nome_gerente que depende do atributo
cdigo_gerente que no chave e nem faz parte da chave primria.

Banco de Dados [Informtica]

62

Escola Estadual de Educao Profissional

Cod_departamento
1
2
3
4

Ensino Mdio Integrado a Educao Profissional

Nome_departamento
Vendas
Recursos Humanos
Estoque
Financeiro

Cod_gerente
101
102
103
104

Nome_gerente
Marcos
Maria
Joo
Matheus

Para que a tabela obedea a 3FN, devemos criar uma nova tabela
tbGerente que ir conter o atributo que depende de outro atributo no chave da
tabela original, neste caso nome_gerente, mais o atributo do qual ele depende,
neste caso o cdigo_gerente. A figura abaixo mostra como ficaria este modelo.
Cod_departament
o
1
2
3
4

Nome_departament
o
Vendas
Recursos Humanos
Estoque
Financeiro

Cod_gerent
e
101
102
103
104

Cod_gerente
101
102
103
104

Nome_gerente
Marcos
Maria
Joo
Matheus

EXERCCIOS
1. Crie o dicionrio de dados dos diagramas da atividade anterior.
2. Explique cada uma das restries utilizadas na criao do dicionrio de
dados.

Banco de Dados [Informtica]

63

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
___________________________________
2. Explique o que redundncia de dados.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
____________________________
3. Cite as principais caractersticas das anomalias de insero, remoo e
atualizao.
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
4. O que normalizao de dados, e qual sua finalidade?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________

5. Dada as tabelas abaixo, verifique se estas tabelas esto normalizadas. Caso


no estejam, faa o processo de adequao destas tabelas.
a)

Banco de Dados [Informtica]

64

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

b)

FASE III : ARQUITETURA DE BANCO DE DADOS E LINGUAGEM SQL


9. CONCEITOS BSICOS

Banco de Dados pode ser entendido como um depsito de um conjunto


de registros que so controlados por meio de um computador e que oferece
aos usurios vrios recursos como: insero, eliminao e atualizao dos
dados. Um sistema gerenciador de banco de dados (SGBD) basicamente o
responsvel por facilitar o processo de definio e manipulao do banco de
dados.

Portanto, o SGBD no o banco de dados, ele o sistema que


gerencia, ou seja, que controla o banco de dados (BD), ele projetado para
fazer o controle de grandes volumes de informaes. Em um SGBD podemos
ter vrios bancos de dados. Nas nossas atividades usaremos o MySQL como

Banco de Dados [Informtica]

65

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

SGBD. Porm existem outros no mercado como: Oracle, PostgreSQL, DB2,


Informix, SQL Server e outros.
Existem vrios sites onde voc pode baixar o MySQL, mas o ideal
visitar o site oficial
http://dev.mysql.com/downloads/mysql/
Aps o sistema operacional preparar para a instalao, dever abrir a tela
com a apresentao do programa, clique em NEXT at finalizar a instalao.
Em seguida, abrir outra tela que dever iniciar as configuraes. Clique
em NEXT e finalize as configuraes.
9.1.

BANCOS DE DADOS RELACIONAIS

Os Bancos de Dados Relacionais foram desenvolvidos para facilitar o


acesso aos dados. Pois enquanto em um banco de dados hierrquico os
usurios precisam definir as questes de maneira mais especfica, iniciando
pela raiz, nos Bancos de Dados Relacionais os usurios podem fazer
perguntas relacionadas atravs de vrios pontos.
A arquitetura de um banco de dados relacional pode ser descrita usando
os termos tabela, linha e coluna. Veja um exemplo;

Temos

Tabela

Clientes

que

contm duas colunas que so o Cdigo do


Cliente e o Nome, Cada linha formada
por

uma

lista

ordenada

de

colunas

representando um registro.
Ento um registro uma instncia de
uma tabela, ou entidade. Uma entidade

Banco de Dados [Informtica]

66

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

uma representao de um conjunto de informaes sobre determinado


conceito do sistema. Toda entidade possui atributos, que so as informaes
que referenciam a entidade.
Se houverem informaes a serem armazenadas, voc tem uma
entidade. Exemplificando: Eu desejo armazenar os seguintes dados do livro:
Ttulo, Autor, Editora, Ano, Edio e Volume. Temos ento a entidade Livro.
No exemplo acima Antnio Silva uma instncia (registro) da Tabela
Clientes. As colunas de uma tabela so tambm chamadas de atributos. Ento
a coluna Nome um atributo da Tabela Clientes.
As tabelas relacionam-se umas as outras atravs de chaves. Uma chave
um conjunto de um ou mais atributos que determinam a unicidade de cada
registro. No nosso caso a chave da Tabela Clientes o Cdigo do Cliente,
pois ele nico para cada registro.
9.2.

LINGUAGEM SQL

O nome SQL significa Structured Query Language que em portugus


quer dizer Linguagem de Consulta Estrutura. Essa linguagem teve seus
fundamentos no modelo relacional de Codd (1970). Sua primeira verso
recebeu o nome de SEQUEL - Structured English Query Language, sendo
definida principalmente por D.D.CHAMBERLIN, em 1974, nos laboratrios de
pesquisa da IBM.
Em 1975, foi testado um prottipo de aplicao dessa nova linguagem.
Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e teve seu nome
alterado para SQL. Devido ao sucesso dessa nova forma de consulta a
manipulao de dados, dentro de um ambiente de banco de dados, a utilizao
da SQL foi se tornando cada vez maior. Com isso uma grande quantidade de
SGBDs foi tendo como linguagem bsica a SQL.
A SQL se tornou um padro de fato, no mundo dos ambientes de banco
de dados relacionais. Em 1982, o American National Standard Institute (ANSI)
tornou a SQL padro oficial de linguagem em ambiente relacional.

Banco de Dados [Informtica]

67

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Por ser uma linguagem de numerosas aplicaes, a SQL pode manipular


dados de diferentes bancos entre as funes de um SGBD.

9.3.

COMPOSIO DOS BANCOS DE DADOS DDL e DML

A linguagem SQL dividida em subconjuntos de acordo com as


operaes que se deseja efetuar sobre um banco de dados. Os principais
subconjuntos so:
DDL - Data Definition Language (Linguagem de Definio de Dados)
O conjunto de comandos da linguagem DDL usado para a definio das
estruturas de dados, fornecendo as instrues que permitem a criao,
alterao e remoo de banco de dados, tabelas e etc.
Principais comandos: CREATE, ALTER e DROP
DML - Data Manipulation Language (Linguagem de Manipulao de Dados)
o grupo de comandos dentro da linguagem SQL utilizado para a
recuperao, incluso, remoo e modificao de informaes em bancos de
dados.

Banco de Dados [Informtica]

68

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Principais comandos: SELECT, INSERT, UPDATE, DELETE, e outros.

COMANDO

DESCRIO

GRUPO

SELECT

Utilizado para extrair dados do banco

DML

INSERT

Introduzir novas linhas

DML

UPDATE

Alterar linhas j existentes

DML

DELETE

Apagar linhas j existentes

DML

CREATE

Criar estruturas no banco de dados

DDL

ALTER

Alterar estruturas do banco de dados

DDL

DROP

Apagar estruturas do banco de dados

DDL

EXERCICIO
1 Com base no que voc j aprendeu sobre banco de dados faa uma
produo textual de no mnimo 5 linhas descrevendo o diagrama abaixo:

Banco de Dados [Informtica]

69

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_________________________________________________

Banco de Dados [Informtica]

70

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

2- Marque V para verdadeiro e F para falso:


( ) CREATE, DROP, ALTER so comandos da Linguagem de Definio de
Dados (DDL);
( ) possvel usarmos o comando CREATE para alterar estruturas da base de dados.
( ) O comando UPDATE realiza a excluso de registros em uma tabela;
( ) Para apagar linhas da tabela tanto faz usar o comando DROP como o DELETE.
( ) O comando INSERT realiza a incluso de um ou mais registros em uma tabela;
A sequncia correta seria:
a) V - V - F V - F;
b) V - F - F V - V;
c) F - V - V F - F;
d) V - F - F F - V;
3 - Relacione a primeira coluna com a segunda e no final, indique a resposta
correta:
1 - CREATE

( ) Comando responsvel por inserir valores em uma tabela;

2 INSERT

( ) - Responsvel por retornar registros de uma tabela;

3 DROP

( ) - Remove registros de uma tabela;

4 SELECT

( ) - Tem o poder de remover estruturas do banco de dados;

5 DELETE

( ) - Responsvel por criar estruturas no banco de dados;

A sequncia correta seria:


a) 4 - 2 - 1 - 3 - 5;
b) 2 - 4 - 5 - 3 - 1;
c) 3 - 5 - 4 - 2 - 1;
d) 2 - 1 - 3 - 4 - 5;

Banco de Dados [Informtica]

71

Escola Estadual de Educao Profissional

10.

Ensino Mdio Integrado a Educao Profissional

INTRODUO AO MySQL

1 Passo:
Aps a Instalao do MySQL no seu computador, abra o MySQL
Command Line Client. No meu caso eu baixei a verso 5.5 e sempre deixo
fixado no Menu Iniciar, mas qualquer coisa s voc

seguir o caminho

(Iniciar-> Todos os Programas-> MySQL-> MySQL Server).

2 Passo:
Depois de Aberto o MySQL, ele pede para que voc entre com o
password, ou seja, com a senha que voc definiu na hora da instalao.

Banco de Dados [Informtica]

72

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

3 Passo:
Para conhecer quais os bancos de dados existentes dentro do MySQL
basta usar o comando SHOW DATABASES. SHOW significa mostrar,
apresentar, exibir e DATABASES significa bases de dados ou bancos de
dados, ou seja, manda mostrar os bancos de dados existentes.

No meu caso eu j tenho sete bancos de dados criados, como voc est
acessando pela primeira vez deve ter pelo menos trs que j vem junto da
instalao que o information_schema, o mysql e o test que geralmente
fornecido como um espao de trabalho para usurios fazerem testes.

10.1.

TIPOS DE DADOS

Banco de Dados [Informtica]

73

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Strings
Este tipo de dados armazena uma string de tamanho fixo, com
espaos direita. O tamanho varia de 1 a 255 caracteres. Na
consulta, o MySQL ignora os espaos que no foram ocupados.

Char

Varchar

Tinyblob, Blob,
Mediumblob,
Longblob

Armazena uma string de tamanho varivel, com tamanho mnimo


de 1 caracter e mximo de 255.

Estes tipos de campo armazenam dados no formato binrio.

Muito cuidado, pois o mysql tem como delimitador o ponto e vrgula (;), ou
seja, se um ponto e vrgula (;) aparecer em meio a um cdigo, o mysql entende que
ali, o comando est encerrado e no h necessidade de continuidade. Muitos erros
acontecem por falta do (ponto e vrgula) no final do comando.
Vai ai outra dica. No linux, o mysql case-sensitive por padro. No windows
no, tanto faz letras maisculas como minsculas. Para desabilitar a sensibilidade
do Linux, habilite o parmetro "lower_case_table_names" no MySQL e pronto.

Banco de Dados [Informtica]

74

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Data/Hora
Date

Este tipo de dados pode armazenar uma data no formato AAAA-MMDD

Datetime

Pode armazenar uma data no formato AAAA-MM-DD e uma hora no


formato HH:MM:SS

Timestamp

Temos a possibilidade de inserir automaticamente a data/hora atual.


Para que isso acontece, basta que ao campo no seja atribudo
nenhum valor no momento de insero do registo.

Time

Armazena um valor horrio, no formato HH:MM:SS.

Year

Armazena um numero anual de dois ou quatro dgitos

Numricos
Int

Tipo de dados que pode variar de -2147483648 a 2147483647 e de


0 a 4294967295, caso o parmetro UNSIGNED seja utilizado.

Float

Armazena um nmero do tipo ponto flutuante de preciso simples.


Varia de -3.402823466E+38 a -1.175494351E-38, 0, e
1.175494351E-38 a 3.402823466E+38

Double

Armazena um nmero do tipo ponto flutuante de preciso dupla.


Varia de -1.7976931348623157E+308 a -2.2250738585072014E308, 0, e 2.2250738585072014E-308 a 1.7976931348623157E+308.

Decimal

Tipo de dados que se comporta como o do tipo CHAR, ou seja, cada


dgito ocupa 1 byte.

Banco de Dados [Informtica]

75

Escola Estadual de Educao Profissional


10.2.

Ensino Mdio Integrado a Educao Profissional

INSTRUES DDL CREATE

Instruo que permite a criao de um banco de dados e tambm as


demais estruturas de um banco. As duas situaes onde o CREATE utilizado
com maior frequncia so:
1. Criao de um novo banco de dados
2. Criao de uma nova tabela
1 Passo:
Abra o MySQL e digite o comando CREATE DATABASE <nome do banco> ;

2 Passo:
Para que voc possa ter acesso a qualquer informao do banco de
dados, ou mesmo criar tabelas, inserir registro ou fazer uma consulta voc
precisa entrar dentro dele. O comando para isso USE <nome do banco>;

3 Passo:
Agora como voc j tem o banco de dados e entrou nele, voc j pode
comear a criar as tabelas do seu banco. Para criar tabelas preciso seguir um
padro bsico:
CREATE TABLE <nome da tabela>(
<nome da coluna> <tipo de dados> (<quantidade de caracteres>),
<nome da coluna> <tipo de dados> (<quantidade de caracteres>) );

Banco de Dados [Informtica]

76

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Esse um exemplo simples da criao de uma tabela do BD, voc pode


de acordo com a situao acrescentar mais campos e defini-los com mais
caractersticas. Por exemplo, a coluna nome pode ser definida como NOT
NULL, ou seja, no pode ser nulo(vazio).
Quando for inserido um novo aluno o nome dele vai ser obrigatrio.
Pense comigo, na matricula de um novo aluno o seu nome no pode faltar e o
numero da sua matrcula gerada automaticamente pelo sistema.
Para a criao do numero da matrcula automtico usado o cdigo
AUTO_INCREMENT, esse cdigo permite que o nmero da matrcula seja
acrescentado a cada novo registro inserido na tabela, ou seja, a cada novo
aluno matriculado.
Como a matrcula um nmero que no se repete e que nico para
cada aluno ele pode ser declarado como chave primria. Em banco de dados
relacionais, a chave primria muito importante para quando for fazer o
relacionamento entre as tabelas. Mais na frente iremos falar mais detalhado
sobre chaves.
Ao ser definida uma coluna como chave primria, estamos dizendo para o
banco de dados que no podem existir duas linhas nessa coluna com um
mesmo valor. Geralmente quando falamos de chave primria usamos a sigla
PK referente palavra PRIMARY KEY.

Banco de Dados [Informtica]

77

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

4 Passo:
Para ver como ficou a estrutura das tabelas criadas usamos o codigo
DESCRIBE TABLE <nome da tabela>; ou somente DESC TABLE <nome da
tabela>; Mais se voc quer ver como foi criada a tabela pode usar o comando
SHOW CREATE TABLE <nome da tabela>
Exemplo DESCRIBE:

Exemplo DESC:

Exemplo SHOW CREATE:

Banco de Dados [Informtica]

78

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Veja agora como ficou o cdigo criado e compare com o que voc fez.

Banco de Dados [Informtica]

79

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

EXERCICIO
1. Com base no exemplo anterior crie um novo banco de dados chamado biblioteca.

Criar a tabela livros contendo os seguintes campos:

Cdigo: inteiro com no mximo 8 dgitos


Ttulo: mximo de 40 caracteres
Autor: mximo de 50 caracteres

Editora: mximo de 20 caracteres

Edio: inteiro com no mximo 2 dgitos


O cdigo a chave primria e deve ser gerado automaticamente
O Ttulo e o Autor no podem ser vazios.

Escreva o cdigo da criao no quadro abaixo:

Banco de Dados [Informtica]

80

Escola Estadual de Educao Profissional


10.3.

Ensino Mdio Integrado a Educao Profissional

INSTRUES DDL ALTER

J aprendemos a criar tabelas no BD. Mas, como proceder para inserir, por
exemplo, uma coluna em uma tabela j existente. Ser que necessrio para isso
excluir toda a tabela? A resposta para essa pergunta no. Utilizando o comando
ALTER, possvel que o usurio altere a estrutura de uma tabela, por exemplo,
inserindo novas colunas.
Usando o comando ALTER, possvel realizar as seguintes alteraes na
estrutura de uma tabela:
1. Adicionar colunas;
2. Excluir colunas;
3. Alterar o tipo e o nome de uma coluna j existente.
Utilizando o banco de dados escola e a tabela novo_aluno vamos adicionar uma
coluna chamada de endereco. Para adicionar colunas na tabela seguimos um
padro bsico:
ALTER TABLE <nome da tabela> ADD <nome da coluna> <tipo de dado>;
OBS: No comando ALTER aparece clusula ADD indicando que estamos
adicionando uma coluna tabela e definindo o seu tipo.
Exemplo ADD:

Banco de Dados [Informtica]

81

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Perceba que a coluna endereo foi adicionada na ultima posio, porm nem
sempre queremos que a coluna que adicionarmos fique por ultimo, por isso Voc
pode utilizar palavras chaves como FIRST (primeiro) ou AFTER (aps) para
posicionar a nova coluna na posio que desejar na tabela.
Exemplo FIRST:
Usando o mesmo banco de dados, porm na tabela aluno vamos adicionar a
coluna cdigo como sendo a primeira coluna e chave primaria da tabela.

Exemplo AFTER:
O FIRT insere na primeira coluna, j com o AFTER voc escolhe a posio que
deseja que a coluna fique, ou melhor, depois de quem a coluna vai ficar. Usando a
mesma tabela aluno vamos inserir a coluna nascimento depois da coluna nome.

Banco de Dados [Informtica]

82

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Agora suponhamos que a coluna idade da tabela aluno seja desnecessria,


ento, neste caso, ser possvel tambm apagar a coluna da tabela. Para excluir
uma coluna usamos o comando ALTER TABLE <nome da tabela> DROP <nome da
coluna>; Perceba que agora usamos o DROP, em vez de ADD.
Exemplo DROP:

OBS: o comando SHOW FIELDS tem a mesma funo do DESCRIBE.


Tambm podemos alterar o tipo e o nome de uma coluna. Usamos o comando:
ALTER TABLE <nome da tabela> CHANGE <nome da coluna> <nome da
nova coluna> <tipo de dado da nova coluna>;
Como exemplo suponha que a coluna cdigo da tabela aluno no est no
padro das outras tabelas do banco, porque nas outras tabelas a PK definida com
o nome id e no mximo de 10 caracteres. Ento em vez de excluir toda a tabela ou
excluir toda a coluna podemos usar a clusula CHANGE e renomear o campo.
Exemplo CHANGE:

Banco de Dados [Informtica]

83

Escola Estadual de Educao Profissional


10.4.

Ensino Mdio Integrado a Educao Profissional

INSTRUES DDL DROP

O comando DROP usado para excluir tabelas ou banco de dados, ele


bastante simples de se escrever, porm deve ser usado com prudncia, pois uma
vez excludo uma tabela ou um banco de dados a ao no pode ser desfeito. Por
isso aconselho somente ser usado por quem criou o banco de dados. Com o
comando DROP possvel, por exemplo:
1. Excluir Tabelas
Para que voc possa excluir uma tabela preciso que ela exista dentro do
banco de dados. Normalmente primeiro usamos o comando SHOW TABLES, para
saber as tabelas que existem dentro do BD. Aps usamos o comando
DROP TABLE <nome da tabela>;
Muitos se confundem entre o DELETE e o DROP. O comando DELETE
usado para manipulao e no para definio dos dados, ou seja, o DELETE
remove os registros enquanto que o DROP remove a estrutura.

Vamos usar como exemplo o BD escola. Perceba que criamos duas tabelas
uma se chama aluno e a outra novo_aluno, no preciso que tenhamos essas duas
tabelas em nosso banco ento vamos excluir a tabela novo_aluno.

Banco de Dados [Informtica]

84

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

2. Excluir Banco de Dados


Assim como para excluir tabelas preciso ver quais existem no BD, para
excluir banco de dados bom ver quais os bancos de dados existentes dentro do
SGBD, o comando usado SHOW DATABASES. Mas se voc no quer perder
tempo olhando os bancos de dados existentes s acrescentar IF EXISTS aps o
comando DROP DATABASE. Assim:
DROP DATABASE IF EXISTS <nome do banco de dados>;
OBS: IF EXISTS utilizado para impedir a ocorrncia de erros, se o banco de
dados ou a tabela no existirem. Porm no obrigatrio o seu uso.

Vamos usar como exemplo o banco de dados test que veio junto da instalao.
Esse BD geralmente fornecido como um espao de trabalho para usurios
fazerem testes como no precisamos dele posso exclui-lo.

Banco de Dados [Informtica]

85

Escola Estadual de Educao Profissional

10.5.

Ensino Mdio Integrado a Educao Profissional

CHAVE PRIMRIA E CHAVE ESTRANGEIRA

Os Bancos de Dados Relacionais so formados de vrias tabelas e utilizam


chaves como forma de referenciar outras tabelas. Esse relacionamento entre as
tabelas feito atravs das chaves estrangeiras. Quando falamos de chave
estrangeira usamos a sigla FK referente palavra FOREIGN KEY.
Por exemplo, poderamos abaixo fazer a tabela CLIENTE com os campos
cliente_id, nome, endereo cidade e a tabela PEDIDO com os campos pedido_id,
cliente_id, preo, data para armazenar os pedidos.
Os campos com sublinhado simples so as chaves primrias (PK) que do uma
identificao nica a cada item, e o campo com pontilhado uma chave estrangeira
atravs da qual a tabela CLIENTE se relaciona com a tabela PEDIDO.

.
Esse tipo de representao evita que para cada pedido precisemos colocar a
toda a identificao do cliente, basta armazenarmos o id do cliente na tabela de
pedidos e atravs dele podemos identificar de quem o pedido. Uma chave
estrangeira sempre se relaciona com a chave primria da tabela do relacionamento.
Tratando de cdigos, Vamos criar um banco de dados chamado VENDA e as
duas tabelas CLIENTE e PEDIDO com os campos que foram definidos.
A definio da chave estrangeira segue o seguinte padro:
FOREIGN KEY<nome da FK> REFERENCES < tabela da PK>(<nome da PK>)

Banco de Dados [Informtica]

86

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

OBS: o nome e o tipo de dado da PK devem ser o mesmo da FK. A palavra


REFERENCES usada para dizer qual tabela a FK est referenciando.

Banco de Dados [Informtica]

87

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

EXERCICIO
1) Comando SQL para criar um banco de dados chamado locadora
a) create databases locadora;
b) create locadora;
c) create database locadora;
d) use database locadora;
2) Comando SQL para apagar um banco de dados chamado "supermercado"
a) delete database supermercado;
b) drop table supermecado;
c) drop supermercado;
d) drop database supermercado;
e) delete supermercado;
3) Comando SQL para entrar no banco de dados chamado "EEEP"
a) use database EEEP;
b) use table EEEP;
c) create EEEP;
d) usage EEEP;
e) use EEEP;
4) Comando SQL para mostrar todos os bancos de dados existentes;
a) show database;
b) show tables;
c) show databases;
d) show BD;
5) Comando SQL para apagar a tabela "produtos" do BD "supermercado"
a) drop table produtos;
b) delete table produtos;
c) drop supermercado;
d) drop table supermercado;
e) drop produtos;

Banco de Dados [Informtica]

88

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

6) Assinale a opo correta:


O comando DESCRIBE gera o mesmo resultado do comando _________________ .
A opo que melhor completa a sentena
a) SHOW DETAILS FROM;
b) SELECT DETAILS FROM;
c) SHOW FIELDS FROM;
d) SELECT FIELDS FROM;
7) Relacione a primeira coluna com a segunda, aps, indique a sequncia correta:
1 - ALTER TABLE ADD

( ) Usado para apagar uma tabela de um BD

2 - ALTER TABLE CHANGE ( ) Usado para trocar o nome e o tipo de uma coluna
3- DROP TABLE

( ) Usadas para adicionar uma coluna em uma tabela

A sequncia correta seria:


a) 3 - 1 - 2;
b) 2 - 3 - 1;
c) 1 - 2 - 3;
d) 3 - 2 - 1;
8) Marque a opo em que a criao da tabela "filmes" esta feito corretamente:

a) create table filmes (

b) create table filmes (

codigo int(20) note null,

codigo int(20) not null,

titulo varchar int(30) note null );

titulo varchar(30) not null );

c) create tables filmes (


codigo inteiro(20) not nul,
titulo double not nul );

Banco de Dados [Informtica]

d) create table filmes (


codigo int(20) net null,
titulo String(30) net null );

89

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

9) Com base no exemplo que criamos chave primria(PK) e chave estrangeira(FK),


crie um banco de dados EMPRESA e as duas tabelas DEPTO e EMP descritas
abaixo com suas respectivas colunas.

Escreva o cdigo da criao no quadro abaixo:

Banco de Dados [Informtica]

90

Escola Estadual de Educao Profissional


10.6.

Ensino Mdio Integrado a Educao Profissional

INSTRUES DML INSERT

J demonstramos como criar uma tabela no banco de dados, agora mostraremos


as maneiras bsicas de se inserir dados nessa tabela. O comando usado para
inserir dados o INSERT. A sntese bsica do comando INSERT a seguinte:
INSERT INTO <nome da tabela> (campo1, campo2) VALUES (valor1, valor2);
Cada valor inserido no campo que corresponde posio do valor na lista:
valor1 inserido no campo1, valor2 no campo2 e assim por diante.
OBS: Os valores devem ser separados com uma vrgula e se o tipo do campo
for texto deve est entre aspas duplas ou simples.

Vamos usar como exemplo a tabela cliente que criamos no banco de dados
venda, se voc no criou essa tabela volte para pgina antes do exerccio onde
esto os cdigos da criao. Mas antes de inserir os dados na tabela bom ver
quais os campos existentes, o comando usado pode ser o DESCRIBE.
Agora vamos inserir na coluna nome Francisco no endereo Rua: 24 de Maio
n 324 e na cidade Fortaleza. Observe que no preciso inserir dados no campo
cliente_id, pois ele foi definido como AUTO_INCREMENT.

Banco de Dados [Informtica]

91

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Temos tambm a opo de omitir as declaraes dos campos. Essa sintaxe


funciona somente se forem repassados valores para todas as colunas.
INSERT INTO <nome da tabela> VALUES (valor1, valor2, valor3,);
Cada valor inserido no campo que corresponde a sequncia das colunas na
tabela, se a primeira coluna, por exemplo, for o nome ento o valo1 deve ser o
nome, se a segunda coluna, por exemplo, for idade ento o valor2 deve ser a idade
e assim por diante.
OBS: Se a coluna for declarada como AUTO_INCREMENT basta voc colocar o
valor que corresponde a essa coluna como sendo zero(0). O valor zero(0) no
influencia em nada porem se ele for esquecido vai ser gerado um erro.

Vamos usar como exemplo a mesma tabela que usamos no exemplo anterior
do banco de dados venda que a tabela cliente, porm no vai ser preciso
mencionar os nomes dos campos basta repassar valores para todas as colunas.
Vamos inserir o cliente Pedro que mora na Av. Augusto dos Anjos n 2674
na cidade de Fortaleza. Observe que o primeiro valor que iremos inserir ser
zero(0), isso porque a primeira coluna cliente_id que foi declarada como
AUTO_INCREMENT.

Banco de Dados [Informtica]

92

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CLUSULAS
10.7.

INSTRUES DML SELECT

A forma mais simples de se fazer um SELECT recuperando todos os dados


de uma tabela. A sntese bsica :
SELECT * FROM <nome da tabela>;
OBS: O * (asterisco) substitui os nomes de todas as colunas, e todas sero
selecionadas para o resultado da consulta. A instruo FROM indica de qual
tabela estamos buscando os dados.
Caso no fosse de nosso desejo mostrar todas as colunas no resultado da
consulta, bastaria nomear as colunas que deveriam aparecer no lugar do
* (asterisco) e separadas por vrgula.
SELECT <coluna1>, <coluna2> FROM <nome da tabela>;

Para que possamos ver os dados dos clientes que inserimos no exemplo
passado, basta usar o comando SELECT * FROM cliente. Se voc no tem certeza
que o nome da tabela essa, use o comando SHOW TABLES e veja as tabelas
existentes dentro do BD.

Banco de Dados [Informtica]

93

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

FROM

Utilizada para especificar a tabela que se vai selecionar os


registros.

WHERE

Utilizada para especificar as condies que devem reunir os


registros que sero selecionados.

GROUP BY

Utilizada para separar os registros selecionados em grupos


especficos.

HAVING

Utilizada para expressar a condio que deve satisfazer cada


grupo.

ORDER BY

Utilizada para ordenar os registros selecionados com uma


ordem especifica.

DISTINCT

Utilizada para selecionar dados sem repetio.

Exemplo WHERE
Se quisermos ver somente o nome e o endereo do cliente, como j foi dito
basta colocar os nomes das colunas depois do SELECT, porm quando temos
muitos registros e precisamos de uma informao especifica usamos a condio
WHERE que em portugus significado ONDE. Sempre a clusula WHERE vem
acompanhada de alguma condio, por exemplo:
SELECT nome, endereco FROM cliente WHERE cliente_id = 2 ;
Podemos ler o comando SQL da seguinte forma:
Selecione o nome e o endereo da tabela cliente onde cliente_id for igual a 2.

Banco de Dados [Informtica]

94

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo ORDER BY
At o momento vimos como obter dados de uma tabela utilizando os
comandos SELECT e WHERE. Porm, frequentemente precisamos listar os dados
por uma ordem em particular. Pode ser por ordem ascendente ou descendente. Para
isso podemos utilizar a clusula ORDER BY para ordenar os dados. A sintaxe
bsica da clusula ORDER BY a seguinte:
SELECT < coluna > FROM < tabela > ORDER BY < coluna >;

Banco de Dados [Informtica]

95

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

OBS: Por padro o ORDER BY vem como ASC significa que os resultados
sero apresentados por ordem ascendente, ou seja, do menor para o maior.
Mais tambm pode ser DESC significa que os resultados sero apresentados
por ordem descendente, para isso acontecer voc precisa declara-lo.

Como exemplo irei usar uma tabela que criei anteriormente chamada produto:

Perceba que a tabela possui 8 produtos cadastrados, suponhamos que eu


preciso ver os preos de forma ascendente, ento iremos selecionar o nome e o
preo ordenado pelo prprio preo, veja como ficou:

Banco de Dados [Informtica]

96

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Podemos tambm ordenar os dados de outras maneiras, se eu quero ver os


nomes e o preo dos produtos em ordem alfabtica basta ordenar pelo nome de
forma ascendente.

Tambm posso em vez de colocar o nome da coluna que eu quero ordenar


basta colocar o numero dela na sequencia selecionada, por exemplo, se eu
selecionei nome e preo ento nome 1 e preo 2 e assim por diante:

Perceba que agora usei o DESC na coluna 2 que preo, ento ficou de forma
ascendente, ou seja, do maior para o menor, podemos usar a clusula ORDER BY
de vrias maneiras em situaes diferentes, basta saber como usa-lo.

Banco de Dados [Informtica]

97

Escola Estadual de Educao Profissional


10.8.

Ensino Mdio Integrado a Educao Profissional

INSTRUES DML UPDATE

O comando para atualizar os dados UPDATE, ele possui a seguinte sintaxe:


UPDATE < tabela > SET < campo > = novo valor WHERE < condio > ;

tabela: nome da tabela que ser modificada


set: define qual campo ser alterado
campo: campo que ter seu valor alterado
novo valor: valor que substituir o antigo dado cadastrado em campo
where: se no for informado, a tabela inteira ser atualizada
condio: regra que impe condio para execuo do comando

Como exemplo usaremos a tabela cliente que foi usada nos exemplos
anteriores. Suponhamos que o cliente de nome Francisco se mudou, ento
precisamos atualizar o seu registro colocando o seu novo endereo.

Banco de Dados [Informtica]

98

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Tambm podemos alterar mais de um campo de uma vez. Suponhamos que o


cliente Pedro se mudou para outra cidade, precisamos alterar o endereo e a cidade
atual, no precisamos criar dois UPDATES basta separa-los por vrgula.
UPDATE < tabela > SET < campo1 > = valor1, < campo2 > = valor2
WHERE < condio > ;

OBS: Devemos passar sempre o WHERE, que uma espcie de filtro em nossa
tabela, porque seno o passarmos atualizaremos TODOS os dados da tabela e isso
pode acarretar diversos problemas, dependendo do tamanho e da complexidade da
sua tabela. Imagina se esquecermos de colocar uma condio em uma tabela de
1.000 registros e alterarmos todos os endereos dos clientes para um s.

Banco de Dados [Informtica]

99

Escola Estadual de Educao Profissional


10.9.

Ensino Mdio Integrado a Educao Profissional

INSTRUES DML DELETE

A forma mais simples de se fazer um DELETE excluindo todos os dados de


uma tabela. A sntese bsica :
DELETE FROM < nome da tabela >;
Se no for especificada nenhuma condio ento sero excludos todos os
dados da tabela, porm se voc quer excluir somente um registro preciso usar a
clusula WHERE informando qual ser a condio para deletar.
DELETE FROM < nome da tabela > WHERE < condio >;
OBS: Lembre-se que este comando, assim como o UPDATE, pode ser
perigoso em algumas situaes, j que, uma vez executado esses
comandos, no ser possvel desfazer a ao realizada. Portanto, devemos
ficar atentos ao usar esses comandos em tabelas complexas.

Como exemplo vamos usar a mesma tabela que usamos nos comandos
INSERT, SELECT e UPDATE, que a tabela cliente do banco de dados venda.
Suponhamos que o Francisco no mais o nosso cliente, ento devemos exclui-lo
da nossa tabela, para isso usamos o comando DELETE.

Perceba que usei a condio referenciando o cliente-id. Em banco de dados todo


registro deve possuir o seu cdigo, quando vamos alterar ou excluir um registro
bom que coloquemos como condio o cdigo do registro, porque o nome pode ser
que aparea outro igual, mais o cdigo no.

Banco de Dados [Informtica]

100

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

FUNES DE AGREGAO
COUNT

SUM

Utilizada para devolver o nmero de registros da seleo.

Utilizada para devolver a soma de todos os valores de um


campo determinado.

MAX

Utilizada para devolver o valor mais alto de um campo


especificado.

MIN

Utilizada para devolver o valor mais baixo de um campo


especificado.

AVG

Utilizada para calcular a media dos valores de um campo


determinado.

Como exemplo usaremos a tabela produto do banco de dados venda, que


criamos em exemplos anteriores.

Banco de Dados [Informtica]

101

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo Contagem (COUNT)

SELECT COUNT(campo) FROM < nome da tabela > ;

Exemplo SOMA (SUM)

SELECT SUM(campo) FROM < nome da tabela > ;

Exemplo Mximo (MAX)

SELECT MAX(campo) FROM < nome da tabela > ;

Exemplo Mnimo (MIN)

SELECT MIN(campo) FROM < nome da tabela > ;

Banco de Dados [Informtica]

102

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo Mdia (AVG)

SELECT AVG(campo) FROM < nome da tabela > ;

Utilizando GROUP BY e HAVING


possvel dividir o conjunto em grupos e aplicar a funo de agregao a cada
grupo. Para executar essa ao, utilize uma clusula GROUP BY na consulta.
Aprendemos que a clusula WHERE define uma condio de retorno de um
comando SELECT. Os grupos tambm podem ser filtrados utilizando uma clusula
HAVING, que testa as propriedades de grupo envolvendo funes agregadas.
OBS: O HAVING diferente do WHERE. O WHERE restringe os resultados
obtidos sempre aps o uso da clusula FROM, ao passo que a clusula
HAVING filtra o retorno do agrupamento.

Como exemplo vamos usar a tabela a seguir:

Banco de Dados [Informtica]

103

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Suponhamos que precisamos saber o total de quanto cada cliente precisa


pagar, para isso utilizamos o GROUP BY, veja como fica o cdigo:
SELECT ClienteID, SUM(ValorTotal) FROM vendas GROUP BY ClienteID ;

Agora se queremos saber somente os totais dos clientes que vo pagar


um valor que seja maior que 200,00 R$ precisamos passar uma condio para
o select utilizando a clusula HAVING.
SELECT ClienteID, SUM(ValorTotal) FROM vendas GROUP BY ClienteID
HAVING SUM(ValorTotal) > 200;

OBS: Aqui eu coloquei somente alguns exemplos, se eu fosse colocar todas


as aes que podem ser feitas usando os comandos SQL. Acredito que no
acabaramos essa apostila to cedo, espero que voc no faa somente os
exemplos mostrados na apostila, procure se aprofundar e com base nos
exemplos, construa seus prprios comandos, no espere pelo professor.
Estude e faa exemplos antes mesmo de o professor pedir.

Banco de Dados [Informtica]

104

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

OPERADORES RELACIONAIS

<

Menor que

>

Maior que

<>

Diferente

<=

Menor ou igual que

>=

Maior ou igual que

Igual a

BETWEEN

LIKE

Utilizado para especificar um intervalo de valores.

Utilizado na comparao de um modelo e para especificar


registros de um banco de dados."Like" + extenso % vai
significar buscar todos resultados com o mesmo incio da
extenso.

OPERADORES LGICOS
AND

Avalia as condies e devolve um valor verdadeiro caso


ambos sejam corretos.

OR

Avalia as condies e devolve um valor verdadeiro se algum


for correto.

NOT

Devolve o valor contrrio da expresso.

Banco de Dados [Informtica]

105

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo LIKE
Com este operador, podemos comparar Strings. O percentual (%) substitui
nenhum, um ou mais caracteres, j a sublinha (_) substitui somente um caractere.
Utilizando a combinao desses caracteres especiais com o que se quer localizar,
pode-se conseguir uma variedade muito grande de expresses. Veja na tabela a
seguir algumas possveis combinaes:

COMANDO
LIKE 'A%'
LIKE '%A'
LIKE '%A%'
LIKE 'A_'

DESCRIO
Todas as palavras que iniciem com a letra A;
Todas que terminem com a letra A;
Todas que tenham a letra A em qualquer posio;
String de dois caracteres que tenham a primeira letra A e o
segundo caractere seja qualquer outro;

LIKE '_A'

String de dois caracteres cujo primeiro caractere seja qualquer


um e a ltima letra seja A;

LIKE '_A_'

String de trs caracteres cuja segunda letra seja A,


independentemente do primeiro ou do ltimo caractere;

LIKE '%A_'

Todos que tenham a letra A na panltima posio e a ltima


seja qualquer outro caractere;

LIKE '_A%'

Todos que tenham a letra A na segunda posio e o


primeiro caractere seja qualquer um;

SELECT * FROM contatos WHERE nome LIKE ' < condio > ' ;

Banco de Dados [Informtica]

106

Escola Estadual de Educao Profissional

Banco de Dados [Informtica]

Ensino Mdio Integrado a Educao Profissional

107

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Utilizando AND / OR
O operador AND exibe os registros se tanto a primeira condio como a segunda
condio for verdadeira. O operador OR exibe os registros se a primeira condio ou a
segunda for verdadeira. Esses operadores so usados para filtrar registros com base
em mais de uma condio.

Banco de Dados [Informtica]

108

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo BETWEEN
O comando BETWEEN permite fazer a seleo de um intervalo, entre um e
outro. A sintaxe da clusula BETWEEN a seguinte:
SELECT * FROM alunos WHERE idade BETWEEN 10 AND 20;
Este comando ir selecionar todas as linhas cuja coluna tiver um valor entre 10
e 20. Os valores podem ser nmeros, texto ou datas. Poderamos de outra forma
obter o mesmo resultado que seria:
SELECT * FROM alunos WHERE idade > = 10 AND idade < = 20;

Banco de Dados [Informtica]

109

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

EXERCICIO
Dada a tabela Alunos a seguir, escreva os comandos SQL que:

Matricula

Nome

Sexo

Idade

Marcelo Medeiros

35

Ana Paula Berlim

25

Lucas Silva

Caroline Silva

19

Djalma Medeiros

65

Artur Paes

Eduarda Duda

1. Crie a tabela alunos acima

2. Insira os dados corretamente.

Banco de Dados [Informtica]

110

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

3. Liste todos os alunos do sexo masculino

4. Liste todos os alunos que possuem o sobrenome Medeiros, ordenados por


idade.

5. Liste a mdia de idade dos alunos.

6. Mostre a maior idade dos alunos.

7. Liste a quantidade de alunos com idade menor que 20 anos.

8. Liste a Matricula e a idade do aluno chamado Lucas Silva.

9. Informe o nome e a idade do aluno mais jovem.

Banco de Dados [Informtica]

111

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

10. Liste a quantidade de alunos com idade entre 10 e 20 anos que sejam do sexo
masculino.

11. Liste a quantidade de mulheres cadastradas na tabela Alunos.

12. Informe o sexo e a quantidade de ocorrncias agrupadas por sexo.

13. Liste os nomes dos alunos que comeam com a letra A e de sexo masculino.

14. Altere a idade da aluna Caroline Silva para 20 anos.

15. Exclua a aluna Djalma Medeiros da tabela.

Banco de Dados [Informtica]

112

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

FASE IV : DESENVOLVIMENTO DO PROJETO

APOSTILA DE BANCO DE DADOS


CRIANDO SISTEMA DE VIDEO LOCADORA

Banco de Dados [Informtica]

113

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

INTRODUO

Nesse mdulo faremos um sistema para gerenciamento de vdeo locadora em


Java, visando tornar mais rpido o atendimento a seus clientes, atendendo a
necessidade de cadastros de filmes e clientes e o gerenciamento da locao e
devoluo de filmes. Para isso vamos utilizar o banco de dados Mysql para guardar
os dados, e a IDE Netbeans para desenvolver o projeto com uma interface amigvel
para o usurio.
O Objetivo geral desse mdulo fazer com que estudantes de Java possam
aprender a fazer conexo com banco de dados e realizar as principais
funcionalidades (cadastrar, consultar, excluir e alterar). Espero que com o trmino
desse mdulo voc possa ter aprendido o bastante para poder desenvolver seus
prprios sistemas e saber interagir a sua aplicao com qualquer banco de dados.
As chamadas vdeo locadoras so locais que se disponibilizam locaes de
vrios filmes, oferecidos na locadora, para clientes cadastrados. Os filmes so
divididos em vrias categorias (ao, aventura, romance, etc.), cada um dos filmes
contm a sua classificao e seu respectivo valor do aluguel. Em uma locadora
podemos ter vrios DVDs de um mesmo filme, ento na verdade alugado o DVD e
no o filme, por isso foi dividido o cadastro de filme e o cadastro de DVD.
Locaes, devolues e cadastros, deixaro de ser feitos em blocos de papel,
passando a ser executados em um sistema prprio para locadora, melhorando o
desempenho dos funcionrios e o atendimento aos clientes. Assim, ser possvel
buscar um determinado filme para saber se est ou no na locadora ou at mesmo
pesquisar as locaes realizadas, atravs de pesquisas que podero ser realizadas
no sistema rapidamente.
Como sero muitas informaes no vou me prender em detalhes, como j foi
dito o objetivo principal ensinar a manipular dados do banco, ento caso fale
pouco sobre algum assunto porque esse no o foco. Ento se voc tiver alguma
dvida procure ajuda em outras e pea a Jud ao seu professor, pois poder
precisar desse conhecimento mais na frente.

Banco de Dados [Informtica]

114

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

MODELAGEM DOS DADOS


A figura abaixo ilustra o modelo de dados do nosso sistema de vdeo locadora,
preste ateno a cada detalhe e relacionamentos porque ser atravs desse
diagrama que vamos criar o nosso banco de dados e as referidas chaves
estrangeiras nas tabelas.
Por exemplo, a tabela Filme possui relacionamento com outras trs tabelas
(Categoria, Classificao e dvd), onde as chaves primarias(PK) das tabelas
Categoria e Classificao so chaves estrangeiras(FK) na tabela Filme, e a chave
primaria(PK) da tabela Filme chave estrangeira(FK) na tabela dvd e assim por
diante acontece com as outras tabelas.

Modelagem do Banco de Dados Locadora

Banco de Dados [Informtica]

115

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CRIAO DO BANCO DE DADOS


Faremos agora o script do banco de dados que intitulamos de locadora, com
base no que j foi ensinado sobre criao de banco de dados e tabelas, crie os
seguintes comandos SQL.
Criao do banco de dados locadora

Usando o banco locadora

Criao da tabela funcionrio

Criao da tabela cliente

Criao da tabela categoria

Banco de Dados [Informtica]

116

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao da tabela classificao

Criao da tabela filme

Criao da tabela dvd

Criao da tabela aluguel

Banco de Dados [Informtica]

117

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Inserir o 1 funcionrio Administrador

CRIAO DO PROJETO
Vamos agora criar um novo projeto no Netbeans chamado SistemaLocadora
com os seguintes pacotes descritos abaixo:

Pacote DAO
Tudo relacionado ao banco de dados se encontra nesse pacote, as classes
esto divididas de acordo com o modelo para que fiquem mais organizadas.

Banco de Dados [Informtica]

118

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Pacote Imagens
Todas as imagens do nosso projeto se encontram dentro desse pacote,
tudo isso para nvel de organizao.

Pacote Locacao

Esse pacote faz parte da interface com usurio(JFrame), porm ele foi
separado do pacote Viso por motivo de um melhor controle das suas classes.

Pacote Modelo
Dentro do pacote modelo temos todas as classes que possuem as variveis
encapsuladas com os mtodos getters e setters, chamada tambm de lgica
de negcios.

Banco de Dados [Informtica]

119

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Pacote Principal
Nesse pacote temos a classe que possui o mtodo Main, essa classe
responsvel por chamar a tela de Login que por sua vez responsvel por
chamar a tela do Menu.

Pacotes de Visao
Foi dividido os pacotes que possuem telas (JFrame) de forma bastante
intuitiva, ou seja, todos possuem o nome Visao seguido da sua ao
( Visao.Alterar, Visao.Cadastrar, Visao.Consultar, Visao.Excluir )

Banco de Dados [Informtica]

120

Escola Estadual de Educao Profissional

Visao.Alterar

Visao.Consultar

Banco de Dados [Informtica]

Ensino Mdio Integrado a Educao Profissional

Visao.Cadastrar

Visao.Excluir

121

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

APRESENTAO DAS TELAS


A interface foi toda desenvolvida com o auxlio da paleta do netbeans,
porm procure sempre ver os cdigos que esto sendo criado a partir da ao de
puxar e arrastar os componentes. Agora iremos mostrar as telas do sistema,
procure fazer as suas o mais prximo possvel, sem esquecer nenhum dos
componentes.
Tela de Login

Menu Principal

Banco de Dados [Informtica]

122

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Cadastro de Funcionrio

Cadastro de Cliente

Cadastro de Categoria

Banco de Dados [Informtica]

123

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Cadastro de Classificao

Cadastro de Filme

Cadastro de DVD

Banco de Dados [Informtica]

124

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Cadastro de Locao

Consulta de Locao

Consulta de Cliente

Banco de Dados [Informtica]

125

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Consulta de Filme

Consulta de DVD

Consulta para Devoluo

Banco de Dados [Informtica]

126

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo de Realizar Devoluo

Alterar e Excluir
As telas de alterar seguem o mesmo padro das de cadastros, porm
acrescenta um campo para digitar o cdigo que deseja que sofra alterao, por
esse motivo vou mostrar apenas o de alterar funcionrio como exemplo. E as
telas de excluir seguem um padro para todas, mudando apenas detalhes, por
esse motivo vou mostrar apenas o de excluir cliente como exemplo.

Banco de Dados [Informtica]

127

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

DEFINIO DAS CLASSES DE MODELO


Sabemos que encapsular significa proteger o acesso direto aos atributos de
uma classe, usando para a manipulao desses atributos os mtodos set e get.
Agora iremos mostrar os atributos de cada classe para que voc crie os mtodos
get e set. Para gerar os mtodos o netbeans tem um atalho que ajuda, Alt + Insert.

Banco de Dados [Informtica]

128

Escola Estadual de Educao Profissional

Banco de Dados [Informtica]

Ensino Mdio Integrado a Educao Profissional

129

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CONEXO COM BANCO DE DADOS


Conectar-se a um banco de dados com Java bastante simples. O Java possui
um nico conjunto de interfaces muito bem definidas que devem ser implementadas.
Esse conjunto de interfaces fica dentro do pacote java.sql e nos referiremos a ela
como JDBC (Java Database Connectivity). Sem um JDBC no possvel fazer uma
conexo a um banco de dados.

Definio do Driver

A classe DriverManager a responsvel por se comunicar com todos os drivers


que voc deixou disponvel. Para isso, invocamos o mtodo esttico getConnection
com uma String que indica a qual banco desejamos nos conectar. Essa String
chamada de String de conexo JDBC, a que utilizaremos para acessar o nosso
banco de dados tem a seguinte forma:
jdbc:mysql://localhost/locadora
Agora precisamos adicionar a biblioteca do nosso sistema o conector MySQL
que possibilitar a conexo com o Java, sem ele nada feito, o download do conector
est disponvel no site oficial do MySQL: http://dev.mysql.com/downloads/. No site,
clique em Connectors e depois em Connector/J. Faa o download e descompacte o
arquivo. Sero descompactados vrios arquivos, porm o arquivo que nos interessa
o que tem extenso JAR.

Banco de Dados [Informtica]

130

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Agora no projeto do Netbeans click com o boto direito na pasta Bibliotecas e


escolha Adicionar JAR/Pasta procure entre os arquivos descompactados um que
tenha extenso.JAR e o adicione. Nesse exemplo utilizamos a verso do conector
mysql-connector-java-5.1.20-bin.jar

Criao da Classe Conexo

A classe de Conexo

Banco de Dados [Informtica]

131

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 3: importa as classes do pacote sql necessrias para conexo com banco
de dados.

Linha 8: cria o mtodo AbrirConexao() do tipo Connection.

Linha 9: cria o objeto con da classe Connection.

Linha 10: o tratamento de excees em Java se d atravs dos blocos try, catch.
Tudo que estiver dentro do bloco try ser executado at que alguma exceo seja
lanada, ou seja, at que algo d errado.

Linha 11: carrega o driver que ser usado pela aplicao Java para realizar a
comunicao com o banco de dados.

Linha 12: declara a url necessria para conexo passando o nome do banco de
dados que iremos usar.

Linha 13: estabelece uma conexo por meio do objeto con usando a String url e
passando o login e a senha que foram definidas no momento da instalao do
Mysql.

Linha 15: caso a conexo no possa ser realizada por qualquer motivo ocorre a
exceo onde passa a executar o bloco catch.

Linha 16, 17: envia uma mensagem ao usurio informando que houve erro na
conexo com o banco de dados.

Linha 20: retorna o objeto con, se tudo ocorrer bem o objeto con recebeu a
conexo na linha 13.

Linha 23: cria o mtodo FecharConexao() recebendo por parmetro um objeto da


classe Connection.

Linha 25: contm o mtodo close() que encerra a conexo criada.

Banco de Dados [Informtica]

132

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

O Padro Data Access Object (DAO)


Misturar a lgica de persistncia com a lgica de aplicao cria uma dependncia
direta entre a implementao da aplicao e do armazenamento persistente. Tal
dependncia de cdigo nos componentes torna difcil migrar a aplicao de um
tipo de fonte de dados para outro.
O principal objetivo de um DAO encapsular o acesso e a manipulao de dados
em uma camada separada, por isso organizamos os recursos de lgica de acesso a
dados e encapsulamos recursos proprietrios para Facilitar a capacidade de
Manuteno e a portabilidade.

A estrutura do DAO

Cliente o cliente um objeto que requer acesso fonte de dados para obter
e armazenar dados.
DAO o DAO abstrai a implementao de acesso a dados para o cliente a fim
de permitir um acesso transparente a fonte dedados.
BaseDeDado representa uma implementao de fonte de dados.
ResultSet representa os resultados de uma execuo de consulta.
TipoDeDado representa um objeto de transferncia usado como um
carregador de dados.

Banco de Dados [Informtica]

133

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CRIAO DA SUPERCLASSE ExecuteSQL.java......


Levando em considerao que j sabemos o que herana no Java, podemos
dizer que uma subclasse herda mtodos e atributos de sua superclasse; apesar
disso, pode escrev-los novamente para uma forma mais especfica de representar
o comportamento do mtodo herdado. Na nossa aplicao todas as classes DAO
herdam da classe ExecuteSQL.java que possui os mtodos getCon e setCon, isso
para evitar repeties desses mtodos em todas as outras classes.

A superclasse ExecuteSQL.java

Linha 7: declara o objeto con da classe Connection como private, ou seja, no


pode ser acessado diretamente por outras classes.

Linha 9: cria o mtodo construtor da classe, um construtor tem sempre o mesmo


nome da classe e onde tem as instrues que sero executadas sempre que for
instanciado um objeto desta classe.

Linha 13, 17: cria os mtodos getCon e setCon, para acessar o objeto con
definido como private na linha 7, os mtodos so public, ou seja, so vistos por
qualquer outra classe do projeto.

Banco de Dados [Informtica]

134

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo Logar()

Mtodo Logar() da classe FuncionarioDAO.java

Linha 8: importa a classe Funcionrio do pacote Modelo necessria para o uso dos
mtodos getters e setters.

Linha 10: a classe FuncionarioDAO subclasse da ExecuteSQL.java. 'extends'


uma palavra reservada do Java, para definir uma relao de herana entre classes.

Linha 13: A palavra super representa uma chamada de mtodo ou acesso a um


atributo da superclasse, por isso tem esse nome. No nosso caso, estamos usando o
super para invocar construtor da superclasse ExecuteSQL.java.

Banco de Dados [Informtica]

135

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 15: cria o mtodo Logar() do tipo boolean, ou seja, irar retornar true ou
false. O mtodo recebe dois valores por parmetro que ser os valores de login e

senha digitada pelo usurio no momento de entrar no sistema.


Linha 16: cria a varivel finalResult do tipo boolean recebendo como valor false.
Linha 18, 19: cria o script de comandos em SQL que ser usado na consulta ao
banco de dados e o armazena na String consulta. O comando manda
basicamente selecionar o login e a senha da tabela funcionrio onde login e
senha forem iguais aos valores das variveis passadas para o mtodo.

Linha 20: cria um objeto chamado ps a partir da interface PreparedStatement


que possibilita a execuo de um script SQL pelo mtodo getCon() herdado da
classe executeSQL.java.

Linha 21: cria um objeto chamado rs a partir da interface ResultSet. Como o


prprio nome sugere, o objeto rs ser usado para armazenar o resultado gerado
pelo script SQL por meio do mtodo executeQuery. Pode-se dizer que o objeto rs
armazena o resultado da ao efetuada pelo script SQL.

Linha 23: verifica se o objeto rs diferente (!=) de nulo, ou seja, se o objeto


armazenou o resultado gerado pelo script SQL (linha 21), se no for nulo ele
passa para estrutura de repetio while (linha 24).

Linha 24: realiza a varredura de todos os registros armazenados no objeto rs


usando while(rs.next()), isto , o loop executado enquanto existirem registros no
objeto rs. Desta forma, todos os registros do objeto rs so recuperados pelo
mtodo getString (linha 26 e 27).

Linha 25: instancia um novo objeto da classe Funcionario.java que chamamos


de a. Pelo objeto podemos acessar os mtodos da classe, que no caso iremos
usar os mtodos setLogin e setSenha (linha 26 e 27).

Linha 28: se tudo ocorrer bem a varivel booleana finalResult passar a receber
um novo valor, ou seja, de false ela passa a ser true, isso servir para quando
formos usar esse mtodo na ao do boto entrar.

Banco de Dados [Informtica]

136

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

AO DE O BOTO ENTRAR

Ao do boto entrar

Banco de Dados [Informtica]

137

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 150: o objeto con da classe Connection recebe o retorno do mtodo


AbrirConexao() da classe Conexao.java.

Linha 151: instncia um novo objeto da classe FuncionarioDAO.java chamado


sql e passa para o mtodo construtor da classe o objeto con.

Linha 152, 153: cria as variveis login e senha do tipo String para receber os
valores digitado pelo usurio nos campos tfUsuario e tfsenha, os nomes dos
campos foram dados seguindo o padro textfield = tf + nome.

Linha 154: verifica se as variveis esto vazias, se algum dos campos no


momento do click do boto estiver vazio emite uma mensagem para o usurio
(linhas 155, 156) informando que nenhum dos campos pode estar vazio.

Linha 160: verifica se o retorno do mtodo Logar() igual a true, ou seja, nesse
momento pelo objeto sql chamado o mtodo Logar() passando as variveis login
e senha definidas nas linhas(152 e 153) e no mesmo instante j verifica o retorno
do mtodo.

Linha 161: depois de verificado se o login e a senha do usurio esto


corretas(linha 160) passa a carregar a barra de progresso, Em Java, usamos a
classe Thread do pacote java.lang para criarmos linhas de execuo paralelas. A
classe Thread recebe como argumento um objeto com o cdigo que desejamos
rodar. No nosso caso, a barra de progresso.

Linha 162: a tarefa a ser executado pelo thread dever ser descrita pelo mtodo
run(). Ou seja, toda tarefa de carregar a barra de progresso e abrir a tela do menu
principal aps o carregamento, se encontra dentro desse mtodo.

Linha 163: cria a estrutura de repetio for, incrementando a varivel i e enviando


para o mtodo setValue() da barra de progresso(linha 164) , isso faz com que a
barra fique enchendo.

Linha 166: define a velocidade que ser cheia a barra de progresso, atravs do
mtodo sleep() da classe Thread.

Linha 174: aps definido a ao que ser realizada pela Thead dentro do mtodo
run() chamado o mtodo start(), ou seja, nesse momento que o que foi definido
ser executado.

Banco de Dados [Informtica]

138

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

DECLARANDO O MTODO MAIN


Como j de nosso conhecimento a classe que possui o mtodo main a

primeira a ser executada no projeto, basicamente definimos essa classe para abrir a
tela de login. Ela poderia ter qualquer nome mais escolhemos cham-la de
Main.java.

A classe Main.java

Linha 6: A tela de Login chama o mtodo setVisible() da classe JFrame passando


por valor true, ou seja, a tela de Login aberta nesse momento.

BARRA DE MENUS
Foi criada uma barra de menus com as respectivas aes que sero realizadas
(Cadastrar,

Consultar,

Alterar,

Excluir)

todas

possuem

os

mesmos

itens

(Cliente, Filme, DVD, Categoria, Classificao, Funcionrio), ento a nica ao


chamar as telas de cada um dos itens.

Barra de Menu

Banco de Dados [Informtica]

139

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

INSERINDO MSCARAS
Existem varias formas de inserir mascaras em campos de texto para que o
usurio no digite, por exemplo, letras em datas ou at mesmo RG e CPF fora do
padro nacional. Vamos ensinar da maneira mais fcil, que usando as
propriedades do NetBeans.
Primeiramente necessrio que use o componente jFromattedTextField (campo
de texto formatado). Depois de selecionado o componente, clique em propriedades e
procure formatterFactory Vamos usar como exemplo o campo CPF do cadastro de
cliente.java. Formato: ###.###.###-##

Formato da mscara CPF

Banco de Dados [Informtica]

140

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CADASTRO DE CLIENTE
Criao do Mtodo Inserir_Cliente( )

Mtodo Inserir_Cliente() da classe ClienteDAO.java

Linha 27: cria o script de comandos em SQL que ser usado na consulta ao
banco de dados e o armazena na String sql. Um ponto a observar o uso do
caractere de interrogao(?), que ser substitudo por parmetros durante a
execuo do mtodo.

Linha 31 40: cada um dos parmetros usado no script em SQL deve ser
passado ao objeto ps por meio de mtodos apropriados. Existem diversos
mtodos que podem ser usados, dependendo do tipo de valor, por exemplo:
setString, setInt, setDouble etc. na linha 31 usamos os parmetros 1(referente a
primeira interrogao da linha 27) e a.getNome(referente ao contedo que ser
colocado no lugar do caractere de interrogao).

Banco de Dados [Informtica]

141

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Ao de o Boto Cadastrar

Ao do Boto Cadastrar

Banco de Dados [Informtica]

142

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 430 439: guarda nas variveis do tipo String os dados digitado pelo
usurio nas TextFields, o mtodo usado para pegar o que foi digitado getText();

Linha 440 444: verifica se nenhuma das variveis esto vazias atravs do
mtodo equals( ), se alguma estiver vazia lanada uma mensagem informando
que nenhum campo pode estar vazio.

Linha 448: cria a varivel n do tipo inteiro para armazenar a converso da


varivel numero do tipo String, isso porque na tabela do banco de dados foi
definido que o valor de numero seria do tipo inteiro.

Linha 451 460: atravs do objeto a da classe Cliente.java enviado para o


mtodo set as variveis que armazenaram os dados digitados pelo usurio.

Linha 462: atravs do objeto sql da classe ClienteDAO.java enviado para o


mtodo Inserir_Cliente() o objeto a da classe Cliente.java.

Linha 463: chama o mtodo FecharConexao( ) da classe Conexao.java,


importante sempre que abrir uma conexo com banco de dados lembrar tambm
de fechar.

USANDO ARRAYLIST
O Java, por padro, possui uma srie de recursos prontos (APIs) para que
possamos tratar de estrutura de dados, tambm chamados de colees (collections).
Podemos dizer que ArrayList uma classe para colees. Uma classe genrica para
ser mais exato. Colees de qualquer tipo de dados e no somente de tipos
primitivos.
Voc pode criar seus objetos atravs de uma classe e agrup-los atravs de
ArrayList e realizar, nessa coleo, vrias operaes, como: adicionar e retirar
elementos, orden-los, procurar por um elemento especfico, apagar um elemento
especfico, limpar o ArrayList dentre outras possibilidades.
Ns vamos precisar usar o ArrayList para agrupar os dados vindos do banco,
para realizar os comandos INSERT, UPDATE ou DELETE no preciso usar um

Banco de Dados [Informtica]

143

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

ArrayList porque nenhum desses comandos retorna registros, diferente de um


comando SELECT onde vamos precisar agrupar os dados selecionados.
CONSULTA DE CLIENTE
Criao do Mtodo ListarCliente().

Mtodo ListarCliente() da classe ClienteDAO.java

Linha 54: cria o mtodo ListarCliente() do tipo List<Cliente>, isso porque o


mtodo retornar um ArrayList do tipo Cliente.

Linha 56: cria um ArrayList do tipo Cliente com o nome lista.

Linha 71: enquanto existirem registros no objeto rs(linha 62) o objeto a da


classe Cliente ser adicionado a lista atravs do mtodo add(), esse mtodo
usado para adicionar um elemento ao ArrayList.

Banco de Dados [Informtica]

144

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 73: se o objeto rs for diferente de null (linha 61) ento o mtodo retornar
a lista com os registros adicionados(linha 71) e devidamente agrupados.
Criao do Mtodo AtualizaTable().

O mtodo AtualizaTable() deve ser o primeiro a ser chamado na tela de


ConsultarCliente.java, se o primeiro mtodo a ser executado o mtodo construtor
ento basta chamar o mtodo AtualizaTable() dentro do construtor. Para identificar
onde deve chamar o mtodo basta procurar o initComponents() que um mtodo
gerado pelo NetBeans designer de swing que fica dentro do construtor. Ele
estabelece os componentes e define seus valores padro.

Linha 45: define o titulo que aparecer no JFrame atravs do mtodo setTitle().

Linha 46: define o tamanho do JFrame atravs do mtodo setSize()

Linha 47: chama o mtodo AtualizaTable()

Banco de Dados [Informtica]

145

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Mtodo AtualizaTable()

Linha 328: o ArrayList de nome lista recebe o retorno do mtodo ListarCliente()


da classe ClienteDAO.java.

Linha 329, 330: cria um objeto de nome tbm do tipo DefaultTableModel para
trabalhar com um modelo que possa inserir deletar ou atualizar os dados de uma
tabela, que em nosso caso a tabela se chama jTable, por isso que usamos o
mtodo getModel() (linha 330) para poder manipular a tabela jTable.

Linha 331 333: cria a estrutura de repetio while para apagar os dados da
tabela antes de inserir novos, o mtodo getRowCount() retorna a quantidade total
de linhas, ento se a quantidade de linhas for maior que 0 ele entra na estrutura e
usa o mtodo RemoveRow() passando o valor 0 para apagar a tabela.

Linha 336: como os dados sero preenchidos nas linhas da tabela


dinamicamente usado o mtodo addRow() para adicionar linha no jTable
passando o valor da varivel i(linha 334) que ser incrementada a cada novo
registro(linha 343).

Banco de Dados [Informtica]

146

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 337 342: usado o mtodo setValueAt() para inserir os dados na tabela
passando o valor atravs do objeto tab da classe Cliente que chama o mtodo
get() se referindo ao valor que ser inserido na linha dinamicamente e na referida
coluna. Ento o mtodo setValueAt() recebe o valor, a linha e a coluna.
Exemplo

Tela de Consultar Cliente

Criao do Mtodo Pesquisar_Nome_Cliente()

Mtodo Pesquisar_Nome_Cliente() da classe ClienteDAO.java

Linha 83, 84: a nica coisa que muda em relao ao mtodo ListarCliente() a
String sql que agora tem uma condio de seleciona pelo nome. Por isso
acredito que no seja necessrio colocar todo o mtodo, basta voc como um
bom programar com base no mtodo ListarCliente() fazer o restante do mtodo.
Criao do Mtodo Pesquisar_Cod_Cliente()

Banco de Dados [Informtica]

147

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Mtodo Pesquisar_Cod_Cliente() da classe ClienteDAO.java

Linha 111, 112: assim como no mtodo Pesquisar_Nome_Cliente() a nica


coisa que ir mudar em relao ao mtodo ListarCliente() a String sql, que
agora o comando faz uma condio de selecionar aonde o valor recebido por
parmetro da varivel cod seja igual ao idcliente da tabela.

Ao de Pesquisar Cliente

Assim como o mtodo AtualizaTable(), as aes dos botes de pesquisar


iro implementar a mesma estrutura mudando apenas o chamado do mtodo da
classe ClienteDAO. Acredito que no seja necessrio colocar o cdigo fonte dos
mtodos, porque a nica coisa que vai ser preciso mudar em relao ao mtodo
AtualizaTable() a criao de uma varivel pra receber o valor digitado no
TextField, passando por parmetro para um dos mtodo que criamos a poucos
instantes. Voc como um bom programador capaz de realizar essa tarefa.

ALTERAO DE CLIENTE
As telas de alterao seguem o mesmo padro das telas de cadastro,
mudando apenas que foi colocado mais um campo para digitar o cdigo do cliente
e um boto ok para consultar no banco de dados e listar as informaes
cadastradas colocando em cada campo o seu valor.

Digitar o cdigo do cliente

Banco de Dados [Informtica]

148

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo Testar_Cliente()

Mtodo Testar_Cliente() da classe ClienteDAO.java

Esse mtodo serve para verificar se existe algum cliente com o idcliente igual
ao valor digitado pelo usurio, se o objeto rs for diferente de nulo(linha 295)
ento a varivel resultado passar a receber true como valor(linha 297). Esse
mtodo parecido com o mtodo que criamos Testar_Funcionrio() que
verificava se existe funcionrio cadastrado com aquele login e senha.
Criao do Mtodo CapturarCliente()

Banco de Dados [Informtica]

149

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Mtodo CapturarCliente() da classe ClienteDAO.java

Esse mtodo responsvel por selecionar tudo da tabela cliente aonde o


idcliente for igual ao cdigo passado para a varivel cod (linha 257). Voc pode
at pensar, porque estou criando vrios mtodos parecidos?, perceba que
usamos a mesma lgica para todos os comandos select, e no somente para os
comandos select, mais para todos os outros, insert, update e delete. Ento
acredito que com base nos exemplos de cliente voc consegue criar as mesmas
aes para todos os outros.

Banco de Dados [Informtica]

150

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo Alterar_Cliente()

Mtodo Alterar_Cliente() da classe ClienteDAO.java

Linha 307 309: cria o comando update, para alterar os dados do cliente. O
objetivo desse modulo no explicar comandos sql, tendo em vista que todos
que esto estudando conexo com banco de dados em Java, j passaram pelo
modulo de banco de dados, mas se voc tem duvida sobre comandos sql, no
somente copie o comando mais entenda o que ele faz, esse um principio que
todo programador deve ter.

Banco de Dados [Informtica]

151

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo InserirDados()

Mtodo InserirDados()

Esse mtodo recebe por parmetro a variavel cod do tipo inteiro e envia
para o mtodo CapturarCliente() guardando em um ArrayList o retorno do
mtodo(linha 654). A criao desse mtodo feita dentro da tela de alterar
cliente, ele ser chamado no momento do click do boto ok.
Acredito que no seja necessrio comentar linha por linha sendo que os
mesmos cdigos j foram usados e comentados em exemplos anteriores, se voc
no sabe o que est acontecendo em alguma linha de cdigo procure em
exemplos saber o que esse comando faz. Basicamente esse comando
responsvel por preencher os campos com informaes do cliente que pertence o
cdigo digitado.

Banco de Dados [Informtica]

152

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Ao do Boto OK

Ao do boto OK

Linha 576 578: verifica se o retorno do mtodo Testar_Cliente() enviando a


varivel cod igual a false, ou seja, se o cdigo digitado pelo usurio no estiver
cadastrado no banco de dados o retorno do mtodo false e conseqentemente
aberta uma caixa de mensagem dizendo cdigo no encontrado no banco.

Linha 597: nesse momento chamado o mtodo InserirDados() passando a


varivel cod que recebeu o valor digitado pelo usurio, depois de verificar se
existe o cliente com aquele cdigo(linha 576) e o campo para digitar no est
vazio(linha 581), limpa todos os campos(linhas 585 - 595) e insere os dados pelo
mtodo InserirDados() que criamos a poucos instantes.

Banco de Dados [Informtica]

153

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Ao de o Boto Alterar

Ao do boto alterar

Banco de Dados [Informtica]

154

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 478 788: guarda nas variveis do tipo String os dados dos TextFields
atravs do mtodo getText().

Linha 495, 496: converte para o tipo int as variveis que recebem o cdigo e o
numero, porque na criao da tabela os campos recebem do tipo inteiro.

Linha 499 509: envia para os mtodos set da classe Cliente.java atravs do
objeto da classe(linha 497) as variveis que receberam os dados atualizados.

Linha 511: envia para o mtodo Alterar_Cliente() da classe ClienteDAO.java o


objeto a da classe Cliente.java. A ao de alterar parecida com a ao de
cadastrar mudando algumas linhas de cdigo.
Exemplo
Vamos supor que a cliente Maria Gonalves mudou de endereo e precisa
alterar as informaes do seu cadastro. Ento basta digitar o cdigo do seu
cadastro na tela de alterao e modificar o que for necessrio, depois basta clicar
no boto Alterar e as suas informaes sero atualizadas, porm se no lembrar
o cdigo basta fazer uma consulta rpida pelo nome para saber o cdigo.

Exemplo de Alterar Cliente

Banco de Dados [Informtica]

155

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

EXCLUSO DE CLIENTE
A tela de excluso bastante simples, ela segue um modelo para todas as
outras, sabendo fazer a ao de uma, as outras ficam bastante simples. Algo
novo que ainda no vimos em nenhum exemplo at agora, o uso do
componente combobox. Preste ateno com colocar dados do banco dentro de
uma combobox porque isso ser muito usado.
Criao do Mtodo ListarComboCliente()
Esse mtodo responsvel por pegar os nomes dos clientes para listar
dentro da combobox. Perceba que usamos a clausula order by nome (linha 164)
para listar os nomes dos clientes em ordem alfabtica.

Mtodo ListarComboCliente() da classe ClienteDAO.java

Banco de Dados [Informtica]

156

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo AtualizaCombo()


Esse mtodo o primeiro a ser chamado dentro do mtodo construtor
da tela de excluir cliente, ele o responsvel por adicionar ao combobox que
foi nomeado como jCB_Nome a lista contendo os clientes cadastrados.

Mtodo AtualizaCombo()

Linha 268: para adicionar itens na combobox usamos o mtodo addItem(), para
que o primeiro cliente da lista no aparea no momento de carregar a tela,
adicionamos uma String vazia antes de adicionar os nomes.

Linha 272: nesse momento so listados dentro da combobox os nomes dos


clientes em ordem alfabtica. preciso ter cuidado para no se esquecer de
chamar o mtodo AtualizaCombo() dentro do mtodo initComponents() para que
assim que abrir o Jframe os nomes seja adicionados na combobox.
Exemplo

Banco de Dados [Informtica]

157

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo ConsultaCodigoCliente()

Mtodo ConsultaCodigoCliente() da classe ClienteDAO.java

Ao de Selecionar na combobox

Ao de Selecionar na combobox

Banco de Dados [Informtica]

158

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 282: para pegar o valor digitado em uma TextField usamos o mtodo
getText(), mas para pegar o valor selecionado na combobox preciso usar o
mtodo getSelectedItem().toString().

Linha

284:

ArrayList

de

nome

lista

recebe

retorno

do

mtodo

ConsultaCodigoCliente(), perceba que passamos como parmetro para o mtodo a


varivel nome que guardou o cliente selecionado na combobox.
Criao do Mtodo Excluir_Cliente()

Mtodo Excluir_Cliente() da classe ClienteDAO.

Linha 238: cria o comando sql para deletar o cliente que possui o idcliente e o
nome de acordo com os valores passados(linhas 242 e 243).

Linha 244: verifica se o mtodo executeUpdate() maio que zero, isso para saber
se alguma linhas da tabela foi afetadas, se for maior que zero retorna uma String
informando excludo com sucesso.

Banco de Dados [Informtica]

159

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Ao de o Boto Excluir

Ao do boto excluir

Exemplo
Depois de selecionado o nome do cliente e apertado no boto OK
aparece uma mensagem perguntando se realmente deseja excluir o cliente.

Exemplo de Excluso de Cliente

Banco de Dados [Informtica]

160

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CADASTRO DE FILME
Com base no que j foi ensinado usando o exemplo de clientes, acredito
que no ser preciso explicar novamente o mesmo processo para todos os
cadastros, ento vamos nos prender naquilo que ainda no ensinamos, como
por exemplo, carregar a capa do filme. E voc como um bom programador ir
fazer o restante dos cadastros, consultas, alteraes e excluses.

Ao do boto de carregar capa

Linha 478: cria um objeto da classe JFileChooser chamado foto, O FileChooser,


permite que voc escolha um arquivo. Ele abre uma caixinha com cara de salvar,
mas sua tarefa se resume a apenas escolher um arquivo de acordo com o
caminho especificado.

Linha 479: basicamente define o diretrio inicial para um JFileChooser atravs no


mtodo setCurrentDirectory(), ou seja, especifica o local que ser aberto para
escolher as capas de filmes.

Linha 480: define atravs do mtodo setDialogTitle() qual ser o titulo que
aparecer na caixa de seleo.

Banco de Dados [Informtica]

161

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Linha 481: nesse momento abre a caixa de dialogo atravs do mtodo


showOpenDialog(this).

Linha 482, 483: guarda na varivel a o nome do arquivo selecionado atravs do


mtodo getSelectedFile.getName() e mostra no tfCapa (linha 483)

Linha 484, 485: usa o mtodo setIcon do lbcapa para mostrar a imagem, de
forma que especifica o caminho do arquivo. Mais alm de especificar o caminho
do arquivo preciso dizer o nome dele, podemos saber o nome do arquivo
atravs do tfcapa (linha 483), ento basta usar o mtodo getText().
Exemplo

Exemplo de Cadastro de Filme

Banco de Dados [Informtica]

162

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CADASTRO DE LOCAO
Espero que voc possa estar entendo os cdigos e conseguido realizar
as tarefas de cadastrar, consultar, alterar e excluir (Cliente, Filme, DVD,
Categoria, Classificao, Funcionrio). Se voc ainda no terminou essa parte
sugiro que no prossiga e se concentre nessas principais funcionalidades.
Criao do Mtodo Testar_DVD()

Criao do Mtodo Testar_Situacao()

Banco de Dados [Informtica]

163

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Os mtodos criados sero usados no momento de digitar o cdigo do


DVD para alocao, porque preciso verificar se existe o cdigo cadastrado
atravs do mtodo Testar_DVD() e se o DVD esta emprestado atravs do
mtodo Testar_Situacao().

Ao do boto OK

Banco de Dados [Informtica]

164

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo AtualizaDate()


Esse mtodo responsvel por preencher os campos de data da locao
e o horrio atual, de acordo com a data e a hora do relgio do computador.
Ele deve ser o primeiro mtodo chamado ao ser aberto a tela.

Mtodo AtualizaDate()

Linha 924: instncia um objeto da classe Date(). A classe Date armazena


uma data e hora, que internamente armazenada com um inteiro long que
o numero de milissegundos.

Linha 925, 926: instncia os objetos da classe SimpleDateFormat


passando os formatos de queremos para data e hora. A classe
SimpleDateFormat pode facilmente converter um objeto da classe Date
para uma String no formato que a gente quiser.

Linha 927, 928: atravs dos objetos da classe SimpleDateFormat


chamamos o mtodo format() passando o objeto date(linha 924), ou seja,
nesse momento ir aparecer nos campos a hora e a data, obedecendo o
formato que foi especificado para cada objeto.

Exemplo
String

Data formatada

Comentrio

dd/MM/yyyy

25/12/2010

Padro brasileiro

MM/dd/yyyy

12/25/2010

Padro americano

yyyy-MM-dd

2010-12-25

Padro de alguns bancos de dados

25 Dezembro
2010
16:23:34

Quando tem mais de 2 caracteres


M, o resultado o nome do ms
Hora

dd MMMM yyyy
hh:mm:ss

Banco de Dados [Informtica]

165

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Criao do Mtodo ListarCodFilme()

Criao do Mtodo Pesquisar_Cod_Filme()

Banco de Dados [Informtica]

166

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Os mtodos criados sero usados pelo mtodo InserirDados(), porque


preciso saber o idfilme atravs do mtodo ListarCodFilme() passando o cdigo do
DVD digitado, para que ento possamos obter os dados da tabela filme atravs do
mtodo Pesquisar_Cod_Filme() passando o cdigo obtido na consulta anterior.
Espero que voc esteja entendendo a lgica usada, porque em uma locadora
podemos ter vrios DVDs de um mesmo filme, ento na verdade alugado o DVD e
no o filme, por isso foi dividido o cadastro de filme e o cadastro de DVD, e
consequentemente tivemos que criar esses mtodos.
Criao do Mtodo InserirDados()

Mtodo InserirDados()

Banco de Dados [Informtica]

167

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Ao de o Boto Cadastrar

Exemplo

Banco de Dados [Informtica]

168

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

REALIZAR DEVOLUO
Para realizar devoluo o usurio escolhe o nome do cliente na combobox e
a tabela lista todas as locaes que pertencem a esse cliente e clicando na linha
da tabela abre uma nova tela para devolver o DVD. Com base nos exemplos
criados vocs sabem listar os nomes dos clientes dentro da combobox e tambm
sabem consultar e listar na tabela atravs do cdigo e do nome do cliente.
Acredito que no seja necessrio mostrar novamente os cdigos, volte na
parte que exclumos os clientes e tambm na de consultar e use a mesma lgica.
Vamos mostrar agora o evento do click na tabela. Siga o caminho de clicar com o
boto direito na tabela -> Eventos -> Mouse -> MouseClicked.
Criao da classe Listar.java

Criao do evento de clicar na tabela

Banco de Dados [Informtica]

169

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo

Exemplo de consultar locaes

Banco de Dados [Informtica]

170

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

Exemplo de devoluo

Banco de Dados [Informtica]

171

Escola Estadual de Educao Profissional

Ensino Mdio Integrado a Educao Profissional

CONCLUSO

Espero que voc tenha conseguido realizar todas as operaes mostradas


nesse modulo, o principal objetivo era que voc conseguisse realizar as principais
operaes no banco de dados (Cadastrar, Consultar, Alterar, Excluir), se voc
conseguiu parabns.
Agora nada impede com que voc evolua o sistema realizando mais
funcionalidades como, por exemplo, fazer reservas de DVD, calcular multas por
atraso, melhorar a forma de devoluo, mostrar o valor que o cliente est
devendo no deixando alocar novos DVD antes de pagar a divida, etc.
Cabe a cada um de vocs terem a criatividade e com base nos exemplos
mostrados e buscando em outras fontes de estudo mais operaes que podem
ser realizadas em uma locadora, ou at mesmo criarem seus prprios sistemas,
porque a cada sistema ou funcionalidade criado, voc aprende algo novo no
mundo da programao em Java.

Banco de Dados [Informtica]

172

Hino Nacional

Hino do Estado do Cear

Ouviram do Ipiranga as margens plcidas


De um povo herico o brado retumbante,
E o sol da liberdade, em raios flgidos,
Brilhou no cu da ptria nesse instante.

Poesia de Thomaz Lopes


Msica de Alberto Nepomuceno
Terra do sol, do amor, terra da luz!
Soa o clarim que tua glria conta!
Terra, o teu nome a fama aos cus remonta
Em claro que seduz!
Nome que brilha esplndido luzeiro
Nos fulvos braos de ouro do cruzeiro!

Se o penhor dessa igualdade


Conseguimos conquistar com brao forte,
Em teu seio, liberdade,
Desafia o nosso peito a prpria morte!
Ptria amada,
Idolatrada,
Salve! Salve!
Brasil, um sonho intenso, um raio vvido
De amor e de esperana terra desce,
Se em teu formoso cu, risonho e lmpido,
A imagem do Cruzeiro resplandece.
Gigante pela prpria natureza,
s belo, s forte, impvido colosso,
E o teu futuro espelha essa grandeza.
Terra adorada,
Entre outras mil,
s tu, Brasil,
Ptria amada!
Dos filhos deste solo s me gentil,
Ptria amada,Brasil!
Deitado eternamente em bero esplndido,
Ao som do mar e luz do cu profundo,
Fulguras, Brasil, floro da Amrica,
Iluminado ao sol do Novo Mundo!
Do que a terra, mais garrida,
Teus risonhos, lindos campos tm mais flores;
"Nossos bosques tm mais vida",
"Nossa vida" no teu seio "mais amores."
Ptria amada,
Idolatrada,
Salve! Salve!
Brasil, de amor eterno seja smbolo
O lbaro que ostentas estrelado,
E diga o verde-louro dessa flmula
- "Paz no futuro e glria no passado."
Mas, se ergues da justia a clava forte,
Vers que um filho teu no foge luta,
Nem teme, quem te adora, a prpria morte.
Terra adorada,
Entre outras mil,
s tu, Brasil,
Ptria amada!
Dos filhos deste solo s me gentil,
Ptria amada, Brasil!

Mudem-se em flor as pedras dos caminhos!


Chuvas de prata rolem das estrelas...
E despertando, deslumbrada, ao v-las
Ressoa a voz dos ninhos...
H de florar nas rosas e nos cravos
Rubros o sangue ardente dos escravos.
Seja teu verbo a voz do corao,
Verbo de paz e amor do Sul ao Norte!
Ruja teu peito em luta contra a morte,
Acordando a amplido.
Peito que deu alvio a quem sofria
E foi o sol iluminando o dia!
Tua jangada afoita enfune o pano!
Vento feliz conduza a vela ousada!
Que importa que no seu barco seja um nada
Na vastido do oceano,
Se proa vo heris e marinheiros
E vo no peito coraes guerreiros?
Se, ns te amamos, em aventuras e mgoas!
Porque esse cho que embebe a gua dos rios
H de florar em meses, nos estios
E bosques, pelas guas!
Selvas e rios, serras e florestas
Brotem no solo em rumorosas festas!
Abra-se ao vento o teu pendo natal
Sobre as revoltas guas dos teus mares!
E desfraldado diga aos cus e aos mares
A vitria imortal!
Que foi de sangue, em guerras leais e francas,
E foi na paz da cor das hstias brancas!

You might also like