Capítulo VIII
A persistência de dados
Introdução à persistência
• Você se perguntará: Quando desligo o
computador, onde se executa meu programa?
o que acontece com os dados? O que posso
fazer para utilizar normalmente meu sistema
depois de ter ligado o computador ou o
dispositivo? Não quero introduzir todos os
dados novamente.
Introdução à persistência
• Isso pode ser resolvido de muitas maneiras. Em alguns
programas simples, com poucos dados, os
programadores armazenam as informações em
arquivos.
• E se é tão simples, por que complicar nossa vida com
outras soluções? Porque elas trazem alguns problemas:
– Redundância e inconsistência de dados
– Dificuldade para acessar os dados
– Isolamento dos dados
– Usuários múltiplos
– Problemas de confidencialidade
– Problemas de integridade
Problemas com arquivos
• O primeiro dos problemas. Significa que se eu posso escrever
quaisquer coisas em um arquivo, eu poderia ter dados repetidos,
pois não há um controle real sobre o que escrevo. Basicamente, é
como um caderno. Eu posso escrever o que eu quiser. Igualmente,
poderia escrever coisas contraditórias.
• Um outro problema é que um arquivo é simplesmente uma cadeia
muito longa de letras. Para buscar alguma coisa, tenho que
percorrer todo o conteúdo até encontrá-la.
• Por outro lado, como um arquivo é um espaço na memória, o qual
podemos acessar de maneira compartilhada, poderia acontecer que
uma pessoa queira escrever no arquivo enquanto outra está lendo,
ou que não desejemos que qualquer pessoa acesse o arquivo
porque ele tem informações confidencias. Evitar isso com esse tipo
de dados é muito difícil.
• Qual é a solução? Os servidores de bancos de dados
O que é um banco de dados?
• Formalmente, um banco de dados é simplesmente um
conjunto de dados inter-relacionados, armazenados em
um lugar. Isso poderia ser, simplesmente, uma caixa com
papeis de dados relacionados entre si, como por exemplo,
as faturas de serviços (água, luz, etc.)
• Associamos o termo banco de dados a uma coisa
relacionada com computação, mas ele é muito mais amplo
e se refere a uma coleção de dados armazenados. Em nosso
caso especificamente, nos referimos a um programa que
oferece o serviço de armazenar nossas informações, de
maneira tal de protegê-las contra problemas de eficiência,
segurança e concorrência (sincronização de acessos
simultâneos) em um formato específico
Dados persistentes
• Em nossos programas, temos dois tipos de
dados: os persistentes, ou seja, os que
continuarão ai ao ligar novamente nosso
sistema, e os dados próprios da execução do
programa, ou seja, os que vão desaparecer da
memória do computador depois de ter
desligado o sistema.
Arquitetura da solução
• Assim, separamos nosso aplicativo do servidor de banco
de dados, onde armazenaremos as informações.
Portanto, teremos a seguinte estrutura:
Arquitetura do aplicativo
• Muitos aplicativos falarão com um programa chamado
Sistema de Gerenciamento de Banco de Dados, o qual
nos permitirá acessar diferentes dados que precisemos
para nosso programa
• Nós, em particular, trabalharemos com banco de
dados chamados RELACIONAIS Nesse tipo de banco de
dados, tenta-se modelar precisamente as relações
entre eles. Então, por exemplo, uma pessoa é
modelada como um conjunto de dados: número de
carteira de identidade, data de nascimento, sexo,
nome, sobrenome e qualquer outro dado que eu
considere que representa, em seu conjunto, a uma
pessoa.
Estrutura de relações
• Qualquer elemento de nosso sistema será
modelado como uma relação de dados, no que
chamaremos tabelas do banco de dados.
• Também, podemos armazenar em nosso banco
de dados relações entre os elementos de nosso
sistema. Por exemplo, podemos ter uma tabela
nova que relacione uma pessoa a um ou mais
carros, na relação TEM (para descrever que uma
pessoa pode ter um ou mais carros, ou nenhum).
• As tabelas terão a forma a seguir
Estrutura de relações
Estrutura de relações
• Na ilustração, podemos ver como cada uma das
colunas terão um tipo de dados (no caso das pessoas,
será o número da carteira, data, etc.) e cada uma das
filas representará a relação que tem cada uma das
pessoas em meu modelo. Em minha tabela, teremos
somente as relações que tenham sentido. Ou seja, não
pode haver duas pessoas com diferente nome e
sobrenome com o mesmo número de carteira de
identidade.
• Para controlar esse tipo de tabelas, podemos utilizar
distintos programas. Utilizaremos para nosso projeto o
Microsoft SQL Express, o qual pode ser descarregado
gratuitamente da Internet.
SQL
• Para poder realizar ações em meu banco de dados,
preciso conhecer a linguagem mediante a qual me
comunico com o programa: a SQL
• SQL é uma linguagem que nos permite realizar dois
tipos de grupos de ações: definição (criar um banco de
dados, criar tabelas, eliminá-las, etc.) e manuseio, que
nos permite inserir dados nas tabelas e listá-los.
• O primeiro que devemos conhecer, depois de ter
criado o banco de dados, é a maneira de armar as
tabelas das quais já falamos. Isso é feito mediante a
expressão CREATE
CREATE
CREATE TABLE <NOME>
(
A1 TIPO1 [NULL | NOT NULL] [DEFAULT V1],
AN TIPON [NULL | NOT NULL] [DEFAULT Vn],
PRIMARY KEY (Ai,..,Aj),
FOREIGN KEY (Ai,..,Aj) REFERENCES <NOME_ESTRANGEIRA> (Ai,..,Aj)
)
UPDATE <NOME>
SET (A1 = V1,...,AN = VN)
WHERE <CONDIÇÃO> ;
SELECT A1,A2,..,AN
FROM T1,T2,..,TN
WHERE p
• Em select, temos primeiro a lista separada por vírgulas de A1, A2, ..., AN, ou seja,
os dados que desejamos trazer. Por exemplo, quero ver somente os códigos de
fornecedor e nome, da tabela FORNECEDOR. Por tanto, escreveremos:
• Trará todos os fornecedores que armazenamos, mas somente seu código e nome.
Se desejarmos ver todos os dados de cada fornecedor, substituímos a lista de
atributos por um asterisco (*).
SELECT
• Podemos adicionar filtros, como no caso de
UPDATE ou DELETE, adicionando condições
em WHERE. Por exemplo:
SELECT *
FROM FORNECEDOR
WHERE COD=5
SELECT
• Para concluir, devemos pensar como relacionamos dados entre tabelas.
• Se, além da tabela de fornecedores, temos uma tabela itens da forma a seguir:
[ Inicia placa ]