Você está na página 1de 44

APOSTILA DE BANCO DE DADOS I

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


BANCO DE DADOS I

INTRODUÇÃO

1. O QUE É BANCO DE DADOS?

Para responder a esta pergunta vamos primeiro refletir:

O que são dados? O que é informação?

Dados são arquivos que podem ser texto, imagens, vídeos e diversas
outras coisas. Quando organizamos estes dados com um objetivo eles passam
a ser informações, pois servem a um propósito.

Bancos de dados é um conjunto coerente e lógico de dados relacionados


que possuem significância intríseca. Esses dados representam aspectos do
mundo real e devem ser mantidos para atender os requisitos da entidade em
questão[OLIVEIRA,2002].

É como se os dados estivessem dentro de uma caixa, porém,


organizados de uma maneira que facilite sua busca no momento oportuno.
Imagine a seguinte situação: Temos um baú com todas as fotos da família
desde que você era um bebê. Estão todas espalhadas dentro do baú sem
qualquer organização.

O baú é nosso banco de dados e os dados que temos disponíveis são as


fotos. A medida que o tempo passa, colocamos novas fotos no baú.
Dependendo do quanto a pessoa gosta de tirar fotos, logo vai se tornar difícil
achar uma foto específica. Exemplo: achar em meio a mais de mil fotos a foto
do aniversário de 5 anos em que estava soprando a velinha. É uma tarefa
difícil não acha?

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Por isso foram criadas diversas técnicas para organizar os dados no
banco de dados visando a facilitar a tarefa de recuperar dados que são
inseridos de maneira organizada. Vamos conhecer agora um pouco da história
dos bancos de dados.

2. HISTÓRICO

Como em muitas tecnologias na computação industrial, os fundamentos


de bancos de dados relacionais surgiram na empresa IBM, nas décadas de
1960 e 1970, através de pesquisas de funções de automação de escritório.

Foi durante um período da história na qual empresas descobriram que


estava muito custoso empregar um número grande de pessoas para fazer
trabalhos como armazenar e indexar (organizar) arquivos. Por este motivo,
valia a pena os esforços e investimentos em pesquisar um meio mais barato e
ter uma solução mecânica eficiente.

Em 1970 um pesquisador da IBM - Ted Codd - publicou o primeiro artigo


sobre bancos de dados relacionais. Este artigo tratava sobre o uso de cálculo e
álgebra relacional para permitir que usuários não técnicos armazenassem e
recuperassem grande quantidade de informações. Codd visionava um sistema
onde o usuário seria capaz de acessar as informações através de comandos em
inglês, onde as informações estariam armazenadas em tabelas.

Devido à natureza técnica deste artigo e a relativa complicação


matemática, o significado e proposição do artigo não foram prontamente
realizados. Entretando ele levou a IBM a montar um grupo de pesquisa
conhecido como System R (Sistema R).

O projeto do Sistema R era criar um sistema de banco de dados


relacional o qual eventualmente se tornaria um produto. Os primeiros
protótipos foram utilizados por muitas organizações, tais como MIT Sloan
School of Management (uma escola renomada de negócios norte-americana).

Eventualmente o Sistema R evoluiu para SQL/DS, o qual posteriormente


tornou-se o DB2. A linguagem criada pelo grupo do Sistema R foi a Structured
Query Language(SQL - Linguagem de Consulta Estruturada). Esta linguagem
tornou-se um padrão na indústria para bancos de dados relacionais e hoje em
dia é um padrão ISO (International Organization for Standardization). A ISO é
a Organização Internacional de Padronização.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Saiba mais sobre ISO
http://www.iso.org

Mesmo a IBM sendo a companhia que inventou o conceito original e o


padrão SQL, eles não produziram o primeiro sistema comercial de banco de
dados. O feito foi realizado pela Honeywell Information Systems Inc., cujo
sistema foi lançado em junho de 1976. O sistema era baseado em muitos
princípios do sistema que a IBM concebeu, mas foi modelado e implementado
fora da IBM.

O primeiro sistema de banco de dados construído baseado nos padrões


SQL começaram a aparecer no início dos anos 80 com a empresa Oracle
através do Oracle 2 e depois com a IBM através do SQL/DS, servindo como
sistema e repositório de informações de outras empresas.

O software de banco de dados relacionais foi sendo refinado durante a


década de 80. Isso deveu-se ao feedback (retorno) que os usuários destes
sistemas faziam, devido ao desenvolvimento de sistemas para novas indústrias
e ao aumento do uso de computadores pessoais e sistemas distribuídos.

