Buscar

7-output

Prévia do material em texto

E-Book - Apostila
7-Não queremos perder nada, tudo deve ficar
armazenado! (DL)
E-Book - Apostila
Esse arquivoé uma versão estática. Para melhor experiência, acesse esse conteúdo pela mídia interativa.
rd ,
E-Book - Apostila
tu ca
rm Í
Armazenamento. Nossa unidade de estudos que se inicia agora tem como foco questões
relacionadas ao armazenamento. Antes de iniciarmos, vamos analisara situaçãoa seguir.
Reflexão
Júlia estava evoluindo em sua carreira como desenvolvedora de sistemas. Após atuar no
desenvolvimento de alguns sistemas de gerenciamento bastante simples, estava se
deparando coma necessidade de armazenar dados de forma permanente. Júlia começou
a entendera diferença entre utilizar dados gerados em tempo real, durantea execução do
programa,e dados armazenados de forma permanente. Quanto maioro volume de dados
e mais complexaa suas formas de gerenciamento, maiora necessidade de utilizar bancos
de dados de forma eficiente.
Vamos estudar formas de armazenamento de dados para criação de programas confiáveis
e com maior grau de complexidade?
2-26
E-Book - Apostila
Ao final deste conteúdo, você será capaz de:
• Diferenciar as operações CRUD para armazenamento de dados
permanentes;
• Utilizar sistemas gerenciadores de bancos de dados para desenvolvimento de
sistemas;
^ Projetar modelos de dados relacionais no contexto de programação de soluções
computacionais;
* Analisar arquiteturas clientee servidor para direcionara implementação de
sistemas;
• Implementar soluções que utilizem linguagem SQL.
3-26
E-Book - Apostila
Lembra-se de quando você feza sua matrícula no curso que escolheu? Pois é! Os dados que você
informou são armazenados porum sistema computacional,e eles podem seracessadosa qualquer
momento. Além disso, conforme você avança no curso, seu desempenhoé registradoe também
precisa ser armazenado para futuras consultas.
Os programas que desenvolvemos atéentão têm uma característica um tanto limitante: eles usam
somentea memória volátil do computador.A memória volátil (que conhecemos como memória
RAM) tema seguinte característica: casoo computador seja desligado ou simplesmenteo sistema
computacional seja fechado pelo usuário, todos os dados são perdidos!
Já pensou se isso acontecesse com o sistema em que seus dados estão cadastrados?O que
aconteceria com as notas que você se empenhou tanto para conquistar? Vejao exemploa seguir:
FIGURA1 - Exemplo
4-26
ELABORAÇÃO DO AUTOR, 2010.
E-Book - Apostila
Nesta unidade de estudo, aprenderemosa armazenar dados em meio persistente. Para isso,
aprenderemos sobre Bancos de Dados, um modelo de dados diferente baseado em tabelas,a
integração entre sistemase muitas outras coisas. São muitos detalhes, que garantemo bom
funcionamento de um sistema computacional. Quando estudados um a um, com cuidadoe
paciência, são muito simplese fáceis de entender!
Operaçôes CRUD (Create, read, updatee delete)
e Sistemas gerenciadores de bancos de dados
5-26
(SGBD)
E-Book - Apostila
O armazenamento de dados em arquivos comuns (como simples arquivos .txt) no sistema de
arquivos (na sua pasta Documentos, por exemplo)é muito utilizado por diversas aplicações. Porém,
seu usoé trabalhoso,e as principais operações desejadas já possuem implementações eficientese
convenientes que podem sersimplesmente reutilizadas.
As principais operações que desejamos realizar, envolvendo memória não volátil, chamaremos de
memória persistentea partir de agora. São elas:
- Inserção de dados. Por exemplo: quando você se matriculou, seus dados, como nome,
idadee endereço, foram inseridos em uma base de dados.
- Obtenção de dados. Quandoo professor deseja cadastrar uma nota sua, antes de mais
nada, eleprecisa obter, junto ao sistema, os seus dados como nomee RA.Certo!?
- Remoção de dados.É possível que algum dado seja inserido de maneira incorreta na base
e, nesse caso,é desejável que ele possa serexcluído dela.
- Atualização de dados.O que acontece quando você muda deendereço? Vaiserpreciso
atualizar esse dado na base do sistema, nãoé mesmo?
Essas operações são muito comumente identificadas como operações CRUD, do inglês Create, Read,
Updatee Delete.
6-26
E-Book - Apostila
Um Sistema Gerenciador de Banco de Dados (SGBD)é um software que manipulaa memória
persistente, oferecendo uma abstração que simplificao códigoa ser escrito. Os arquivos são
apresentados de acordo com um modelo predeterminado, que visa facilitar seu uso. Uma de suas
principais característicasé simplificara implementação das operações CRUD.
Estudo Guiado
Os SGBDs têm sido usados por décadas. Muitos problemas são bem
resolvidos por eles, embora, em certos casos, seu uso possa não
sera solução mais adequada. Aprofunde seus conhecimentos da
página3 até 27.
Cl1que no linke leiao livro
EL SMARI, R.; NAVATHE, S.B.Sistemas de bancos de dados. Tradução: Daniel Vieira. Revisão técnica:
Enzo Seraphime Thatyana F. Piola Seraphim. 7. ed. Sâo Paulo Pearson Education do Brasil, 2018.
O modelo de dados relacional
Um dos modelos de dados mais utilizados nos dias de hoje para bases de dadosé o modelo
relacional.A palavra relacional vem de relação, queé sinônimo de tabela, ou seja, todos os dados
queo sistema gerenciador de bancos de dados manipula são representados como tabelas. Estas
possuem colunas, cada qual com o seu nome. Veja um exemplo na Figura 2. Trata-se de uma tabela
capaz de armazenar dados de pessoas. Neste minimundo, pessoas têm nome, telefonee e-mail.
7-26
https://plataforma.bvirtual.com.br/Acervo/Publicacao/168492
E-Book - Apostila
Curiosidade
Quando elaboramos um modelo para um banco de dados, podemos fazê-lo utilizando
diferentes níveis de abstração. Quandoo modeloé independente de implementação, ou
seja, quando não há menção sobre qual tecnologia será utilizada, dizemos queo modeloé
conceitual. Quando, poroutro lado, há menção explícita de tecnologias utilizadas paraa
sua implementação, dizemos queo modeloé lógico. Em particular,o modelo relacionalé
lógico, dado que fica explícito que a implementaçãoé feita por meio do armazenado de
dados em tabelas. Uma abordagem para modelagem conceitual se chama abordagem
entidade-relacionamento.É importante citá-la neste contexto, pois seu nome pode
causar certa confusão, quandoo contexto de estudoa combina como modelo relacional.
A abordagem entidade-relacionamento consiste em identificar entidades (coisas de
interesse no mundo real)e relacionamentos entre elas. Embora aspalavras ’relacional'e
’relacionamento’ possam parecer teralguma relação (como perdão do trocadilho), elas
nada têma verneste contextoe não se referemà mesma coisa.
FIGURA2 - Uma tabela no Modelo Relacional
ELABORADO PELO AUTOR.
8 - 26
E-Book - Apostila
Em uma tabela do modelo de dados relacional, cada coluna tem nome único.A ordem
delas não importa. Cada linha contém osdados de uma pessoa específica.
Ç|uando utilizamoso modelo relacional, precisamos tomaro cuidado de garantir que cada
linha de uma tabela possa serdiferenciada das demais. lssoé necessário, pois pessoas
podem termuitos dados iguais, como nomee idade.
O mecanismo utilizado para viabilizara distinção entre linhas de uma tabela chama-se
chave primária. lnformalmente, trata-se de uma coluna cujos valores permitem
diferenciar uma linha das demais, ou seja, um determinado valor nunca ocorre em mais de
uma linha.
É comum (mas não obrigatório) adicionar uma coluna chamada código ou idàs tabelas, e,
para cada linha, armazenar um número inteiro que tenha as características descritas. Veja
o exemplo da figuraa seguir.
FIGURA3 - Uma tabela no Modelo Relacional com chave primária
9 - 26
ELABORAÇÃO DO AUTOR, 2020.
Estudo Guiado
E-Book - Apostila
O modelo relacional vai muito além do simples emprego de tabelas
parao armazenamento de dados. Eleoferece suportea restrições
de integridadee ao processamento de transações também,
conceitos fundamentais parao bom funcionamento de um sistema
de bancos de dados. Aprimoreo seu conhecimentolendo as
páginas 135a 155.
Cl1que no linke leiao livro
ELSMARI, R.; NAVATHE, S. B. Sistemas de bancos de dados. Tradução: Daniel Vieira. Revisão técnica:
Enzo Seraphime Thatyana F. Piola Seraphim. 7. ed. São Paulo Pearson Education do Brasil, 2018.
10-26
https://plataforma.bvirtual.com.br/Acervo/Publicacao/168492
Exemplo1
E-Book - Apostila
11-26
ELABORAÇÃO DO AUTOR, 2020.
E-Book - Apostila
Cabe ao profissional de banco de dados (essa tarefaé muitas vezes desempenhada pelo próprio
desenvolvedor de software) verificar qual coluna tem as condições necessárias para quea restrição
chave primária possa seraplicada sobre ela.É claro que o nome deuma pessoa não tem essa
característica. Por outro lado,o CPF ouo RA de um aluno em uma universidade tem.
Exemplo2
12 - 26
ELABORAÇÃODOAUTOR,2020.
E-Book - Apostila
Saiba Mais
13- 26
E-Book - Apostila
O modelo de dados relacional tem sidoo mais utilizado nas últimas décadas e, mesmo
nosdias atuais, aindaé o predominante. Contudo, novos modelos têm conquistadoo seu
espaço. Dependendo do tipo de aplicação, eles podem sermais convenientes do queo
modelo relacional. Os modelos não relacionais são, em geral, categorizados como NoSQL
(deNotOnly SQL). Exemplos de sistemas que utilizam modelos NoSQL sãoo MongoDBeo
Firebase Firestore.
A linguagem sqt
Para lidar com as tabelas do modelo relacional, utilizamos uma linguagem chamada SQL. Mais
precisamente, SQLé simplesmente um padrão queé implementado pordiversos fabricantes de
SGBDs. Por exemplo,a Microsoft possuia sua versão de SQL queé denominada Transact SQL.A
Oracle, por sua vez, possuia sua versão de SQL, queé denominada PL/SQL.E assim por diante.
Há diferentes categorias de comandos SQL.
Comandos DDL (Data Definition Language) são comandos que servem para criare alterar
estruturas da base de dados. Por exemplo: para criar uma tabela, utilizamoso comando
CREATE TABELA. Para alterara estrutura de uma tabela, possivelmente adicionando uma
coluna, usamoso comando ALTER TABELA.
Comandos DML (Data Manipulation Language). As operações CRUD essencialmente manipulam
dados. Os comandos INSERT, SELECT, UPDATEe DELETE são utilizados para realizar cada uma
delas.
DCL (Data Control Language). Há ainda comandos que servem para especificar quais usuários
podem teracessoa determinados recursos. Por exemplo: podemos especificar que somente
usuários administradores podem acessar determinadas tabelas existentes na base. Exemplos
de comando da classe DCL são GRANTe REVOKE.
Estudo Guiado
14 - 26
E-Book - Apostila
A parte mais básica do padrão SQL está disponível em
praticamente todas as suas versões, para todos os fabricantes.
Fazem parte dela os comandos INSERT, SELECT, UPDATEe DELETE,
os quais implementam asquatro operações CRUD elementares.
Saiba mais lendo as páginas 159a 183.
ELSMARI, R.; NAVATHE, S. B. Sistemas de bancos ded ados.Tradução: Daniel Vieira. Revisão técnica:
Enzo Seraphime Thatyana F. Piola Seraphim. 7. ed. Sáo Paulo Pearson Education do Brasil, 2018.
Um possível fluxo de uso de um SGBD relacional que ilustra as operações de manipulação de dados
mais elementares envolve as seguintes etapas básicas:
Criação de um "schema" ou "data-base" que nada maisé do que um agrupamento de recursos
manipulados pelo SGBD, como assuas tabelas.
| Criação de uma ou mais tabelas que estejam de acordo com o problemaa serresolvido.
| Manipulação de dados com asoperações de inserção, remoção, recuperaçãoe atualização.
No caso do MySQL,o comando para criação de um data-baseé o seguinte. Note que um data-base
possui um nome para que possa ser referenciado posteriormente.
15-26
https://plataforma.bvirtual.com.br/Acervo/Publicacao/168492
E-Book - Apostila
A seguir,é preciso indicar ao SGBD qualo data-base que desejamos manipular, já que ele pode
gerenciar diversos datas-bases simultaneamente. lsso pode serfeito comoa seguir.
Lembra-se de que precisamos de tabelas para armazenar dadose que, além disso, uma tabela deve
teruma chave primária? Criamos uma tabela capaz de armazenar dados de pessoas. Note quea
coluna sobrea quala restrição chave primária foi aplicada se chama código.
Feitaa criação da tabela, podemos inserir alguns dados nela. Veja:
16-26
CREATE	DATABASE	db_pessoas;
USE	db_pessoas;
CREATE	TABELA	tb_pessoa(
	codigo	INT	PRIMARY	KEY	AUTO_INCREMENT,
				nome	VARCHAR	(255),
				fone	VARCHAR	(255),
				email	VARCHAR	(255)
);
Curiosidade
E-Book - Apostila
INSERT INTO tb pessoa (nome, fone, email) VALUES ('José',
' 11223344', 'josegemail.com');INSERT INTO tb pessoa (nome,
fone, email) VALUES ('Maria', '44332211', 'mariagemail.com');
Pode serinteressante recuperar os dados que estão armazenados na tabela. Isso pode serfeito
assim:
SELECT * FROM tb pessoa;
Asdemais operações CRUD (UPDATEe DELETE) são idealmente realizadas utilizando-se um
identificador específico (um valor existente na coluna sob chave primária) para que não tenham
impacto sobre todas as linhas da tabela.
A seguir, faremosa remoção da pessoa cujo códigoé iguala 1 e atualizaremoso e-mail da pessoa
cujo códigoé 2.
DELETE FROM tb pessoa WHERE codigo = 1;UPDATE tb pessoa SET
email = 'novoemailgemail.com' WHERE codigo = 2;
17-26
INSERT	INTO	tb_pessoa	(nome,	fone,	email)	VALUES	('José',
'11223344',	'jose@email.com');INSERT	INTO	tb_pessoa	(nome,
fone,	email)	VALUES	('Maria',	'44332211',	'maria@email.com');
SELECT	*	FROM	tb_pessoa;
DELETE	FROM	tb_pessoa	WHERE	codigo	=	1;UPDATE	tb_pessoa	SET
email	=	'novoemail@email.com'	WHERE	codigo	=	2;
E-Book - Apostila
Nos dias atuais, as memórias de computador são muito baratas. Por essa razão,a
operação de remoção de dados propriamente dita não é muito comum. Quando
desejamos remover um dado de uma base de dados, ao invés de fazera sua remoção
literal, simplesmenteo marcamos como inativo, usando uma coluna da própria tabela
para isso. Esse dado pode serútil no futuro para, por exemplo, operações de mineração de
dados.É pouco provável, por exemplo, que, caso você apaguea sua conta de sua rede
social favorita, hoje ela seja de fato apagada.O mais provávelé que seus dados sejam
mantidos no seu histórico de navegação, dentre outras coisas,o que pode tergrande
valor, muito maior do queo preço relativo da memória para mantê-los lá.
Arquitetura cliente/servidor
Quando uma aplicação Java se comunica com um SGBD, fica caracterizadoo uso da arquitetura
cliente/servidor.A ideiaé muito simples. De um lado, temos um software em execução esperando
por requisiçõesa serem feitas (o SGBD), de outro lado, temos um software em execução que, de
tempos em tempos, pode realizar requisiçõesa um servidor (a aplicação Java).A Figura6 ilustraa
arquitetura cliente/servidor, usando como exemploo SGBD MySQL.
FIGURA6 - Arquitetura cliente/servidor
ELABORAÇÃO DO AUTOR, 2020.
A Figura7 ilustrao uso da arquitetura cliente/servidor quandoo clienteé uma aplicação Java. Note
que há um objeto (afinal, em Java, tudoé objeto, nãoé mesmo!?) que representaa conexão entrea
aplicação Javae o SGBD.
18 - 26
E-Book - Apostila
FIGURA7 - Arquitetura cliente/servidor: conexão entre aplicação
Javae SGBD
ELABORAÇÃO DO AUTOR, 2020.
Saiba Mais
É comum associara palavra 'servidor'a hardware. Quandoa utilizamos, em geral, estamos
nos referindoa um computador de alta capacidade computacional. Apesar disso, há
outras interpretações para essa palavra. Em particular, quando estamos falando da
arquitetura cliente/servidor,a palavra servidor se referea software, ou seja, um simples
programa em execução que aguarda requisições feitas por outros programas (que fazem,
por sua vez,o papel de clientes) para servi-los.É interessante observar que um mesmo
computador pode terprocessos clientese processos servidores em execução
simultaneamente e, de fato, issoé muito comum. Assim, não fazsentido denominar um
computador como cliente ou servidor.
Mapeamento objeto-relacional
19-26
E-Book - Apostila
Vamos parare pensar um pouco. Quando estamos programando em Java, os dadossão todos
representados como objetos. Por outro lado, acabamos de introduzir um novo modelo de dados:o
modelo relacional. Como vimos, eleé baseado em tabelas. Todos os dados armazenados em uma
base relacional são representados como tabelas. Estamos, portanto, diante de um problema que
precisa ser resolvido. Quando temos uma coleção de objetos que precisa ser armazenada em meio
persistente (por exemplo,a coleção de notas dos alunos queo professor acabou de digitar),
precisamos especificar como elapode serrepresentada em meio relacional. Estamos falando de um
mecanismo muito comum. Pelo fato dea Orientaçãoa Objetos sero paradigma de programação
para aplicações mais utilizadoe também pelo fato deo modelo relacional sero mais utilizado para
armazenamento em meio persistente, esse mecanismo setorna essencial. Estamos falando de um
mecanismo de tradução ou mapeamento de modelos de dados chamado mapeamento objeto-
relacional.A ideiaé esta: dada uma coleção de objetos, como representá-la como tabelas?E o
contrário também: dada uma relação, como representá-la como um ou mais objetos?
Essaé uma tarefa que cabe ao programador resolver. Quando desenvolve em Java, eleo faz por
meio das interfacese métodos existentes na API JDBC.
A Figura8 mostra uma coleção de objetos armazenada em memória volátil, de acordo como
modelo orientadoa objetos da JVM.
FIGURA8 - Orientaçãoa Objetos: coleção de pessoas
ELABORAÇÃO DO AUTOR, 2020.
20 - 26
E-Book - Apostila
Agoraa Figura9 mostra como essa coleção de dados pode serrepresentada como uma tabela no
modelo relacional.
FIGURA9 - Modelo Relacional: tabela de pessoas
ELABORAÇÃO DO AUTOR, 2020.
A implementação do mapeamento objeto relacional depende de uma implementação apropriada da
API JDBC denominada Driver.
A comunicação entre aplicação Javae um SGBD relacionalé feita com o uso de uma API, que se
chama JDBC. Trata-se de uma especificação em que constam interfaces, classese métodos que
precisam serimplementados pelos fabricantes dos SGBDs relacionais que desejam viabilizaro
uso de seu produto por programadores Java. Cada fabricante de SGBD (como Microsoft, Oracle
etc.) fornecea sua própria implementação paraa API JDBC. Essa implementação se chama
Driver. Cabe ao desenvolvedor obtê-la (em geral, elaé fornecida gratuitamente pelos
fabricantes, já que é de seu interesse que os programadores Java usemo seuproduto)e
configurá-la adequadamente no classpath do projeto, que é utilizado pelo compiladore pela
JVM para decidir quais classes considerar no momento decompilaçãoe interpretação,
respectivamente.
A seguir, vemos um exemplo de código que estabelece uma conexão com um SGBD relacional. Note
que especificamoso endereço do host em queo servidor está em execução,a porta que ele utiliza,
o nome dobanco de dados, usuárioe senha. Como uma conexão como banco pode darorigema
fluxos alternativos de execução (exceções), fazemoso tratamento adequado como bloco try/catch.
21 - 26
E-Book - Apostila
import java.sql.Connection;
import java. sql.DriverManager;
public class ConnectionFactory {
private String usuario = 'root' ;
private String senha = '1234';
private String host = 'localhost' ;
p rivate St ring po rta = ' 33ö6' ;
private String bd = 'db pessoas';
public Connection obtemConexao (){
try{
Connection c = DriverManager.getConnection(
'jdbc:mysql://' + host + ' : ' + porta + '/'+ bd,
usuario,
senha
)#
return c;
catch (Exception e){
e.printStackTrace();
retu rn null;
É comum queum objeto seja armazenado como uma linha de uma tabela.O algoritmo para fazer
isso aconteceré muito simples. Eleé composto basicamente dos seguintes passos.
22 - 26
import	java.sql.Connection;
import	java.sql.DriverManager;
public	class	ConnectionFactory	{
	
private	String	usuario	=	'root';
private	String	senha	=	'1234';
private	String	host	=	'localhost';
private	String	porta	=	'3306';
private	String	bd	=	'db_pessoas';
	
public	Connection	obtemConexao	(){
try{
Connection	c	=	DriverManager.getConnection(
'jdbc:mysql://'	+	host	+	':'	+	porta	+	'/'	+	bd,
usuario,
senha
);
return	c;
}
catch	(Exception	e){
e.printStackTrace();
return	null;
}
}
}
E-Book - Apostila
| Definiro comando SQLa serexecutado.
Abrir uma conexão como SGBD.
Pré-compilaro comando SQLjunto ao SGBD.
Especificar os valores existentes nas propriedades do objeto que serão armazenados em cada
uma das colunas da tabela de interesse.
Executaro comando.
| Informar ao SGBD quea conexão jápode serfechada.
Curiosidade
23-26
E-Book - Apostila
Atualmente,o paradigma comumemente utilizado parao desenvolvimento de aplicações
é a Orientaçãoa Objetos. Por outro lado,o modelo de dados mais utilizado para bases de
dadosé o Relacional. Dessa forma, uma das principais atividades de desenvolvedores de
aplicações comerciaisé implementaro mapeamento objeto relacional. Trata-se, contudo,
de uma tarefa repetitivae que pode seramplamente automatizada. Há, no mercado,
frameworks, comoo Hibernate, que são capazes de tirar do programador grande parte do
esforço necessário para escrever código que fazo mapeamento objeto relacional
acontecer.
O código,a seguir, mostra tudo isso em funcionamento.
24 - 26
public void inserir (){
//1: Definir o comando SQL
E-Book - Apostila
String sql = 'INSERT INTO tb pessoa(nome, fone, email) VALUES
(?, ?, *)'i
//2: Abrir uma conexâo
ConnectionFactory factory = new ConnectionFactory();
try (Connection c = factory.obtemConexao()){
//3: Pré compila o comando
PreparedStatement ps = c.prepareStatement(sql);
//4: Preenche os dados faltantes
ps.setString(l, nome);
ps.setString(2, fone);
ps.setString(3, email);
//5: Executa o comando
ps.execute();
catch (Exception e)(
e .p rintStac kTrace();
25-26
public	void	inserir	(){
//1:	Definir	o	comando	SQL
String	sql	=	'INSERT	INTO	tb_pessoa(nome,	fone,	email)	VALUES
(?,	?,	?)';
//2:	Abrir	uma	conexão
ConnectionFactory	factory	=	new	ConnectionFactory();
try	(Connection	c	=	factory.obtemConexao()){
//3:	Pré	compila	o	comando
PreparedStatement	ps	=	c.prepareStatement(sql);
//4:	Preenche	os	dados	faltantes
ps.setString(1,	nome);
ps.setString(2,	fone);
ps.setString(3,	email);
//5:	Executa	o	comando
ps.execute();
}
catch	(Exception	e){
e.printStackTrace();
}
}
E-Book - Apostila
ELSMARI, R.; NAVATHE, S. B. Sistemas de bancos ded ados.Traduçáo: Daniel Vieira. Revisáo técnica:
Enzo Seraphime Thatyana F. Piola Seraphim. 7. ed. Sáo Paulo Pearson Education do Brasil, 2018.
Sem o armazenamento permanente de dados,é impossível criar sistemas que atendam
necessidades mais complexas no mundo real. Nessa unidade, estudamos diversos conceitos para
atuar com esse tipo de armazenamento, dentre eles:
Refe i
i tiog
ELMASRI, R.; NAVATHE, S.B.Sistemas de banco de dados. 7. ed. São Paulo: PearsonU niversidades,
2019.
26-26
https://plataforma.bvirtual.com.br/Acervo/Publicacao/168492

Continue navegando