Desde sua chegada, os bancos de dados têm tido aumento nos dados de
armazenamento, desde os 8 MB (Megabytes) até centenas de Terabytes de
dados em listas de e-mail, informações sobre consumidores, sobre produtos,
vídeos, informações geográficas, etc.. Com este aumento de volume de dados,
os sistemas de bancos de dados em operação também sofreram aumento em
seu tamanho.

O padrão SQL passou da IBM para a ANSI (American National Standards


Institute) - Insituto Nacional Americano para Padrões - e para a ISO, os quais
formaram um grupo de trabalho para continuar o desenvolvimento. Este
desenvolvimento ainda acontece com outras novas versões dos padrões
definidos.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


3. TIPOS DE BANCOS DE DADOS

Há cinco tipos de banco de dados:

• Hierárquico, Um gerenciador desse tipo representa dados como uma


estrutura em árvore, composto de uma hierarquide registros de
dados.

• Rede, representa os dados como registros vinculados uns aos outros


formando conjuntos comuns de dados. Existe uma similaridade muito
grande entre o modelo hierárquico e o modelo em rede, pode-se
entender o modelo em rede como uma generalização do modelo
hierárquico.

• Relacional, Representa os dados como uma simples coleção de linhas


e colunas em tabelas bidimensionais, porém elas se relacionam entre
si, e dependendo desse relacionamento carregam dados de outras
tabelas consigo como referência a tabela que se relaciona.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


• Orientado a objetos, representa os dados em um único objeto, dentro
de propriedades que são acessadas com métodos.

• Objeto-relacional, combina o modelo orientado a objeto com o modelo


relacional. Isso é feito mapeando banco de dados e classes seguindo a
mesma lógica. Há frameworks que fazem esse trabalho, como o
Hibernate para Java.

Saiba mais sobre Framework


http://www.oficinadanet.com.br/artigo/683/o_que_e_um_framework

4. GERENCIADOR DE BANCO DE DADOS

DBMS ( Database management System ) são programas que permitem


criar estruturas, manter dados e gerencias as transações efetuadas no banco
de dados, além de permitir o acesso ao banco e a recuperação de informações
de maneira rápida, organizada e segura.

Algumas das principais características de banco gerenciadores de banco


de dados, também conhecidos como SGBD ( Softwares gerenciadores de banco
de dados ):

• Controle de redundância – informações devem contêr um mínimo de


redundância visando a estabelecer estabilidade ao modelo.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


• Compartilhamento de dados – os dados devem estar disponíveis para
qualquer número de usuários de forma concomitante e segura.

• Controle de acesso – controle de quem pode realizar qual função


dentro do banco de dados e garantir a autenticação desse usuário.

• Esquematização – Os relacionamentos devem estar armazenados no


banco para garantir a facilidade entendimento e aplicação do modelo.
Isso garante a integridade dos dados.

• Backup – deve conter rotinas específicas para realizar a cópia de


segurança dos dados armazenados.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


BANCO DE DADOS RELACIONAL

O tipo de banco de dados que estudaremos neste curso é o banco de


dados relacional por ser o mais usado na atualidade.

O objetivo de um banco de dados relacional é armazenar um grupo de


objetos em um dicionário de dados, de forma a se tornar rápida e segura a
manipulação das informações contidas nesses objetos.

A abordagem relacional é a utilização de conceitos de entidade e


relacionamento para recriar as estruturas que irão compor o banco de dados.

É importante criar uma representação gráfica que permita identificar as


entidades do sistema e seus relacionamentos. A essa representação gráfica
damos o nome de Modelo de Dados.

O modelo de dados é a base para a construção de toda a aplicação na


empresa. Ele será composto de Entidades e Relacionamentos, daí o fato de ser
conhecido como Modelo Entidade-Relacionamento ( MER ).

Objetivos da modelagem de dados – desenvolver um modelo que,


contendo entidades e seus relacionamentos, seja capaz de representar os
requisitos das informações do negócio.

Muito bem, mas o que é Entidade? Relacionamento?


Vamos ver a partir de agora os conceitos que irão nortear nossos estudos
de banco de dados relacionais.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Tabelas

Uma tabela pode ser entendida como um conjunto de linhas e colunas.


As colunas de tabela qualificam cada elemento ( linha ) com informações
relacionadas ao objeto. Então todos os dados de um banco conceitualmente
são organizados em tabelas, onde cada linha é um registro e cada coluna é um
campo.

CODIGO NOME IDADE


1 WALDEYR MENDES 27
2 ANA CLARA 5

Registro ou tupla

As linha da tabela são os registros ( tuplas ), cada registro é formado por


um conjunto de campos que têm uma relação entre si: carregam dados de um
registro em comum.

Campos ou atributos

Os campos podem ser reconhecido pelas colunas da tabela e têm a


responsabilidade de armazenar os dados conforme o tipo previamente
especificado ( número, texto, data, etc.. ). Podem ainda conter controles sobre
valores nulos ou inválidos entre outras propriedades.

Entidade

É um agrupamento lógico de informações inter-relacionadas que são


necessárias para execução de atividades do sistema. Uma entidade
normalmente representa um objeto do mundo real, ou quando não, guarda
informações relevantes para operações de um objeto do mundo real.
A entidade é como um modelo, uma descrição geral de um ítem que
pode ser especificado. Alguns autores dizem que entidades são tabelas, e na
prática são, porém pode haver divergências quando o banco de dados não é
relacional.

Exemplos de entidades: CD, estado, cidade, cliente.

As entidades podem ser de 2 tipos:

Fundamentais – contêm dados básicos que alimentam ou são resultados


de operações.
Associativas – é formada pelo relacionamento entre entidades
fundamentais, como Aluno X Curso.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Chave

É um atributo para indexar dados. Há 3 tipos de chave: primária,


secundária e estrangeira.

A chave primária é o atributo que permite que o registro seja único.


Assim, seu conteúdo deve ser exclusivo e imutável.

CODIGO NOME IDADE


1 ANA CLARA 38
2 ANA CLARA 5

Neste caso, a chave primária é o código. Podemos ter várias Anas Claras
no nosso banco de dados, mas cada uma é uma pessoa diferente, identificada
pelo código.

A chave secundária é utilizada como meio de classificação e pesquisas


em entidades. Pode ser encontrada também como chave composta. A
diferença básica reside no fato de que as chaves compostas podem não ser
valores únicos, mas quando unidas a outra coluna de indexação produz
resultado único.

CPF NOME SITUAÇÃO


111.111.111.11 WALDEYR MENDES TITULAR
111.111.111.11 ANA CLARA DEPENDENTE

Neste caso, a chave secundária NOME juntamente com o CPF formam um


registro único. O que não seria possível com um desses campos apenas.

A chave estrangeira é uma chave primária que migra para outra


entidade quando há relacionamento entre elas. Ela é quem estabelece essa
relação entre as tabelas.

CLIENTE
CODIGO NOME
1 WALDEYR MENDES
2 ANA CLARA

VENDAS
NOTA FISCAL CLIENTE PRODUTO
12345 1 Livro PostgreSQL

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Relacionamentos

Sempre que duas entidade apresentarem interdependência indica-se


relacionamento entre elas. Exemplo: musica-CD.

Existem 3 tipos de relacionamento:

1:1

1:n

n:n

Se a linha estiver tracejada significa que o relacionamento é opcional.

Relacionamento um para um ( 1:1 ) – diz respeito às ligaçõesentre


tabelas em que para cada registro da primeira tabela só possa existir um
registro na segunda tabela.

Relacionamento um para muitos ( 1:n ) – permitem que possam existir


mais de um registro na segunda tabela para cada registro da primeira tabela.

Relacionamento muitos para muitos ( n:n ) - Neste caso pode haver mais
de um registro na segunda tabela ligado a primeira, como pode hevar mais de
um resgistro na primeira tabela ligado a um registro da segunda.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Normalização de dados

A ordem com que os dados são armazenados e a forma como são


estruturados varia bastante. Uma má estruturação pode gerar muitos
problemas para a aplicação e a lógica do negócio, o que pode acarretar um
sistema incoerente, redundante, lento, impreciso e até inconfiável.

Vamos então conhecer esse problemas a fundo para sabermos como lidar
com eles.

• ANOMALIAS DE INSERÇÃO

Ocorrem quando o sistema fica impedido de realizar a criação de um


registro devido à falta de dados. Exemplo:

SOCIOS_E_PLANOS
CODIGO NOME PLANO VALOR
1 WALDEYR BASICO 199
2 ANA CLARA BASICO 199
3 JOAO ESPECIAL 159

Neste caso, a equipe de marketing resolveu criar um plano chamado


“especial” que dá desconto de R$30,00 para pessoas com menos de 25 anos.
Porém, enquanto não houver ninguém cadastrado nesse plano, ele não existirá
oficialmente.

A solução para essa anomalia de inserção é separar o gerenciamento de


usuários do gerenciamento de planos. Assim, mesmo que o sócio 3 não
existisse no sistema o plano poderia estar disponível numa tabela de planos.

SOCIOS PLANOS
CODIGO NOME PLANO PLANO VALOR
1 WALDEYR BASICO BASICO 199
2 ANA CLARA BASICO ESPECIAL 159
3 JOAO ESPECIAL

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


• ANOMALIAS DE ALTERAÇÃO

Esse tipo de anomalia impede a alteração de um registro devido ao


relacionamento mal-planejado entre duas tabelas. Para este caso considere as
tabelas corrigidas anteriormente: Suponhamos que o plano “especial” está
gerando dúvidas na hora do cadastro, pois o nome sugere que seja mais caro e
não mais barato, então resolveu-se mudar o nome do plano para “menor de
25”. Caso existam clientes utilizando este plano, será necessário mudar o
nome em todos os campos referentes ao plano de ambas as tabelas. Imagine
que hajam 10 mil usuários do novo plano. Que confusão hein?!

Para resolver esta situação podemos inserir um novo campo na tabela


planos que será a chave primária, um código de planos.

SOCIOS PLANOS
CODIGO NOME PLANO CODIGO PLANO VALOR
1 WALDEYR 1 1 BASICO 199
2 ANA CLARA 1 2 MENOR DE 25 159
3 JOAO 2

Desta forma, basta mudar o nome do plano na tabela planos que a


referência do plano será única em todas as tabelas com as quais ele se
relacionar.

• ANOMALIAS DE EXCLUSÃO

Quando o sistema exclui um determinado registro que ainda está


vinculado a outro através de algum relacionamento acontece uma anomalia de
exclusão. Neste caso o sistema fica com uma informação inconsistente.
Imagine que haja uma locadora de filmes onde a tabela do banco de dados
esteja assim:

LOCADORA
CLIENTE FILME GENERO
WALDEYR MENDES JURASSIC PARK FICÇÃO
ANA CLARA SEXTO SENTIDO SUSPENSE
JOAO VELOCIDADE MÁXIMA AVENTURA

Caso o cliente João queira ser excluído do banco de dados, o filme


Jurassic Park também o será ( bem que podia mesmo, já tá velhinho... ). Ao
excluir João está se perdendo o registro do flime e do gênero.
Para resolver esse problema separamos os dados em 3 tabelas: filme,
cliente e locação.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


LOCACOES
CODIGO_LOCACAO CLIENTE FILME
1 WALDEYR 1
2 ANA CLARA 2
3 JOAO 3

CLIENTES FILMES
NOME COD FILME GENERO
WALDEYR 1 JURASSIC PARK FICÇÃO
ANA CLARA 2 SEXTO SENTIDO SUSPENSE
JOAO 3 VELOCIDADE MÁXIMA AVENTURA

1ª FORMA NORMAL

Para resolver as anomalias descritas anteriormente e garantir uma


melhor estrutura para o banco de dados, existem alguns métodos que podem
ser seguidos, garantindo assim, o que chamamos de normalização do banco de
dados.

Essa normalização é composta por algumas etapas denominadas formas


normais (Fns). A primeira forma normal irá traduzir os dados de um sistema
qualquer para tabelas. Garantir que os dados estejam dispostos em linha e
colunas que são os registros e campos. As regras básicas para a primeira
forma normal são:

• Cada célula deve conter apenas um único valor.


• Cada coluna deve conter registros únicos a menos que esteja
referenciando outras tabelas por relacionamento ( chave
estrangeira ).

Exemplo de tabela não normalizada:

LOCADORA
CLIENTE LOCACOES TELEFONE SALDO
WALDEYR SEXTO SENTIDO, 9999-9999 8
JURASSIC PARK
ANA CLARA VELOCIDADE MAXIMA 9999-9999 4

Neste exemplo, há um campo com múltiplos valores ( locações ) e um campo


com valores repetidos ( telefone ) .

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


A solução para este problema é incluir um registro para cada locação e
separar os dados dos clientes desta tabela. Então, abaixo as tabelas na 1ª FN:

LOCACOES
SALDO FILME CLIENTE
8 1 1
4 2 2
4 3 3

CLIENTES FILMES
COD NOME TELEFONE COD FILME GENERO
1 WALDEYR 9999-9999 1 JURASSIC PARK FICÇÃO
2 ANA CLARA 9999-9999 2 SEXTO SENTIDO SUSPENSE
3 JOAO 8888-8888 3 VELOCIDADE MÁXIMA AVENTURA

2ª FORMA NORMAL

A segunda forma normal trata a fundo a relação entre os atributos de


uma tabela, para tanto é preciso antes atender aos requisitos da 1ª FN.
Cada atributo não-chave da tabela deverá depender excusivamente das
chaves da tabela. No exemplo acima, o campo SALDO só tem vínculo com a
chave estrangeira CLIENTE e não possui qualquer relação com a chave FILME.
A solução então é aplicar a 2 FN, transferindo o campo saldo para a
tabela CLIENTE, assim, haverá apenas um registro de saldo para cada cliente:

CLIENTES
COD CLIENTE TELEFONE SALDO
1 WALDEYR 9999-9999 8
2 ANA CLARA 9999-9999 4
3 JOAO 8888-8888 4

LOCACOES FILMES
FILME CLIENTE COD FILME GENERO
1 1 1 JURASSIC PARK FICÇÃO
2 2 2 SEXTO SENTIDO SUSPENSE
3 3 3 VELOCIDADE MÁXIMA AVENTURA

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


3ª FORMA NORMAL

Para aumentar ainda mais a integridade do banco de dados aplica-se a


3ªFN, onde cada tabela deve estar na 2FN e cada atributo dependa
exclusivamente da chave primária da tabela onde se encontra.
É uma regra muito semelhante a 2FN, normalmente é seguida
intuitivamente pelos administradores de bancos de dados (DBA – Data base
Administrator).
O exemplo acima está na 3FN também. Vejamos outro exemplo na 2FN
para aplicarmos a 3FN.

PRODUTOS
COD PRODUTO COR
1 LAPIS AZUL
2 LAPIS VERDE
3 LAPIS PRETO

VENDAS
COD_VENDA CLIENTE PRODUTO COR
1234 1 1 AZUL
5678 1 2 VERDE

Como o campo COR pode ser obtido através da sua tabela de origem, a
tabela PRODUTOS, não convém que ele esteja na tabela de vendas pois não
depende da chave primária da tabela que é COD_VENDA. Assim, se retirarmos
o campo COR da tabela VENDAS, teremos as tabelas na 3FN.

Saiba mais sobre DBA


http://www.microsoft.com/brasil/certifique/carreira/tipo/cardbaa.aspx

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Transações com banco de dados

Uma transação é um conjunto de operações realizadas no banco de


dados, que deve ter sua integridade garantida por meio de 4 propriedades:

1. Atomicidade – Execução da transação por completo ou o aborto da


mesma. Impede que a transação seja executada pela metade. É o
famoso “Tudo ou nada”.

2. Consistência – Validação dos dados usados na transação, ou seja, no


final da transação, cada campo deve ter valores válidos dentro de seu
domínio de dados ( tipo de dados – número, texto, data, etc... ),
assim como válidos também para seus relacionamentos.

3. Isolamento – Cada transação deve ter acesso privado aos dados que
necessita para acontecer. Imagine que uma tranação A esteja
alterando o valor de um campo e uma transação B faça a leitura do
valor desse campo nesse momento. Neste intervalo de tempo o valor
do campo pode variar prejudicando a operação B.

4. Durabilidade – Garante que, no caso de erro na execução da


transação, os campos voltarão ao estado inicial.

Essas propriedades são comumente chamadas de ACID.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


SQL

A sigla SQL representa Structure Query Language, é uma linguagem


padronizada (ISO), que é largamente utilizada em todos os bancos de dados
relacionais para executar consultas e operações em geral.
Nesta apostila serão apresentados os comando básicos da SQL, no
próximo módulo Banco de Dados II você verá detalhadamente o uso da SQL.
Informe-se sobre a próxima inscrição http://www.etb.com.br, profissionalize-
se!
CREATE – Comando para criar uma tabela.
Exemplo:
CREATE TABLE GRAVADORA (
Codigo_Gravadora NUMBER(3) NOT NULL,
Nome_Gravadora VARCHAR2(60) NULL,
Endereco VARCHAR2(60) NULL,
Telefone VARCHAR2(20) NULL,
Contato VARCHAR2(20) NULL,
URL VARCHAR2(80) NULL,
PRIMARY KEY (Codigo_Gravadora)
);

ALTER – Comando para alterar uma tabela.


Exemplo:
ALTER TABLE GRAVADORA (
MODIFY Telefone VARCHAR2(100) NOT NULL
);

SELECT – Consulta em uma tabela.


Exemplo:
SELECT * FROM GRAVADORA
SELECT Nome_Gravadora, Telefone FROM GRAVADORA

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


INSERT – Inclui dados em uma tabela.
Exemplo:
INSERT INTO GRAVADORA (Codigo_Gravadora,Nome_Gravadora,)
VALUES (' 0001 ', ' SONY ')

UPDATE – Atualiza dados em uma tabela.


Exemplo:
UPDATE GRAVADORA SET Nome_Gravadora=' SONY MUSIC ' WHERE
Codigo_Gravadora = ' 0001 '

DELETE – Excluir registros da tabela.


Exemplo:
DELETE FROM GRAVADORA WHERE Codigo_Gravadora = ' 0001 '

PARÂMETRO WHERE – Filtra o conjunto de registros afetados pela


instrução. Com o uso do where podemos limitar ou especializar nossas
consultas usando operadores lógicos e matemáticos (<, >, =, etc...).

Exemplo, aqui obteríamos apenas as pessoas do banco de dados que


fossem menores de 18 anos.

SELECT * FROM PESSOAS WHERE Idade < 18;

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Modelagem

Usaremos a ferramenta DBDesigner para nos auxiliar na modelagem do


banco de dados por ser uma ferramenta fácil de usar e ser de uso livre.
DBDesigner pode ser baixado no site: http://www.fabforce.net

Após baixar e instalar o software a tela inicial é a seguinte:

A paleta de ferramentas a sua esquerda será a mais usada.


Trabalharemos nesse curso com as seguintes ferramentas:

Cria uma região, que é onde colocaremos nossas tabelas.


Cria uma nova tabela
Cria uma relação do tipo 1 : N
Cria uma relação do tipo 1 : 1
Cria uma relação do tipo N : N

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Vamos então criar nossa primeira tabela, que será a tabela de Contatos,
onde teremos os campos: Cod_Contato, Nome, Endereco, Telefone, Email.

Clicando na ferramenta para criar tabelas e logo após clicando no espaço


em branco a direita das ferramentas, surgirá a seguinte tabela:

Table_01 é a tabela criada inicialmente,

Dê um clique duplo sobre a tabela criada para preenchermos os campos


segundo o proposto anteriormente. Deverá aparecer a tela seguinte, onde
preencheremos Table Name com o nome da tabela, que será Contatos.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Em seguida, preencheremos os campos da tabela. Deve ficar tudo como
a figura imediatamente posterior.

Preenchendo os nomes dos campos e os tipos de dados para cada


campo, depois é só clicar no ícone para confirmar, então estará criado o
modelo da tabela.

Criaremos outra tabela chamada Bens, onde colocaremos os campos:


Cod_Bem, Nome_Bem, Valor_Bem. Após o processo de criação, que é análogo
ao anterior os resultado deve ser o seguinte:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Agora faremos o relacionamento entre as tabelas, neste caso, cada
Contato pode ter um ou mais bens, caracterizando, portanto, uma relação de
1:N.
Clicando na ferramenta correspondente, clique na primeira tabela e em
seguida na segunda tabela para obter o seguinte resultado:

Desta maneira, a chave primária da tabela Contatos se transporta


também para a tabela Bens como chave estrangeira. O losango na relação se
divide em duas cores, onde branca significa “1”, e preta significa “Muitos”.

Faremos agora o tipo de relação N:N, onde quando a ligação for feita
entre as tabelas, será criada automaticamente uma outa tabela chamada
tabela associativa que conterá as chaves primárias das duas tabelas que se
relacionam. Então criando as tabelas Clientes e Produtos, faremos a relação
N:N e veremos o resultado seguinte:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Bem, após modelarmos o banco de dados segundo as regras de
normalização podemos aproveitar a ferramenta para nos auxiliar na criação da
SQL para o banco em questão.

Acessando a opção SQL Create Script, obteremos a tela seguinte:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Você pode copiar o Script para área de transferência e colar em qualquer
lugar, por exemplo no Bloco de Notas, clicando no ícone

Ou, pode ainda salvar em um arquivo clicando no ícone:

O script é o seguinte:

CREATE TABLE Clientes (


cod_cliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nome_cliente TEXT NULL,
PRIMARY KEY(cod_cliente)
);

CREATE TABLE Clientes_has_Produtos (


Clientes_cod_cliente INTEGER UNSIGNED NOT NULL,
Produtos_cod_produto INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Clientes_cod_cliente, Produtos_cod_produto),
INDEX Clientes_has_Produtos_FKIndex1(Clientes_cod_cliente),
INDEX Clientes_has_Produtos_FKIndex2(Produtos_cod_produto)
);

CREATE TABLE Produtos (


cod_produto INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nome_produto TEXT NULL,
valor_produto DECIMAL NULL,
PRIMARY KEY(cod_produto)
);

Esse script é capaz de criar as tabelas no banco de dados conforme


modelamos visualmente usando a ferramenta DBDesign.

Todos esses códigos SQL podem ser executados em qualquer banco de


dados relacional, eles são capazes de compreendê-los, pois a SQL é uma
linguagem comum para todos.

Veremos a seguir como usar o ACCSESS para criar tabelas, inserir dados
através de formulários e gerar relatórios.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


MS - ACCESS 2003
Vamos então aprender a criar um banco de dados e manipulá-lo usando
o Microsoft Access. A versão utilizada neste tutorial foi a versão 2003.

A tela inicial do MS-ACCESS é esta:

Clicando em Arquivo->Novo... ou no ícone a seguinte tela se abrirá:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Optaremos por criar um banco de dados em branco, a tela que surge em
seguida é para que você salve seu trabalho previamente em um local do seu
computador. Escolha este local e dê um nome para seu arquivo, neste
exemplo, usaremos o nome MeuBanco.

Quando tiver salvo seu arquivo, imediatamente se abrirá a seguinte tela:

Onde:

Menu para criação e manipulação das tabelas


Menu para criação e manipulação de consultas
Menu para criação e manipulação de formulários
Menu para criação e manipulação de relatórios

Trabalharemos inicialmente criando nossas tabelas, pois sem elas não


podemos atingir os outros recursos. Vamos modelar 2 tabelas, uma chamada
Contatos e outra chamada Bens, onde cada contato pode ter vários bens, esse
relacionamento será definido posteriormente.

Para criar uma tabela usaremos o modo assistente até que nos
familiarizemos com o ACCESS. Escolha portanto, no menu de tabelas, a opção:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


A tela que surge nos proporciona exemplos de tabelas com sugestões de
campos para usar, mas nada impede-nos de usar outros. Vamos então criar
primeiramente a tabela contatos.

Vamos escolher para trabalhar, os campos conforme a figura acima.


Depois clique em Avançar >

Nesta etapa o assistente pede que escolhamos o nome da tabela e pede


também para que escolhamos quem deve definir a chave primária da tabela.
Vamos ser nós mesmos. Faça-o e clique em Avançar >

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


O campo que será a nossa chave primária será o campo
CódigoDoContato e optaremos pelo auto-incremento, ou seja, não
precisaremos nos preocupar com os números que serão chaves de cada
registros, os mesmo serão criados automaticamente pelo ACCESS.

Nesta etapa vamos criar automaticamente um formulário para inserir


dados na tabela que estamos prestes a criar. Assim agilizamos o processo de
criação de formulários.
Clique em Concluir

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Seu formulário inicialmente terá esse aspecto:

Vamos então preencher os dados para criarmos registros de contatos


dentro das nossas tabelas. Não é necessário preencher o código do contato,
pois como feito antes no momento da criação da tabela, foi definido que o
ACCESS se encarregaria de atribuir valores consecutivos a esse ccampo.

Preencha os dados e ao final, clique no ícone ou tecle ENTER. Pronto


o seu registro estará gravado e o fomulário estará em branco novamente para
que você possa inserir novos registros. Insira pelo menos 3 registros para
fazermos outros exercícios posteriores usando esses registros. Por exemplo;

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Após inseridos os registros, clique no ícone pra fechar o formulário,
aparecerá:

Responda que Sim, e salve com o nome formularioContatos conforme a


figura abaixo:

Agora, pelo mesmo processo de antes, no menu tabelas, vamos criar a


tabelas de Bens.

Assim, criaremos a tabelas de bens com esses três campos escolhidos


acima, se quiser renomear qualquer campo, é só selecioná-lo e clicar no botão

Clique em Avançar >

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Como antes, escolhemos o nome da tabela e escolhemos a opção que
nos possibilitará definir pessoalmente sua chave primária.

Agora teremos uma novidade: como a tabela bens, não é a única do


nosso banco, criamos anteriormente a tabela Contatos, a partir da segunda
tabela já há possibilidade de haver relacionamentos entre as tabelas é o que
vamos fazer agora. Clicando no ícone da tela seguinte:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Como dito anteriormente, cada Contato poderá ter 1 ou mais bens então
escolheremos a opção correspondente a essa afirmativa, Um registro da tabela
Contatos irá coincidir com vários registros da tabela Bens.

Clique em OK, você então retornará para a tela anterior, então clique em
Avançar para obter a tela seguinte:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Como feito na tabela de Contatos peça para que seja criado o formulário
para inserção de dados na tabela de bens.

Neste formulário poderemos cadastrar bens, com a ressalva de dizer


quem é o dono desses bens, afinal, quando fizemos o relacionamento a chave
primária de Contatos migrou para a tabela de Bens dando ao Bem um “Dono”
que é referenciado pela chave desse Dono, previamente cadastrado no banco
de dados.
No nosso caso, inserimos os registros 1-Waldeyr Mendes e 2-Ana Clara.
Então para que cadastremos um bem é preciso sempre dizer de quem é
esse bem colocando a chave primária do dono no campo CódigoDoConttato
como abaixo:

Assim, a caneta azul de R$1.00, pertencerá a Waldeyr Mendes cujo código é 1.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Salve o formulário com o nome conforme mostrado acima.

Veremos agora como fazer para gerar relatórios para os dados das
tabelas que criamos, assim, os dados passam a ser informações, pois terão um
propósito. Com as informações em mãos poderemos adquirir conhecimento.

Então no menu relatório escolheremos a opção criar relatório usando


assistente.

Aqui escolhemos a(s) tabela(s) que queremos que faça(m) parte do


relatório.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Escolhemos a tabela Contatos, e antes de clicar em avançar, escolhemos
também a tabela Bens. Neste caso deixamos de fora apenas os campos
CódigoDoBem e CódigoDoContato, assim estes campos não aparecerão no
relatório.

Em seguida escolhemos como os dados serão exibidos na tela:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Em seguida podemos separa por nível nosso relatório, neste caso vamos
separar por nome, então selecionamos o campo nome e com a setinha
transferimos-o para o quadro ao lado direito.

Assim, teremos um relatório onde os dados aparecerão separados por


nome, ou seja, do Fulano de Tal teremos apresentados na tela todos os dados
inclusive de seus bens, pois os campos relativos a esses dados foram
selecionados no início da criação do relatório.

Na tela seguinte poderemos escolher a ordem pela qual será classificado


o relatório, exemplo ordem alfabética crescente;

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Em seguida ajuste do layout de organização:

Você pode optar pelo que mais lhe agrade ou mais lhe seja útil, a escolha
deste ou aquele layout não interfere nos dados que serão apresentados,
somente em como serão apresentados.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Depois pode-se escolher o estilo de cores entre os disponíveis.

Logo após, damos um nome ao nosso relatório e clicando em Concluir,


poderemos visualizá-lo.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


A aparência do relatório é a seguinte:

Aqui ficou um pouco apertado para todos os campos, seria melhor se


usasse o papel no estilo paisagem assim poderíamos ter mais largura na folha,
porém, como demonstração podemos ver claramente os dados de nossas
tabelas aqui apresentados segundo as especificações que pedimos.

Algumas melhorias podem ser apresentadas para este banco de dados,


clicando com o botão direito na tabela Contatos, poderemos acessar seus
detalhes e modificá-los:

selecione o Modo Design, a seguinte tela se abrirá para que possamos


editar a estrutura da nossa tabela.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Perceba que podemos acessar informações de cada campo com o menu:

Ele nos informa quem é a chave primária, o nome do campo, o tipo de


dados que é aceito por esse campo e uma descrição do campo. Porém,
detalhes como dizer se um determinado campo é obrigatório não foram
disponibilizados pelo assistente, mas podemos inserir esses detalhes agora.
Clicando sobre um campo qualquer como por exemplo nome, logo abaixo
surgem opções de preenchimento para este campo:

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Editando por exemplo o tamanho do campo, e se ele é um campo
Requerido (obrigatório) podemos obter mais segurança ou acessibilidade para
o campo.

Formatos como o campo data de nascimento, pode ter outras opções,


inicialmente ele estava como data abreviada.

Bem, é isso aí, o ACCESS é uma ferramenta muito útil na modelagem de


dados e pode se fazer grandes coisas com esse banco de dados com interface
acoplada criado pela Microsoft®. É de grande utilidade principalmente
acadêmica e para bancos de dados de pequeno porte.

Aprendemos aqui a estrutura e os benefícios de um banco de dados do


Microsoft® Access familiarizado-nos com as formas de inserir e extrair os dados
de um banco de dados.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


SAIBA MAIS
A própria Microsoft disponibiliza diversos cursos on-line
http://office.microsoft.com/pt-br/training/FX100565001046.aspx

Esta apostila é uma iniciativa da ETB – Escola Técnica de Brasília.

www.etb.com.br

Lembre-se: “Muitas oportunidades estão escondidas atrás de trabalho


duro, por isso muitos as deixam passar”.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com


Referências e Bibliografia
Sites acessados:

URL http://www.fabforce.net – acessado em 06/01/2009


URL http://www.apachefriends.org – acessado em 06/01/2009

OLIVEIRA, Celso H. P. de. SQL – Curso Prático, Novatec Editora Ltda,


2002, São Paulo-SP.

MILANI, André. PostgreSQL – Guia do programador, Novatec Editora


Ltda, 2008, São Paulo-SP.

Esp. Engenharia de Software - Waldeyr Mendes waldeyr@ymail.com

Você também pode gostar