Escolar Documentos
Profissional Documentos
Cultura Documentos
DADOS
GRADUAÇÃO
Unicesumar
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor Executivo de EAD
William Victor Kendrick de Matos Silva
Pró-Reitor de Ensino de EAD
Janes Fidélis Tomelin
Presidente da Mantenedora
Cláudio Ferdinandi
Coordenador de Conteúdo
Danillo Xavier Saes
Design Educacional
Paulo Victor Souza e Silva
Projeto Gráfico
Jaime de Marchi Junior
C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a José Jhonny Coelho
Distância; YANAGA, Edson; PEDROSO, Victor de Marqui.
Arte Capa
Banco de Dados. Edson Yanaga; Victor de Marqui Arthur Cantareli Silva
Reimpressão - 2018
Editoração
Maringá-Pr.: UniCesumar, 2016.
178 p. Melina Belusse Ramos
“Graduação - EaD”. Revisão Textual
Keren Pardini
1. Banco. 2. Dados . 3. EaD. I. Título.
ISBN 978-85-459-0100-6
Yara Martins Dias
CDD - 22 ed. 005 Simone Morais Limonta
CIP - NBR 12899 - AACR/2 Ilustração
André Luis Onishi
Impresso por:
Viver e trabalhar em uma sociedade global é um
grande desafio para todos os cidadãos. A busca
por tecnologia, informação, conhecimento de
qualidade, novas habilidades para liderança e so-
lução de problemas com eficiência tornou-se uma
questão de sobrevivência no mundo do trabalho.
Cada um de nós tem uma grande responsabilida-
de: as escolhas que fizermos por nós e pelos nos-
sos farão grande diferença no futuro.
Com essa visão, o Centro Universitário Cesumar
assume o compromisso de democratizar o conhe-
cimento por meio de alta tecnologia e contribuir
para o futuro dos brasileiros.
No cumprimento de sua missão – “promover a
educação de qualidade nas diferentes áreas do
conhecimento, formando profissionais cidadãos
que contribuam para o desenvolvimento de uma
sociedade justa e solidária” –, o Centro Universi-
tário Cesumar busca a integração do ensino-pes-
quisa-extensão com as demandas institucionais
e sociais; a realização de uma prática acadêmica
que contribua para o desenvolvimento da consci-
ência social e política e, por fim, a democratização
do conhecimento acadêmico com a articulação e
a integração com a sociedade.
Diante disso, o Centro Universitário Cesumar al-
meja ser reconhecido como uma instituição uni-
versitária de referência regional e nacional pela
qualidade e compromisso do corpo docente;
aquisição de competências institucionais para
o desenvolvimento de linhas de pesquisa; con-
solidação da extensão universitária; qualidade
da oferta dos ensinos presencial e a distância;
bem-estar e satisfação da comunidade interna;
qualidade da gestão acadêmica e administrati-
va; compromisso social de inclusão; processos de
cooperação e parceria com o mundo do trabalho,
como também pelo compromisso e relaciona-
mento permanente com os egressos, incentivan-
do a educação continuada.
Seja bem-vindo(a), caro(a) acadêmico(a)! Você está
iniciando um processo de transformação, pois quan-
do investimos em nossa formação, seja ela pessoal
ou profissional, nos transformamos e, consequente-
Pró-Reitor de
Ensino de EAD
mente, transformamos também a sociedade na qual
estamos inseridos. De que forma o fazemos? Criando
oportunidades e/ou estabelecendo mudanças capa-
zes de alcançar um nível de desenvolvimento compa-
tível com os desafios que surgem no mundo contem-
porâneo.
O Centro Universitário Cesumar mediante o Núcleo de
Diretoria de Graduação
e Pós-graduação Educação a Distância, o(a) acompanhará durante todo
este processo, pois conforme Freire (1996): “Os homens
se educam juntos, na transformação do mundo”.
Os materiais produzidos oferecem linguagem dialó-
gica e encontram-se integrados à proposta pedagó-
gica, contribuindo no processo educacional, comple-
mentando sua formação profissional, desenvolvendo
competências e habilidades, e aplicando conceitos
teóricos em situação de realidade, de maneira a inse-
ri-lo no mercado de trabalho. Ou seja, estes materiais
têm como principal objetivo “provocar uma aproxi-
mação entre você e o conteúdo”, desta forma possi-
bilita o desenvolvimento da autonomia em busca dos
conhecimentos necessários para a sua formação pes-
soal e profissional.
Portanto, nossa distância nesse processo de cres-
cimento e construção do conhecimento deve ser
apenas geográfica. Utilize os diversos recursos peda-
gógicos que o Centro Universitário Cesumar lhe possi-
bilita. Ou seja, acesse regularmente o AVA – Ambiente
Virtual de Aprendizagem, interaja nos fóruns e en-
quetes, assista às aulas ao vivo e participe das discus-
sões. Além disso, lembre-se que existe uma equipe de
professores e tutores que se encontra disponível para
sanar suas dúvidas e auxiliá-lo(a) em seu processo de
aprendizagem, possibilitando-lhe trilhar com tranqui-
lidade e segurança sua trajetória acadêmica.
AUTORES
BANCO DE DADOS
SEJA BEM-VINDO(A)!
Salve, caríssimo(a) leitor(a)! Temos o enorme prazer em apresentar-lhe o livro de Banco
de Dados I, elaborado especificamente para contribuir com sua formação, como futu-
ro(a) desenvolvedor(a) de software. Esperamos que você tenha um bom proveito do
material.
Confessamos que foi um tremendo desafio escrever este material. Até certo ponto, é
uma repetição cansativa dizer que o ritmo das mudanças e das inovações cada vez mais
se acelera, mas, a princípio, o tema “Banco de Dados” aparentaria ser algo tranquilo, pelo
fato de ser uma área de conhecimento bastante consolidada. Ledo engano. Nos últimos
cinco anos, a disciplina de Banco de Dados passou por profundas transformações que
chacoalharam os alicerces de fundamentos criados e utilizados desde a década de 1970.
Os desafios dos sistemas de informação atuais exigem que manipulemos não gigabytes
ou terabytes de informações, e sim petabytes, exabytes e zetabytes.
Os sistemas de informação das gerações anteriores tinham como objetivo gerar infor-
mações que pudessem agregar valor aos processos de negócios. Pois bem, esse objetivo
foi alcançado. Com a tão aguardada e estimulada “onipresença” de software, a magnitu-
de dessas informações geradas cresceu. Redes sociais, smartphones, tablets, sensores
de automação e vários outros dispositivos geram inúmeros bits de informação em todo
momento. Conceitos antigos já não são soberanos nesses inóspitos ambientes atuais.
Diante desses cenários, surgiram os conceitos de Big Data e NoSQL.
Mas, para irmos mais longe e chegarmos a esse ponto, devemos dar o primeiro passo.
Este material aborda os conceitos que até recentemente eram considerados como as
“regras sagradas” de banco de dados: os bancos de dados relacionais. E não se engane,
caro(a) leitor(a), esses fundamentos de bancos de dados relacionais são imprescindíveis
para que se possa dar o “próximo passo” rumo ao conhecimento de Big Data e NoSQL.
Na unidade I, teremos a apresentação de tópicos conceituais e definições sobre bancos
de dados, sistemas gerenciadores de bancos de dados e os tipos de usuários que intera-
gem com esses sistemas. Teremos também uma breve explanação sobre o conceito de
transações, que é uma ferramenta essencial no desenvolvimento de aplicações mais tra-
dicionais como aquelas que envolvem dados financeiros. Como leitura complementar,
temos um texto de Cezar Taurion (Evangelista Técnico da IBM) falando sobre Big Data.
Afinal, é importante darmos um passo no presente, mas sempre com um olho no futuro.
Essa será a tônica das nossas leituras complementares e sugestões de vídeos: apresen-
tar-lhe sempre os conceitos de vanguarda que já são aplicados em muitos casos de uso
em aplicações modernas.
A unidade II apresentará a terminologia e outros conceitos básicos que serão utiliza-
dos no restante deste material, descrevendo o modelo relacional de banco de dados
propriamente dito que será abordado na unidade V. A partir desse ponto, você estará
apto(a) a identificar as características de modelos relacionais e passar a construir seus
próprios modelos de dados baseado(a) nos fundamentos apresentados. Na modelagem
APRESENTAÇÃO
UNIDADE I
CONCEITOS DE BANCOS
DE DADOS
15 Introdução
27 Transações
38 Considerações Finais
UNIDADE II
MODELO RELACIONAL
43 Introdução
44 O Modelo Relacional
46 Introdução à Modelagem
51 Atributos
52 Tipos de Atributos
56 Domínio
58 Relacionamentos
61 Cardinalidade
65 Considerações Finais
SUMÁRIO
UNIDADE III
SQL BÁSICO
71 Introdução
77 Restrições
94 Considerações Finais
UNIDADE IV
MAIS SQL
99 Introdução
UNIDADE V
ESTUDO DE CASO
127 Introdução
167 Conclusão
169 Referências
171 Gabarito
Professor Me. Edson Yanaga
CONCEITOS DE BANCOS
I
UNIDADE
DE DADOS
Objetivos de Aprendizagem
■■ Apresentar os conceitos fundamentais envolvendo dados e bancos
de dados em sistemas computacionais.
■■ Descrever as formas de interação dos usuários com os bancos de
dados.
■■ Comparar as vantagens dessa abordagem em relação a outras
similares.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Características de Sistemas de Bancos de Dados
■■ Transações
■■ Vantagens de se utilizar um SGBD
15
INTRODUÇÃO
Introdução
16 UNIDADE I
Nossos bancos de dados podem ser coleções de dados relacionados dos mais
diversos tamanhos. Desde uma pequena agenda, contendo números e contatos
de pessoas, até um índice gigantesco de páginas de Internet e buscas relaciona-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
das ou todas as mensagens e informações trocadas entre bilhões de usuários de
uma rede social.
Em termos computacionais, há uma categoria de software especializado que
é desenvolvido especificamente com o propósito de se gerenciar essas coleções de
dados: os sistemas gerenciadores de banco de dados – popularmente reconhecidos
pela sigla SGBD (ou DBMS – DataBase Management Systems, na sigla original
em inglês). Segue mais uma definição de Navathe (2011, p. 3) sobre o termo:
Um sistema gerenciador de banco de dados (SGBD) é uma coleção
de programas que permite aos usuários criar e manter um banco de
dados. O SGBD é, portanto, um sistema de software de propósito geral
que facilita os processos de definição, construção, manipulação e com-
partilhamento de bancos de dados entre vários usuários e aplicações. A
definição de um banco de dados implica especificar os tipos de dados,
as estruturas e as restrições para os dados a serem armazenados em um
banco de dados.
Introdução
BANCOS DE DADOS OPEN SOURCE: PRESENTE OU FUTURO?
Cezar Taurion
Nos eventos sobre Open Source, volta e meia surge uma pergunta sobre bancos de da-
dos Open Source. Bem, tenho minha opinião pessoal e quero compartilhar com você.
Vamos ver se vai gerar muita discordância.
Os softwares de banco de dados são um dos mais importantes componentes de softwa-
re de uma organização. Nesse ambiente, as alternativas de software livre já são bastante
conhecidas e frequentemente são mencionadas na mídia, como MySQL, PostgreSQL,
Ingres e Derby.
O MySQL é um produto de uma empresa privada, a MySQL AB. Seu código é desenvolvi-
do pelos funcionários da empresa e com isso ela garante a propriedade intelectual sobre
o produto. Existe uma comunidade envolvida, mas submissões de código são restritas
apenas à correção de bugs. Uma pergunta: o MySQL pode ser considerado realmente
Open Source, uma vez que não adota o modelo de desenvolvimento colaborativo? O
MySQL é ofertado tanto em GPL como sob licença comercial. As duas versões são fun-
cionalmente equivalentes, sendo diferenciadas pelo nível de suporte e certificação. In-
discutivelmente é o banco de dados Open Source mais popular, com o maior mindshare
do setor.
Outro software é o PostgreSQL, que tem suas origens no Postgres desenvolvido pela
Universidade de Berkeley. Podemos citar também o Ingres, que foi um banco de dados
da Computer Associates e agora pertence a uma organização independente, a Ingres
Corporation (<www.ingres.com>) e o Derby, originalmente o Cloudscape da IBM e re-
centemente doado para a Apache Software Foundation, onde agora é o projeto Derby.
O Derby (<http://db.apache.org/derby/>) é um banco de dados em Java, geralmente
embarcado em outros softwares. A IBM, por exemplo, o utiliza embutido em diversos
softwares das famílias WebSphere, Tivoli e Lotus.
Nas minhas andanças pelo mercado tenho visto que na prática os bancos de dados
Open Source só aparecem como competidores dos produtos mais avançados nas apli-
cações pouco sofisticadas ou bem específicas.
Por sua vez, os sistemas de banco de dados proprietários buscam competir com funcio-
nalidades diferenciadoras, principalmente as relacionadas com administração de am-
bientes complexos; escalabilidade; desempenho com grande volume de transações; alta
disponibilidade e capacidade de recuperação rápida; e recursos de data warehousing.
Além disso, foi criado um ecossistema de negócios em torno dos principais softwares de
banco de dados proprietários, com diversas empresas independentes oferecendo ferra-
mentas de software complementares (geradores de relatórios, analisadores estatísticos
e outros), serviços de suporte técnico especializado e formação de recursos humanos,
e assim por diante, o que também cria uma barreira de entrada difícil de transpor por
qualquer novo entrante.
19
Já o ecossistema empresarial criado em torno dos bancos de dados Open Source (onde
se gera dinheiro) ainda é incipiente, sendo formado por pequenas empresas com
abrangência de atuação bastante limitada. Ano passado, a MySQL gerou cerca de 50
milhões de dólares em receita (<http://news.com.com/MySQL+hits+50+million+reve-
nue,+plans+IPO/2100-7344_3-6179290.html>), mas ainda é um traço (cerca de 0,03%)
no gráfico que mostra o mercado global de bancos de dados relacionais, estimado pelo
IDC em 16 bilhões de dólares. Como comparativo, o IDC estima que, nesse mesmo ano,
a receita da IBM com a família de produtos DB2 foi de aproximadamente 3,5 bilhões de
dólares.
Qual o papel que os bancos de dados Open Source desempenharão? Na minha opinião,
estarão atuando (pelo menos nos próximos 3 a 4 anos) na chamada faixa de produtos
com funcionalidades comoditizadas, onde as características de preço são as de maior
importância. Os usuários típicos serão organizações e aplicações que não precisam de
recursos mais sofisticados.
Como avaliar a qualidade de um banco de dados Open Source? Existem diversos crité-
rios que podem e devem ser considerados em uma análise para seleção de um banco de
dados. Os níveis de importância das variáveis da análise estão diretamente relacionados
com os objetivos do negócio e das necessidades a serem impostas aos softwares de
bancos de dados.
Alguns dos principais fatores a serem considerados são:
a. Recursos de gerenciamento e administração. São as ferramentas de apoio às ta-
refas do administrador do banco de dados.
b. Desempenho e escalabilidade. Os recursos que o software oferece para garantir
desempenho adequado, nos volumes de transações que serão demandados.
c. Recursos técnicos. Disponibilidade de recursos como triggers, stored procedu-
res, cursors, subqueries, capacidade de replicação, recursos de indexação, aderência
a padrões (ANSI SQL), particionamento, backup/recovery, suporte a dados não es-
truturados, independência de plataforma e recursos de segurança.
d. Custos de Propriedade.
e. Suporte técnico e disponibilidade de recursos humanos. Abrangência do ecos-
sistema em termos de serviços de suporte e qualificação de recursos humanos.
f. Disponibilidade de aplicativos.
g. Recursos de data warehousing e BI.
h. Recursos de desenvolvimento de aplicações.
i. Modalidade de licenciamento.
j. Visão, estratégia e road map do produto.
k. Tamanho e participação/envolvimento da comunidade.
l. Modelo de governança adotado pela comunidade.
m. Base instalada e adoção pelo mercado.
Bem e quanto a uma pergunta que muitos me fazem... Minha empresa deve adotar um
banco de dados Open Source? Para mim, para mudar um software de banco de dados
deve haver uma estratégia impulsionada por razões fortes e consistentes. Por exemplo,
se houver desconfianças que o atual fornecedor esteja saindo do mercado; falta de fun-
cionalidade do software (não é mais adequado às necessidade das novas aplicações da
empresa); falta de visão estratégica por parte do fornecedor do software atual; custos de
manutenção e operação muito elevados para o resultado obtido; falta de pessoal gaba-
ritado, que esteja disponível no mercado; carência de consultorias e serviços de suporte
externos; relacionamento com o fornecedor cada vez mais deteriorado... Mudar para um
banco de dados Open Source simplesmente por questões ideológicas deve estar fora de
cogitação, pois banco de dados é muito sério para ser tratado de forma simplista.
OK. E quais seriam então os custos e riscos da migração? Existem custos de migração
que não podem ser subestimados. Temos os custos da conversão de dados, custos da
codificação, testes e o que chamamos reconciliação entre as aplicações no novo e no
antigo ambiente, sempre considerando que dificilmente conseguiremos fazer uma mi-
gração estilo big bang, mas que esta será gradual.
Quanto mais complexas forem as aplicações a serem convertidas, mais custosa será a
migração. Essa complexidade pode ser medida pelo número de programas, número de
tabelas relacionais, restrições de integridade referencial e tamanho do banco de dados.
Existem custos indiretos como a construção de interfaces entre as aplicações já con-
vertidas e as que ainda estão no banco de dados antigo. Também os custos de supor-
te técnicos aos dois ambientes implicam, muitas vezes, em gastos adicionais elevados,
principalmente quando o novo banco de dados não for de completo domínio da equipe
técnica da empresa.
Em resumo, os custos da migração afetam os cálculos de custos totais de propriedade. A
maioria das empresas é extremamente cautelosa em trocar de fornecedor de softwares
críticos. O perigo de uma interrupção nos seus negócios decorrente de uma troca mal
planejada ou inadequada faz com que os custos de troca possam ser extremamente
elevados e desestimuladores. Migrar de um banco de dados para outro é sempre uma
tarefa complexa e de alto risco, que só deve ser efetuada quando os benefícios forem
claramente demonstráveis.
Fonte:Taurion (2007, online).
21
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Se utilizar um sistema de banco de dados parece uma solução natural, qual seria
a solução alternativa? Pense em algumas aplicações que você utiliza e que não
fazem uso de SGBDs. Processadores de texto, planilhas, ferramentas de dese-
nho etc. são alguns exemplos dessas aplicações. O que todas têm em comum? A
necessidade de se armazenar a informação manipulada por meio de arquivos.
Em qualquer aplicação que necessite do armazenamento de dados, faz-se
necessário dispor de algum mecanismo que permita que esses sejam gravados
de modo persistente. A abordagem de arquivos tem suas vantagens, como, por
exemplo, a portabilidade dos dados. Você pode carregá-los eletrônica ou fisica-
mente para locais diferentes de modo bastante simples. Mas entre as desvantagens
dessa abordagem há todo o trabalho necessário para se criar um formato e pro-
cessar a sua gravação e recuperação – e, acredite, não é pouco trabalho!
Um SGBD, por outro lado, já dispõe de uma série de funcionalidades prontas
para serem utilizadas pelo desenvolvedor da aplicação. Desse modo, uma série
de preocupações passa a ser delegada a um software de terceiros (o SGBD). A
seguir, apresentaremos uma série de características que diferenciam a aborda-
gem de sistemas de banco de dados da manipulação manual das informações
(como em arquivos, por exemplo).
Natureza autodescritiva: uma característica fundamental que distingue os
sistemas de bancos de dados de outras abordagens é o fato de que, nos SGBDs, o
banco de dados e as metainformações sobre o banco de dados são armazenados
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
armazenados, sem se importar em como esses dados serão manipulados inter-
namente. Essa característica aumenta bastante o nível de manutenibilidade do
sistema, quando bem aplicada.
Múltiplas visões dos dados: estas não são uma característica fundamen-
tal, mas muitos SGBDs fornecem a possibilidade de que diferentes usuários
com diferentes permissões possam acessar diferentes “visões” dos dados. Essas
visões (views) correspondem a estruturas virtuais criadas a partir dos dados
armazenados e podem conter, além dos próprios dados, informações derivadas
(calculadas) a partir desses dados.
A criação de diferentes usuários com diferentes permissões a visões específicas
é uma abordagem muito utilizada em sistemas cliente/servidor ou na integra-
ção de aplicações mediante banco de dados. O auge do uso dessas abordagens
deu-se no final da década de 1990, embora ainda hoje seja possível testemu-
nhar aplicações sendo executadas sob esse modelo. Recomenda-se fortemente
que, no desenvolvimento de novas aplicações, a abordagem de múltiplas visões
e de integração mediante banco de dados seja substituída por uma abordagem
orientada a serviços como SOA (Service Oriented Architecture) ou como REST
(REpresentational State Transfer).
Visões não são uma má prática. São um recurso bastante útil, mas não
imprescindível. Como toda ferramenta, quando bem utilizada e de modo ade-
quada, é um recurso valioso.
Acesso concorrente de múltiplos usuários: um SGBD multiusuário, como
o próprio nome já define, deve permitir o acesso de múltiplos usuários. Além
disso, o acesso deve ser concorrente, permitindo que todos os usuários conectados
TRANSAÇÕES
Transações
28 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de múltiplos usuários ao mesmo SGBD.
Durabilidade: a propriedade de durabilidade garante que uma vez que uma
transação tenha sido finalizada com sucesso, os dados terão a garantia de terem
sido armazenados corretamente – independentemente da eventualidade de falhas,
falta de energia, erros de aplicação etc.
Em nossa opinião, é justamente a propriedade de durabilidade que faz com
que os bancos de dados sejam posicionados como “ferramentas sagradas” em
muitas empresas. Novamente, não há menosprezo algum em dizer que o mais
importante é o código que atende aos processos de negócios. Durabilidade é
essencial: imagine qualquer empresa perdendo todos os seus dados. A continui-
dade do próprio negócio está em risco. Mas mais importante do que os dados
em si é o uso que se faz deles.
Transações
30 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de projetos de software livre também podem contribuir
em outras atividades, como documentação, por exemplo.
Neste vídeo, Klaus Wuestfeld, um dos pioneiros do XP (eXtreme Programming) no Brasil e criador
do conceito de prevalência de objetos, mostra uma abordagem inovadora e de alto desempenho
para manipulação e persistência de objetos. Atualmente, alguns dos sistemas de transações mais
rápidos do mundo utilizam esse conceito.
Disponível em: <http://youtu.be/Car5V9l8BiQ>. Acesso em:7 jul. 2015.
múltiplos motivos, essas cópias podem acabar sendo enviadas por e-mail
a pessoas cujo acesso é indevido ou a mesma pode ser deixada em um
dispositivo de armazenamento removível esquecido em alguma mesa
de reunião. No mínimo, um SGBD oferece uma combinação de login/
senha para acesso a um determinado banco de dados. Outras restrições
relativas a qual usuário pode acessar quais dados também costumam ser
implementadas pela maioria dos SBGDs. Como o acesso é centralizado,
também tem-se uma única cópia para proteção.
3. Consultas eficientes: como são aplicações de software de propósito
específico, os SGBDs são especialmente projetados para armazenar efi-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
cientemente os dados a eles delegados e para permitir formas de consulta
eficientes aos mesmos dados. Cada SGBD possui sua estratégia interna
para transformar essas informações em bytes gravados no dispositivo de
armazenamento, mas, de um modo geral, não há uma grande diferença
de desempenho entre diferentes produtos em uma quantidade razoá-
vel de aplicações. Em casos de usos típicos, é muito mais importante a
eficiência em consultas do que a eficiência em armazenamento de infor-
mações. Assim, os SBGDs utilizam dispositivos como índices (que são
estruturas criadas para otimizar consultas baseadas em certos critérios)
e cachês (caches) para armazenar em memória os dados mais frequente-
mente acessados. Esses dispositivos permitem que as consultas possam
ser executadas de modo mais rápido e, em muitos SGBDs, adequar esses
dispositivos de modo otimizado chega a quase ser uma arte, tamanha a
quantidade de opções disponíveis.
4. Backup e Restore: para garantir a continuidade dos negócios, é essen-
cial executar periodicamente o backup das informações armazenadas
no servidor. Ao invés de cópias físicas dos arquivos do SGBD, é comum
os próprios SGBDs fornecerem ferramentas que permitem a exportação
dos dados para um formato intermediário (texto ou binário) para backup.
Essas mesmas ferramentas suportam a restauração desses dados em caso
de necessidade. As rotinas de backup/restore também são uma ferramenta
bastante útil na migração ou cópia de servidores onde o mesmo SGBD
esteja instalado. Situações de migração costumam ocorrer em caso de
falhas ou upgrade de equipamento. Cópias costumam ser utilizadas para
permitir o teste de aplicações em desenvolvimento.
(AWS), Google Docs ou software de backup de dados Seagate® EVault®. As nuvens públi-
cas são controladas por seus respectivos proprietários, cujos clientes optam por usar os
seus serviços. As nuvens privadas, por outro lado, pertencem e são operadas e controla-
das por organizações e são semelhantes aos serviços de TI legados. Entretanto, observe
que as nuvens privadas criadas usando componentes e serviços públicos e instalações
externas existentes em diferentes locais de provedores de nuvem são chamadas de nu-
vens híbridas.
A Seagate e o armazenamento em nuvem
A Seagate é líder no fornecimento de armazenamento corporativo e, sem nenhuma sur-
presa, também está no centro da infraestrutura de nuvem. Aproveitando décadas de
experiência em ambientes de co-localização e serviços gerenciados de alta densidade e
grande escala para empresas, instituições e governos, a Seagate leva esse conhecimen-
to para os ambientes de nuvem pública e privada. Além da tecnologia de armazena-
mento líder de setor, a Seagate tem décadas de experiência trabalhando com diversos
parceiros e suas respectivas soluções de armazenamento, embalagem, chassi e gabine-
te, processos de teste e verificação.
Como um fornecedor-chave para provedores de serviços gerenciados e de nuvem pú-
blica e privada, a tecnologia da Seagate pode ser encontrada em ambientes corpora-
tivos e centrais de dados em nuvem e nos provedores de serviços gerenciados para
pequenas empresas e consumidores. Em outras palavras, a Seagate já está levando o
armazenamento em nuvem e a computação em nuvem da central de dados para o seu
bolso há algum tempo!
As opções de armazenamento para os ambientes de armazenamento em nuvem e com-
putação em nuvem da Seagate incluem a família Pulsar® de SSDs de desempenho ultra-
-alto. Para complementar as unidades Pulsar oferecemos os HDDs de alto desempenho
Savvio® 10K e Savvio 15K de 2,5 polegadas para cenários de densidade mais alta, além
dos HDDs de baixo consumo de energia Constellation®, que comportam uma configu-
ração com vários terabytes.
A Tabela 1 mostra como e onde a Seagate promove o armazenamento em nuvem e a
computação em nuvem pública e privada.
Tabela 1. Como a Seagate promove a nuvem
CONSIDERAÇÕES FINAIS
Nesta unidade, pudemos perceber que os bancos de dados são uma coleção de
dados relacionados que representam, por meio de um nível determinado de abs-
tração, o modelo do mundo real de nossas aplicações de software. Boa parte das
aplicações de software desenvolvidas na atualidade envolve a manipulação e,
principalmente, o armazenamento dos dados – estes muitas vezes em enormes
quantidades. Para manipular esses bancos de dados, criou-se uma categoria de
software específico denominada de sistemas gerenciadores de bancos de dados
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
(SGBDs). O banco de dados (os dados) e o sistema que o gerencia são denomi-
nados conjuntamente de sistemas de bancos de dados.
Durante esta unidade também descrevemos as características que identificam
as propriedades de sistemas de bancos de dados quando comparados a aborda-
gens tradicionais de processamento de arquivos. Certamente que determinados
casos de uso ainda exigem a utilização de arquivos como meio de armazenamento
das informações. Mas com as informações que detalhamos como características
desses sistemas de banco de dados, esperamos que você, como desenvolvedor(a),
possa ter argumentos suficientes para decidir adequadamente entre uma abor-
dagem e outra.
Como existem muitos tipos de usuários diferentes que podem interagir com
os sistemas de bancos de dados, também apresentamos uma lista não exaustiva
dos papéis que esses usuários podem assumir nessas interações. Uma máxima
que devemos sempre utilizar é a “técnica do espelho”. Olhe sempre para o sof-
tware que você desenvolve por meio dos olhos de quem usa. Compreender as
situações em que cada tipo de usuário interage com um sistema de banco de
dados permite que tenhamos uma melhor consciência das dificuldades e das
necessidades que os usuários possuem em cada caso de uso cotidiano da nossa
vida profissional.
Por fim, tentamos discutir algumas vantagens da abordagem de sistemas de
bancos de dados em relação à implementação de aplicações sem a facilidade e
funcionalidade de um SGBD. Claro que, tendenciosamente, um estudioso de sis-
temas de bancos de dados observaria argumentos bastante positivos em relação à
abordagem dos SGBDs. O papel de um desenvolvedor experiente é distanciar-se
Considerações Finais
40 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
II
UNIDADE
MODELO RELACIONAL
Objetivos de Aprendizagem
■■ Capacitar o aluno ao entendimento dos conceitos básicos na criação
de um banco de dados.
■■ Apresentar ao aluno, a melhor maneira de aplicação dos conceitos
básicos.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Modelo Relacional
■■ Introdução à Modelagem
■■ Atributos
■■ Tipos de Atributos
■■ Domínio
■■ Chave Estrangeira (Foreign Key)
■■ Relacionamentos
■■ Cardinalidade
45
INTRODUÇÃO
Introdução
46 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
O MODELO RELACIONAL
Quando nos propomos a criar um banco de dados, temos que saber da importância
do modelo relacional, pois é nele que nos basearemos para uma implementa-
ção inicial. O modelo relacional é um modelo da segunda geração que surgiu
depois dos modelos pré-relacionais, hierárquicos e de rede. Os modelos que hoje
tentam substituir são os de terceira geração, os pós-relacionais, modelos orien-
tados a objetos, objeto relacional, temporal e geográfico. O Modelo relacional
tem uma sólida base formal, construído sob a teoria dos conjuntos, seu nome é
devido à relação matemática da teoria dos conjuntos e não aos relacionamen-
tos, como muitos pensam. Trata-se de um modelo com estruturas de tabelas e
alguns conceitos.
O modelo relacional permite a representação da estrutura lógica do projeto
com uma visão genérica. Sua estrutura é feita de forma clara e simples, possibili-
tando representar os dados do mundo real como objetos denominados entidades
ou conjunto de entidade.
Neste livro, estaremos utilizando a notação de Peter Chen (1990), notação
esta que fora criada, em 1976, pelo Dr. Peter Pin-Shan Chen, que é um cientista
da computação americano e professor de ciência da computação na Louisiana
State University, conhecido como criador do modelo entidade relacionamento.
MODELO RELACIONAL
47
Entidade:
Atributo: ou
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Relacionamento:
ENTIDADES (TABELAS)
Alunos Viagem
Carros Aluguel
O Modelo Relacional
48 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Exemplos de Entidades Concretas Exemplos de Entidades Abstratas
INTRODUÇÃO À MODELAGEM
MODELO RELACIONAL
49
substantivos das frases e, caso esse substantivo seja relevante ao sistema, pode-
remos transformá-lo em uma entidade, por exemplo:
Na frase: “a bibliotecária empresta um livro”, podemos retirar duas possí-
veis entidades, sendo elas:
Bibliotecária Livro
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Carro Itinerário
Introdução à Modelagem
50 UNIDADE II
Exemplo 1:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 7: Exemplo 1 de Descrição Textual Narrativa
Fonte: os autores.
MODELO RELACIONAL
51
Introdução à Modelagem
52 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
2. A empresa já fotografou mais de 8 milhões de quilômetros para o Street
View.
3. Originalmente a companhia se chamaria ‘Googol’, mas os investidores es-
creveram ‘Google’ no primeiro cheque de contribuição e o nome permane-
ceu.
4. O banco de dados de buscas do Google tem mais 100 milhões de giga-
bytes. Seria necessário 100 mil HD externos de 1 terabyte para armazenar
todos esses dados.
5. O mundo assiste mais de 450 mil anos de vídeos no YouTube por mês. Isso
é mais do que o dobro de anos de existência dos humanos modernos.
6. O Google usa o captcha para ensinar computadores a ler textos digitaliza-
dos de livros. São 200 milhões de captchas resolvidos por dia.
7. A página do Google tem um layout simples, porque Sergey Brin e Larry
Page não sabiam HTML. A dupla decidiu deixar o site da mesma forma para
reforçar a identidade.
8. A gigante da web deve ser a única companhia que tem como objetivo
explícito reduzir o tempo que as pessoas passam em seu site.
9. Na média, a companhia adquiriu mais de uma empresa por semana desde
2010.
10. Em 2011, 96% dos US$ 37,6 bilhões em receita do Google vieram apenas
de anúncios.
Fonte: Olhar Digital - 10 Curiosidades (2013, online).
MODELO RELACIONAL
53
ATRIBUTOS
Produto
Código Valor_Venda
Produto
Valor_Custo Descrição
Atributos
54 UNIDADE II
PRODUTOS Entidade
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 10: Exemplo de uma entidade em formato de colunas
Fonte: os autores.
TIPOS DE ATRIBUTOS
MODELO RELACIONAL
55
CPF CPF
Cliente ou Cliente
Nome Nome
Funcionário ou Funcionário
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Matrícula Local
Matrícula Local
Nome
Nome
Matrícula Telefones
Funcionário
Sexo Data_Nascimento
Tipos de Atributos
56 UNIDADE II
Logradouro
Bairro
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Matrícula Endereço
Cidade
Data_Nascimento
Código ou Código
Figura 14: Exemplo de um atributo do tipo Chave
Fonte: os autores.
MODELO RELACIONAL
57
Exemplificando:
Para a entidade Funcionários, temos os seguintes atributos:
Endereço: analisando esse atributo, sabemos que pode haver mais de um
funcionário morando no mesmo endereço, logo, ele não poderia ser classificado
como atributo identificador.
Nome: esse atributo pode confundir um pouco, pois cada funcionário tem
seu nome, porém, pode haver funcionários com o mesmo nome, logo, pode-
mos perceber que o nome ser utilizado como um identificador pode nos trazer
problemas.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Endereço Nome
Funcionário
Matrícula
Tipos de Atributos
58 UNIDADE II
DOMÍNIO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Booleanos.
■■ Cadeias de caracteres de tamanho fixo e tamanho variável.
■■ Data.
■■ Hora.
MODELO RELACIONAL
59
dependentes umas das outras (“foreign key”), tendo que ter uma maior atenção
dos administradores do banco de dados.
A seguir, exemplificaremos uma chave estrangeira entre duas tabelas (enti-
dades) em que o relacionamento é 1:N:
Figura 17: Exemplo da aplicação de uma chave estrangeira entre duas tabelas
Fonte: os autores.
Outro exemplo:
Tabela: Professor
Pro_Cod Pro_cpf Pro_DtNasc Pro_idade CodDepto
Tabela: Departamento
Depto_Cod Depto_Nome
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Tabela: Curso
Cur_Cod Cur_Nome CodDepto
Figura 18: Exemplo da aplicação de uma chave estrangeira entre duas tabelas
Fonte: os autores.
RELACIONAMENTOS
MODELO RELACIONAL
61
Funcionário Setor
Tipos de Relacionamentos:
A classificação dos relacionamentos é baseada no número de entidades que par-
ticiparem em um conjunto de relacionamentos, o que determina também o grau
desse conjunto.
■■ Autorrelacionamento ou Relacionamento Recursivo: nesse caso, são enqua-
drados relacionamentos com apenas uma entidade. Exemplo:
Alunos Pessoas
Monitorar Casar
Relacionamentos
62 UNIDADE II
■■ R
elacionamento Ternário: o relacionamento ternário é de grau três, pois
temos três entidades associadas no relacionamento. Exemplo:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Professor Ensinar Curso
Disciplina
Vale lembrar que, entre duas entidades, também pode haver relacionamento, ou
seja, uma entidade pode estar associada a outra por mais de um relacionamento,
conforme o exemplo a seguir:
Gerenciar
MODELO RELACIONAL
63
Horário
Conforme o exemplo citado (Figura 25), podemos dizer que o atributo horá-
rio faz parte comum às entidades associadas no relacionamento, em que esse
informa em que horário que o Palestrante ministra o referido tema.
CARDINALIDADE
Cardinalidade
64 UNIDADE II
Notação:
Cardinalidade Máxima
(x : y)
Cardinalidade Mínima
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Cardinalidade Máxima
Trata-se do limite máximo de ocorrências de uma entidade em relação à outra:
■■ Um para Um (1:1).
■■ Um para Muitos (1:N).
■■ Muitos para Muitos (N:N) ou N:M.
1 1
Cliente Compra Produto
1 1
MODELO RELACIONAL
65
1 N
Cliente Compra Produto
1 1
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
1 N
Cliente Compra Produto
N 1
Cardinalidade
66 UNIDADE II
1 N
vários Clientes Compra Produto
N 1
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 29: Exemplo de Cardinalidade N para N.
Fonte: Cardoso (2012).
Cardinalidade Mínima
Trata-se do mínimo de ocorrências de uma entidade em relação à outra:
■■ Opcional (0) - é quando uma ocorrência se relaciona com (no mínimo)
nenhuma de outra entidade. Abaixo temos a representação:
■■ (0:1) - Nesse caso, a representação textual seria “no mínimo nenhuma
ocorrência em uma entidade para no máximo uma ocorrência na outra
entidade”.
■■ (0:N) - Nesse caso, a representação textual seria “no mínimo nenhuma
ocorrência em uma entidade para no máximo muitas ocorrências na
outra entidade”.
■■ Obrigatória (1) - uma ocorrência se relaciona com (no mínimo) uma de
outra entidade.
No exemplo abaixo (Figura 30), devemos analisar a regra de negócio que, de
acordo com a cardinalidade mínima ser marcada como 0 (zero), significa que o
Cliente não é obrigatório no momento da venda do produto e que o Produto é
MODELO RELACIONAL
67
CONSIDERAÇÕES FINAIS
Considerações Finais
1. A partir do estudado nesta unidade, defina Entidades Concretas e Entidades
Abstratas.
2. Crie uma Entidade Produtos com os seguintes atributos:
a. Código do Produto.
b. Descrição do Produto.
c. Unidade do Produto.
d. Valor do Produto.
e. Classificação do Produto.
f. Valor Custo do Produto.
3. Analise as frases abaixo e crie as possíveis entidades:
a. “o atendente matricula o aluno no curso de Administração”.
b. “ a secretária agenda pacientes para atendimento médico”.
c. “ é necessário cadastrar os produtos para realizar as vendas aos clientes”.
69
Acesse este link para assistir a uma aula do Professor Marcelo Assis sobre como deve ser feito o
Modelo Relacional Normalizado:
Disponível em: <https://www.youtube.com/watch?v=eiBbG9bVljs>.
Acesso em: 03 jul. 2015.
Professor Me. Edson Yanaga
III
UNIDADE
SQL BÁSICO
Objetivos de Aprendizagem
■■ Definir o que é SQL.
■■ Apresentar os comandos de definição e uso da SQL.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Definir o que é SQL
■■ Apresentar os comandos de definição e uso da SQL
73
INTRODUÇÃO
Introdução
74 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
haja uma versão mais recente: a SQL:1999. Infelizmente, os fabricantes de SGBDs
não seguem 100% o padrão, o que torna a tarefa de migração de um produto
para outro um pouco mais difícil. Comercialmente, é uma estratégia interes-
sante para os fabricantes, pois se baseia no aprisionamento do cliente: uma vez
comprometido com um produto, o custo para migração (em tempo e esforço)
torna-se elevado o suficiente para que o cliente desista da ideia. Já para os usu-
ários, esse é um fato infeliz. De positivo do padrão SQL-92 temos que, mesmo
com as sutis diferenças entre as implementações da SQL em diferentes produtos,
as semelhanças se sobressaem e permitem que os desenvolvedores de software
possam aprender facilmente a lidar com produtos concorrentes.
A SQL possui comandos tanto para a criação de definições de dados (criação
de schemas) quanto para a execução de comandos de manipulação de banco de
dados (consultas e atualizações). É uma linguagem bastante abrangente. É por
esse motivo que trataremos da SQL em duas unidades distintas. A unidade III
abordará a criação de schemas e os comandos básicos da linguagem, enquanto
que a unidade IV abordará os comandos um pouco mais avançados
SQL BÁSICO
75
O CONCEITO DE SCHEMA
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Em sua versão inicial, a SQL não possuía um mecanismo para agrupar tabelas
relacionadas. Como consequência, todas as tabelas no SGBD coexistiam dentro
de um mesmo “ambiente”. A partir do SQL-92, criou-se o conceito de schema,
que é simplesmente um conjunto de tabelas relacionadas. Do mesmo modo que
em UML um pacote é um conjunto de classes relacionadas, um schema é um
conjunto de tabelas relacionadas. Por exemplo, o seguinte comando cria um
schema denominado de “agenda”. Todos os comandos em SQL são finalizados
por um ponto-e-vírgula:
contato
id nome sobrenome nascimento peso
email
id email contato_fk
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
telefone
id telefone contato_fk
grupo afiliação
id nome grupo_fk contato_fk
nascimento DATE,
peso DECIMAL(10,2)
);
SQL BÁSICO
77
contato_fk INT,
);
contato_fk INT,
);
);
TIPOS DE DADOS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Números com precisão decimal (normalmente utilizados
TIPOS NUMÉRICOS em cálculos de moeda, por exemplo) são DECIMAL
ou NUMERIC, declarados como DECIMAL(a,b) ou
NUMERIC(a,b), em que “a” é o número de dígitos inteiros e
“b” é o número de dígitos decimais.
Tipos de caractere podem ser de tamanho fixo ou variável.
Os atributos de tamanho fixo podem ser declarados como
CHAR(n), em que “n” é o número máximo de caracteres
suportado pelo atributo. Para especificar um atributo de
tamanho variável, utiliza-se o tipo VARCHAR(n).
Para se entender o critério de uso entre um e outro, é neces-
sário entender como é a alocação de espaço desses tipos
TIPOS CARACTERE no arquivo físico. Se o tamanho for fixo (CHAR), o SGBD já
aloca esse tamanho predefinido no arquivo: as buscas po-
dem ser mais rápidas, pois o SGBD já sabe o tamanho do
campo ao “pular bytes” na busca sequencial. Entretanto, se
o conteúdo dos atributos não preencher todo o tamanho
definido, há o desperdício de espaço de armazenamento.
Por outro lado, utilizando-se VARCHAR, o SGBD aloca um
ponteiro para determinar qual o tamanho do atributo: as
buscas são mais lentas, mas não há desperdício de espaço.
Assim como em linguagens de programação, tipos boo-
leanos podem assumir os valores TRUE ou FALSE. Muitos
TIPOS BOOLEANOS
SGBDs mapeiam esses valores em “1” e “0”, respectivamen-
te.
O tipo DATE suporta dados temporais no formato AAAA-
-MM-DD (ano, mês, dia), enquanto que o tipo TIME utiliza
TIPOS TEMPORAIS
o formato HH:MM:SS (hora, minuto e segundo). A própria
SQL assegura representações temporais válidas.
SQL BÁSICO
79
RESTRIÇÕES
A linguagem SQL permite que todos os atributos (com exceção daqueles que
compõem a chave primária) sejam nulos. Se o seu modelo de negócios não per-
mite que um atributo seja nulo, é necessário especificar uma restrição de NOT
NULL na declaração do atributo.
Outra consideração (pequena talvez) sobre o NOT NULL é que no mínimo o
SGBD terá que gravar um bit (ou um byte) a mais em cada atributo em casos de
campos NULL. Se um atributo permitir nulos, então o SGBD terá que, primeira-
mente, saber se o campo é nulo ou não e depois armazenar o próprio conteúdo.
Além de valores nulos, também há possibilidade de se definir um valor padrão
para os atributos utilizando-se a cláusula DEFAULT <valor>. Caso esse atributo
seja omitido durante a inserção de uma linha da tabela, assume-se o valor padrão.
Por padrão na SQL, caso nenhuma cláusula seja declarada, os atributos per-
mitirão valores nulos e o valor padrão também será nulo.
Como exemplo, poderíamos definir ‘Silva’ como o sobrenome padrão dos
nossos contatos no comando CREATE TABLE:
CREATE TABLE contato (
nascimento DATE,
peso DECIMAL(10,2)
);
Restrições
80 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
(como no exemplo a seguir ):
contato_fk INT,
);
SQL BÁSICO
81
contato_fk INT,
);
contato_fk INT,
);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
nição de esquema proposta na Figura 6 .
Exemplo 1: Selecione o nome e o telefone de todos os contatos cujo sobre-
nome seja ‘Silva’.
SQL BÁSICO
83
Nesse exemplo, pode-se notar que em uma consulta é permitido realizar o join
entre várias tabelas diferentes, e, novamente nesse caso, todas estão relaciona-
das por meio de uma condição de combinação baseada em chaves estrangeiras.
Exemplo 3: Selecione o id do telefone de todos os contatos cujo peso seja
maior que 70.
SELECT telefone.id
O Exemplo 3 mostra como devemos definir os nomes dos atributos nas cláusu-
las quando há a possibilidade de ambiguidade na definição dos nomes. Tanto
a tabela contato quanto a tabela telefone possuem um atributo denominado de
“id”. Nesse caso, devemos informar à SQL qual é o atributo “id” que desejamos
obter, prefixando o atributo com o nome de sua respectiva tabela. No caso do
exemplo, eliminamos a ambiguidade descrevendo o atributo como “telefone.id”.
Exemplo 4: Selecione o nome do grupo e o nome do contato de todos os
contatos cujo nome seja ‘Joaquim’.
fk AND n = ‘Joaquim’;
SELECT c.peso
FROM contato c
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
aos atributos; um alias pode também ser definido como um apelido para uma
tabela na consulta SQL.
Exemplo 6: Selecione a data de nascimento de todos os contatos.
SELECT nascimento
FROM contato;
SELECT *
FROM contato
Quando não se deseja limitar quais atributos devem ser retornados na consulta,
pode-se utilizar um asterisco (“*”) para determinar ao SQL que processe todos
SQL BÁSICO
85
FROM contato;
Embora o modelo relacional seja baseado na teoria geral dos conjuntos e, mate-
maticamente, em conjuntos não hajam elementos repetidos, permite-se elementos
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SELECT *
FROM telefone
No Exemplo 9, utilizamos o comparador LIKE para definir uma busca por padrões
em Strings. O caractere ‘%’ é utilizado em condições LIKE para definir zero ou
mais caracteres. Nesse exemplo, o ‘44%’ determina que a String deve iniciar com
‘44’ e pode possuir zero ou mais caracteres posteriores.
Exemplo 10: Selecione todos os contatos que nasceram na década de 1980.
SELECT *
FROM contato
Outro caractere especial que pode ser utilizado em condições LIKE é o ‘_’. Ele
representa um único caractere arbitrário utilizado na busca. Como as datas em
SQL podem ser representadas como uma String ‘AAAA-MM-DD’, utilizamos o
Consultas Básicas em SQL
86 UNIDADE III
SELECT *
FROM contato
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de valor em comparações.
Exemplo 12: Selecione o nome de todos os contatos por ordem alfabética
crescente.
SELECT nome
FROM contato
SQL BÁSICO
87
FROM contato
são declarados.
Até agora, pudemos definir quais são os comandos básicos da SQL para a execu-
ção de consultas básicas em nossos bancos de dados. Neste tópico, abordaremos
os comandos da SQL que permitem a adição, a atualização e a remoção de tuplas
(linhas), que respectivamente correspondem ao INSERT, UPDATE e DELETE.
Abordaremos cada um deles a seguir
O comando INSERT
O comando INSERT é utilizado para inserir linhas em uma determinada tabela.
Devido à definição formal do schema da tabela, precisamos informar os valores
de inserção na tabela dentro de uma ordem específica. Essa ordem pode ser a
própria ordem determinada pela definição do schema ou pode ser a ordem em
que definimos os nomes das colunas da cláusula de INSERT.
O comando INSERT, em sua forma mais simples, pode ser exemplificado
do seguinte modo:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
INSERT INTO contato (nome, sobrenome, peso, nascimento, id)
SQL BÁSICO
89
nome varchar(30),
sobrenome varchar(30)
);
SELECT nome,sobrenome
FROM contato
O comando UPDATE
O comando UPDATE modifica os valores de uma ou mais tuplas (linhas) das
tabelas selecionadas. Nesse comando, a cláusula WHERE determina quais são
as linhas da tabela selecionadas para modificação. Em sua forma fundamental,
um comando de modificação UPDATE assume a forma UPDATE <tabela> SET
<atributos e valores> WHERE <condições>.
Note que, diferentemente do comando SELECT, o comando UPDATE só
pode ser aplicado em uma única tabela. Caso seja necessário modificar os valo-
res de atributos de mais de uma tabela, vários comandos UPDATE terão que ser
executados – todos possivelmente agrupados dentro de uma única transação.
UPDATE contato
UPDATE contato
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Assim como no comando SELECT, a cláusula WHERE é opcional também no
comando UPDATE. Nesse caso, todas as linhas da tabela informada serão sele-
cionadas para a execução das modificações solicitadas. No exemplo acima,
demonstramos que podemos executar operações aritméticas com os valores dos
atributos das tabelas. Nesse exemplo, atualizamos para 10% acima o peso de todos
os contatos (no caso de uma hipotética epidemia de obesidade).
UPDATE contato
O valor nulo também pode ser utilizado como valor de atribuição em comandos
UPDATE, desde que as restrições do schema do banco de dados assim o permitam.
Assim como o comando INSERT – vale lembrar que todas as restrições do
schema que se aplicam ao comando INSERT também são válidas para o comando
UPDATE.
O comando DELETE
O comando DELETE na SQL remove linhas de uma determinada tabela. Assim
como os comandos INSERT e UPDATE, ele possui uma cláusula WHERE para
limitar as linhas que serão processadas pelo comando. Novamente, assim como
nos comandos INSERT e UPDATE, a ausência da cláusula WHERE implica que
todas as linhas de uma determinada tabela serão processadas – o que no caso do
comando DELETE implica que o resultado será uma tabela vazia.
SQL BÁSICO
91
WHERE id = 5;
1. Escalabilidade elástica
Por anos, administradores de banco de dados apoiaram-se na escalabilidade vertical –
que consiste na compra de servidores maiores à medida que a carga aumenta – ao invés
da escalabilidade horizontal – distribuição dos bancos de dados em múltiplos servido-
res à medida que a carga aumenta. Entretanto à medida que os requisitos de carga de
transações e disponibilidade aumentam e os bancos de dados movem para a nuvem ou
para ambientes virtualizados, as vantagens econômicas da escalabilidade horizontal em
hardware comoditizado tornam-se irresistíveis.
SGBDRs podem não escalar tão facilmente em clusters comoditizados, mas a nova ge-
ração de banco de dados NoSQL é projetada para expandir-se transparentemente de
modo a tirar proveito de novos nós, e normalmente o banco de dados NoSQL é conce-
bido com hardware de baixo custo em mente.
2. Big data
Assim como os níveis de transações cresceram absurdamente na última década, o vo-
lume de dados que está sendo armazenado também cresceu massivamente. O’Reilly
chamou isso de “revolução industrial dos dados”. A capacidade dos SGBDRs tem crescido
para se equiparar a esses aumentos, mas assim como os níveis de transações, as restri-
ções de volumes de dados que podem ser efetivamente gerenciados na prática por um
único SGBDR tornaram-se intoleráveis para algumas empresas. Atualmente, os volumes
de “big data” que podem ser manipulados por sistemas NoSQL como o Hadoop superam
em muito o que pode ser manipulado pelos maiores SGBDRs disponíveis.
caros e altamente treinados DBAs. DBAs estão intimamente envolvidos no projeto, ins-
talação e otimização de sistemas baseados em SGBDRs.
Bancos de dados NoSQL são normalmente concebidos para requerer menos gerencia-
mento: reparos automáticos, distribuição de dados e modelos de dados mais simples
tendem a requisitos de administração e otimização menores – na teoria. Na prática, é
provável que os rumores da morte dos DBAs tenham sido um pouco exagerados. Al-
guém sempre será responsável pelo desempenho e disponibilidade de um repositório
de dados de missão crítica.
4. Economia
Bancos de dados NoSQL tipicamente utilizam clusters de servidores baratos para geren-
ciar a explosão no volume de transações e dados, enquanto que SGBDRs tendem a de-
pender de caros servidores e dispositivos de armazenamento proprietários. O resultado
é que o custo por gigabyte ou transações/segundo para o NoSQL pode ser muitas vezes
menor que o custo de SGBDRs, permitindo que você armazene e processe os dados com
um custo muito menor.
2. Suporte
Empresas querem a garantia de que, se um sistema chave falhar, terão um suporte com-
petente com um tempo de resposta aceitável. Todos os fornecedores de SGBDRs traba-
lham bastante para conseguir fornecer um elevado nível de suporte corporativo.
Em contraste, muitos sistemas NoSQL são projetos open-source e, embora existam mui-
tas empresas oferecendo suporte a banco de dados NoSQL, essas empresas normal-
mente são pequenas startups sem o alcance global, recursos de suporte ou credibilida-
de de empresas como Oracle, Microsoft ou IBM.
4. Administração
Os objetivos de projeto do NoSQL podem ser o de fornecer uma solução com custo zero
de administração, mas a realidade atual ainda não é essa. O NoSQL hoje requer muita
habilidade para instalar e muito esforço de manutenção.
5. Expertise
Existem literalmente milhões de desenvolvedores no mundo todo, em praticamente
todo segmento de negócios, que estão familiarizados com os conceitos e a programa-
ção em SGBDRs. Em contraste, praticamente todo desenvolver NoSQL ainda está em
processo de aprendizado. Essa situação será resolvida naturalmente com o passar do
tempo, mas, por enquanto, é muito mais fácil encontrar programadores ou administra-
dores SGBDR que um expert em NoSQL.
Conclusão
Bancos de dados NoSQL estão se tornando uma crescente e importante parte do cená-
rio de banco de dados e, quando utilizados de modo apropriado, podem oferecer bene-
fícios reais. Entretanto empresas devem proceder com cautela com total consciência das
limitações e problemas que estão associados com esses bancos de dados.
Guy Harrison é o diretor de pesquisa e desenvolvimento da Quest Software. Um reco-
nhecido expert em banco de dados com mais de 20 anos de experiência em aplicações,
administração de banco de dados, tuning de desempenho e desenvolvimento de sof-
tware. Guy é autor de vários livros e diversos artigos em tecnologias de banco de dados
e um palestrante regular em conferências técnicas.
CONSIDERAÇÕES FINAIS
Finalizada a leitura desta unidade, já temos a convicção de que você, como pro-
fissional comprometido(a) e fluente em inglês (sim, na área de Tecnologia da
Informação, inglês é obrigatório e deveria ser o idioma principal), já abordará
seus(suas) colegas, alunos(as) e profissionais, falando “síquel” ao invés do fami-
gerado “esse-quê-ele”, quando se referir à linguagem SQL.
Como toda tecnologia e assunto novo, SQL exige prática para o domínio.
Acreditamos piamente na educação por meio de exemplos como a melhor forma
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de se formar profissionais que consigam utilizar os conhecimentos assimilados
na execução prática das tarefas. Durante esta unidade, pudemos estudar a for-
mação dos comandos INSERT, UPDATE e DELETE e suas respectivas sintaxes e
cláusulas individuais. Em seguida, por meio de exemplos, praticamos uma série
de diferentes definições de comandos e explicamos o que se esperava de cada um
deles, bem como sua motivação. Crie seus próprios schemas baseado(a) nas abs-
trações reais do mundo que o cerca, exercite-se e execute consultas e comandos
de modificação SQL nesses seus schemas! Com a prática cotidiana, você perce-
berá que SQL também é bastante simples.
Até agora, fomos capazes de abordar as estruturas básicas da linguagem SQL.
Na próxima unidade, poderemos nos dedicar a alguns casos mais elaborados de
uso dessa popular linguagem.
SQL BÁSICO
97
aluno
id nome sobrenome ra email
professor
id nome sobrenome titulação
curso matrícula
id nome ano curso_fk aluno_fk
disciplina
id nome curso_fk professor_fk
IV
UNIDADE
MAIS SQL
Objetivos de Aprendizagem
■■ Definir consultas complexas em SQL.
■■ Apresentar os comandos de alteração de definições em SQL.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Consultas envolvendo NULL
■■ Consultas aninhadas (subqueries)
■■ Consultas utilizando joins
■■ Consultas com funções de agregação
■■ Comandos de alteração de schema
101
INTRODUÇÃO
Agora que já aprendemos a sintaxe básica dos comandos SQL, podemos nos
aventurar em consultas um pouco mais complexas. Em praticamente todos os
sistemas de bancos de dados disponíveis no mercado, sejam eles relacionais ou
NoSQL, as funções de consulta e manipulação básicas se equivalem. Isso signi-
fica que, com o material estudado até a unidade anterior, ainda não foi possível
perceber um dos bons diferenciais competitivos dos bancos de dados relacio-
nais, que é justamente a capacidade de se executar essas consultas um pouco
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introdução
102 UNIDADE IV
Nós já abordamos na unidade III que o valor NULL representa um valor ausente,
mas que pode ter diferentes interpretações. Algumas possibilidades de uso para
o valor NULL são:
■■ O valor é desconhecido. Pensando na tabela telefone do exemplo da uni-
dade III, um telefone pode ser NULL se você não sabe o valor do telefone
do contato.
■■ O valor não está disponível. No caso do telefone, você conhece o número
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
do telefone do contato, mas não gostaria que ele fosse exibido ou arma-
zenado, setando o valor NULL para representá-lo.
■■ O valor não é aplicável. Caso algum contato não tenha telefone, certa-
mente não faz sentido querer armazenar essa informação.
MAIS SQL
103
SELECT *
FROM contato
SELECT *
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FROM contato
SELECT telefone
SELECT telefone
FROM telefone
WHERE contato_fk IN
SELECT id
FROM contato
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
WHERE sobrenome = ‘Machado’
);
MAIS SQL
105
funcionário
id nome sobrenome cargo
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
subordinado
id nome sobrenome superior_fk
nome varchar(30),
sobrenome varchar(30),
cargo varchar(30)
);
nome varchar(30),
sobrenome varchar(30),
superior_fk int,
);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SELECT f.nome, f.sobrenome
FROM funcionario AS f
WHERE id IN(
SELECT superior_fk
FROM subordinado AS s
);
Esse exemplo reescrito com uma subquery é um caso especial de consulta ani-
nhada em SQL, pois, como pode notar, a subquery utiliza atributos da consulta
externa em sua cláusula WHERE. Chamamos esse caso especial de consultas
aninhadas correlacionadas.
FROM funcionario AS f
WHERE EXISTS (
SELECT *
FROM subordinado AS s
);
MAIS SQL
107
FROM funcionario AS f
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SELECT *
FROM subordinado AS s
);
Na unidade III, nós vimos que o conceito de join permite que façamos consultas
que utilizam duas ou mais tabelas, unidas por meio de uma ou mais condições
que unem os elementos das duas ou mais tabelas. Em alguns casos, é mais fácil
compreender as consultas se estas forem escritas na forma com join ao invés de
misturar as condições de join na cláusula WHERE.
Voltemos a utilizar o schema definido na unidade III em nossos exemplos
a seguir.
‘44%’;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FROM (contato JOIN telefone ON contato.id = telefone.contato_fk)
Nesse caso do exemplo reescrito com JOIN, a cláusula FROM possui uma joined
table que contém todos os atributos de ambas as tabelas unidas pelo JOIN e pela
condição do JOIN, que é o predicado após o ON.
Na SQL, o tipo de JOIN padrão, quando simplesmente declarado pela cláu-
sula JOIN, é o inner join, que descarta todas as tuplas que não possuam um valor
correspondente na segunda tabela do JOIN. Os outros tipos de JOIN disponí-
veis são descritos na tabela abaixo:
MAIS SQL
109
Exemplo 7: Selecione todos os nomes de contatos que iniciem com a letra ‘A’
e seus respectivos telefones. Se o contato não tiver um telefone, mostre somente
o nome e NULL como o valor do telefone.
É um caso típico de LEFT JOIN, em que você deseja listar todos os contatos,
tendo eles telefone ou não.
Uma das grandes vantagens da SQL e dos bancos de dados relacionais, se compa-
rados com outras alternativas não relacionais, são as suas funções de agregação.
Essas funções permitem uma análise resumida das informações armazenadas
nas tabelas. Funções de agregação populares da SQL incluem COUNT, SUM,
MAX, MIN e AVG que executam as funções matemáticas respectivas de conta-
gem, soma, valor máximo, valor mínimo e média aritmética.
Exemplo 8: Selecione o peso mínimo e máximo de todos os contatos.
FROM contato;
SELECT COUNT(*)
FROM contato
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de resultados retornados.
Exemplo 10: Selecione a quantidade de pesos distintos de todos os contatos.
FROM contato;
FUNÇÕES DE AGRUPAMENTO
MAIS SQL
111
FROM contato
GROUP by sobrenome;
FROM contato
GROUP by sobrenome
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Exemplo 13: Remova o schema agenda do banco de dados.
MAIS SQL
113
A coluna apelido é removida da tabela contato desde que não haja nenhuma res-
trição de integridade referencial nessa coluna.
Exemplo 19: Supondo que ainda não houvesse uma integridade referencial
entre a tabela telefone e a tabela contato, adicione-a.
contato(id);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Esse comando adiciona a restrição de integridade referecial entre a tabela tele-
fone e a tabela contato.
Também é possível remover as restrições de integridade referencial por meio
do comando ALTER TABLE <tabela> DROP FOREIGN KEY <nome>, mas,
para tanto, é necessário saber o nome da restrição no banco de dados. Como os
comandos para exibição das restrições das tabelas variam muito, de um produto
para outro, deixaremos essa solução como uma sugestão de estudo para você.
Entrevista com Fernando de la Riva, sócio-diretor da Concrete Solutions, falando das perspectivas
para o mercado em 2012, incluindo Cloud Computing e NoSQL.
Disponível em: <http://youtu.be/S2iQ2RKMw-w>. Acesso em: 8 jul. 2015.
MAIS SQL
115
O que é NoSQL?
O movimento NoSQL é um pedaço de um marketing de guerrilha que traz um grande
grupo de tecnólogos e tecnologias sob a mesma bandeira. As ideias que baseiam a infi-
nidade de solução que existe sob o termo “NoSQL” antes estavam somente disponíveis
para aqueles cujas necessidades tornaram necessária uma implementação própria e es-
pecífica. Nas áreas em que essas soluções são uma necessidade, seu valor já foi provado,
e agora o uso dessas soluções passou a ser uma opção para outros com um custo de
investimento muito menor. Para qualquer organização que tenha que escolher entre
NoSQL e dados relacionais tradicionais, há a difícil questão de qual das duas utilizar.
Ainda é muito cedo para fornecer uma resposta decisiva e definitiva, mas está claro que
muitas organizações podem se beneficiar de um modelo de dados que se encaixe me-
lhor nos tipos de armazenamento e consulta que eles executam na prática do que na te-
oria. Também parece provável que a maioria das soluções consistirá de um híbrido misto
de tecnologias de armazenamento, assim como um misto de estruturas de N-camadas
e cliente-servidor tende a ser mais comum do que comprometimentos absolutos com
uma única estratégia.
Líderes técnicos têm um papel importante na compreensão das opções disponíveis e na
adaptação do software, produtos e serviços que mais se aplicam ao seu domínio de ne-
gócios. Possuir uma estratégia lógica e localizada para a adoção do que o NoSQL oferece
de melhor será o fator que diferenciará o sucesso do fracasso em sua adoção.
Assim como o NoSQL apresenta novos desafios, ele também oferece recompensas sig-
nificativas àqueles que o incorporam com sucesso no seu portfólio de solução. Os prin-
cipais benefícios virão da maior compreensão sobre os dados, escalonamento flexível e
produtividade. A rica variedade de novos modelos de negócios possuem requisitos de
armazenamento que são suportados pelo NoSQL e as décadas de coerção de dados em
modelos relacionais ficaram para trás.
NoSQL é uma área grande e em expansão. Para os propósitos deste artigo, as caracterís-
ticas mais comuns de banco de dados NoSQL são:
1. Facilidade de uso em clusters com balanceamento de carga tradicionais.
2. Dados persistentes (não somente cachês).
3. Escalabilidade na memória disponível.
4. Não possuem schemas fixos e permitem a migração de schemas sem indispo-
nibilidade.
5. Possui sistemas de consulta individuais ao invés de uma linguagem de consulta
padrão.
6. São ACID dentro de um nó no cluster e eventualmente consistentes dentro do
cluster.
Nem todos os produtos deste artigo possuem todas essas propriedades, mas a maioria
dos bancos de dados que discutiremos suporta boa parte dessas características.
Conclusão
Dados tabulares permanecem tabulares e a planilha de cálculo ainda é a ferramenta de
modelagem de dados favorita no mundo dos negócios. SQL não vai morrer tão cedo.
Entretanto, até agora nós temos criado sistemas baseados nas restrições de um típico
banco de dados relacional. O NoSQL oferece a chance de se pensar de um modo diferen-
te sobre os dados e é uma possibilidade extremamente excitante.
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
exemplos apresentados nesta unidade para resolvê-los. A teoria é importantís-
sima, mas a prática é uma atividade fundamental para que você possa converter
toda essa teoria aprendida em resultados – tanto pessoais quanto profissionais.
A prática das atividades de autoestudo pode auxiliá-lo(a) na trabalhosa tarefa
de assimilação dos conceitos apresentados nesta unidade. Analise-as com cari-
nho e tenha um bom proveito.
MAIS SQL
125
beneficiário
id nome sobrenome altura plano_fk
dependente
id nome sobrenome beneficiário_fk
plano
id nome valor
V
UNIDADE
ESTUDO DE CASO
Objetivos de Aprendizagem
■■ Demonstrar ao aluno a prática na criação de um Banco de dados.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Descrevendo o Estudo de Caso
■■ Criando as Entidades e os Relacionamentos (DER)
■■ Trabalhando com SQL
129
INTRODUÇÃO
Introdução
9 ÁREAS DA TECNOLOGIA COM CARREIRAS PROMISSORAS (E COMO
APROVEITÁ-LAS)
Trabalhar com tecnologia vai muito além do que estamos acostumados a imaginar. Não
são somente as empresas que trabalham com esse segmento do mercado que preci-
sam dela e por isso é importante saber que excelentes vagas podem estar onde menos
imaginamos. Por exemplo: grandes instituições bancárias precisam de especialistas em
construção de sistemas digitais e segurança avançada e isso exige profissionais qualifi-
cados.
Mas não são apenas os bancos que precisam desses trabalhadores, praticamente qual-
quer empresa que trabalha com informações e isso também cria um mercado em ascen-
são. Quer saber quais outras habilidades podem fazer sua carreira decolar? Então confira
agora mesmo a seleção que trouxemos com os principais segmentos da tecnologia para
quem quer ter bons salários.
3. Gerenciamento de projetos
Um bom gerente de projetos precisa ter conhecimentos amplos no mercado de negó-
cios e de tecnologia. Essa exigência acaba excluindo muitos concorrentes das melhores
vagas, pois é difícil encontrar quem tenha experiência nesse quesito. Alguns executivos
afirmam que compreendem o aumento da demanda por causa de necessidades cada
vez mais específicas.
Há empresas que precisam de gerentes de projetos com metodologias Agile e outras
com Waterfall. É quase impossível encontrar quem domine perfeitamente os dois con-
ceitos e ainda consiga aplicar isso ao mundo Tech. Não é à toa que bons trabalhadores
nessa área conseguem ganhar mais de R$ 300 mil por ano — sem contar os grandes
ganhos em consultoria.
5. Governança de segurança
Com sistemas baseados em computadores e grandes volumes de dados circulando a
todo instante, não há como imaginar uma empresa que não invista em segurança digi-
tal. A quantidade de dinheiro que pode ser perdida em vazamentos e invasões faz valer
a injeção de dinheiro e grandes empresas têm sido prova disso. Como o Computer World
lembra, a HMS dos EUA triplicou a equipe de segurança digital nos últimos cinco anos.
Mais do que apenas localizar bugs e neutralizar ameaças, há também uma exigência
cada vez maior por pessoas que saibam lidar com as situações de crise. A mesma HMS
afirma que sempre está em busca de especialistas que sejam capazes de gerenciar as
situações de incidentes, pois esse é um grande diferencial atualmente. Ou seja, bons
trabalhadores na área de segurança não ficarão desempregados.
6. Desenvolvimento para a Web
Muitos desenvolvedores conseguiram crescer no mercado offline, mas em relação ao
desenvolvimento web, os números ainda são menos impressionantes. Existe uma gran-
de demanda por pessoas com habilidades em diversos tipos de aplicação e isso reflete
no aumento das ofertas salariais. Como mostra o VentureBeat, isso também anda junto
com a Computação em Nuvens.
Muitas das empresas que vendem tecnologia nos Estados Unidos estão investindo pe-
sado em plataformas PaaS (Plataforma como um Serviço, em português). Trata-se de um
sistema de computação em nuvens, que leva os desenvolvedores a programarem dire-
tamente na nuvem, sendo que ele fica disponível no mesmo local. Há empregos nessa
área nos EUA que pagam mais de R$ 400 mil ao ano.
8. Big Data
Esse termo se refere à grande quantidade de informações e à demanda por velocidade
no atendimento às requisições. As empresas precisam entregar dados e precisam fazer
isso na hora que os consumidores exigem. Vagas de emprego relacionadas à “Big Data”
aumentam todos os anos e o motivo para isso é bem claro: cada dia existem mais pes-
soas conectadas à internet e as conexões mais velozes fazem que a demanda por dados
cresça ainda mais.
Mas não basta saber como isso acontece para prosperar no mercado, pois é preciso
saber como fazer tudo funcionar corretamente. Por isso, o domínio de sistemas como
Sqoop vem sendo cada vez mais exigido pelos empregadores. A já mencionada pro-
gramação em R também diz respeito a amplos volumes de transmissão, assim como o
gerenciamento de databases.
Por causa do crescimento do Big Data, o profissional “analista de dados” voltou a ser
133
9. Computação em nuvens
Apesar de a computação em nuvens estar presente em quase tudo o que falamos ante-
riormente, é importante falar sobre ela em separado. Atualmente, muitas informações
passam a ser colocadas em servidores externos para facilitar o acesso de consumidores
e clientes, ao mesmo tempo em que isso pode tornar sistemas mais seguros — depen-
dendo da contratação de cada serviço, é claro.
Hoje, alguns dos grandes serviços e gerenciadores de Cloud Computing podem ser aces-
sados por qualquer pessoa por serem opensource — como o CloudStack, OpenStack e
a aclamada Hadoop. Mas também há algumas plataformas fechadas, como a NoSQL e a
Cloudera (uma versão mais comercial do Hadoop). Além de fazer o controle dos dados
entre nuvem e cliente, esses serviços também podem ser usados para uma série de so-
luções de segurança digital. Vale a pena investir!
.....
Como você pôde perceber, existem muitos conhecimentos que podem ser alimentados
para que uma carreira de sucesso seja construída. É claro que você não precisa saber
tudo o que foi mencionado aqui para conseguir um emprego, mas vale a pena ir atrás
de novas ferramentas nas áreas em que você deseja trabalhar. Isso certamente fará dife-
rença na hora de enviar o seu currículo.
Você já sabe em que área pretende trabalhar? A tecnologia pode ser uma aliada na hora
de fazer que seu trabalho se transforme em uma carreira? Esperamos que as dicas que
trouxemos hoje possam ajudar você nessa guinada.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
DESCREVENDO O ESTUDO DE CASO
ESTUDO DE CASO
135
conforme a restrição nos determina, não será criada por não haver Filiais.
Para facilitar o mapeamento do DER, é importante que ele seja feito em etapas,
para não perdermos nenhuma informação e restrição imposta pelo projeto. De
acordo com as restrições passadas no estudo de caso, iremos abordar cada um
dos casos:
1° Relacionamento:
■■ Uma venda pode ter apenas um Cliente.
(1,1) (1,N)
Clientes Possui Venda
Figura 33: Exemplo de Relacionamento em que uma venda pode ter apenas um Cliente
Fonte: o autor.
CLIENTES
VENDA
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 34: Exemplo de Relacionamento em que uma Venda pode ter apenas um Vendedor demonstrado em
formato de tabela
Fonte: os autores.
2° Relacionamento:
■■ Uma venda pode ter apenas um Vendedor.
(1,1) (1,N)
Vendedor Contém Venda
Figura 35: Exemplo de Relacionamento em que uma Venda pode ter apenas um Vendedor.
Fonte: os autores.
ESTUDO DE CASO
137
VENDEDOR
VENDA
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 36: Exemplo de Relacionamento em que uma Venda pode ter apenas um Vendedor demonstrado em
formato de tabelas
Fonte: os autores.
(1,1) (1,N)
Venda Contém Venda_Itens
Figura 37: Exemplo de Relacionamento em que uma Venda pode ter apenas vários itens
Fonte: os autores.
VENDA
VENDA_ITENS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 38: Exemplo de Relacionamento em que uma Venda pode ter apenas vários itens demonstrado em
formato de tabelas.
Fonte: os autores.
4° Relacionamento:
■■ Um produto pode estar em vários itens.
(1,1) (1,1)
Produtos Está Venda_Itens
Figura 39: Exemplo de Relacionamento em que um produto pode estar em vários itens
Fonte: os autores.
ESTUDO DE CASO
139
PRODUTOS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
VENDA_ITENS
Figura 40: Exemplo de Relacionamento em que um produto pode estar em vários itens demonstrado em
formato de tabelas
Fonte: os autores.
Clientes Vendedor
(1,1) (1,1)
(1,N) (1,N)
Possui Venda Contém
(1,1)
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Contém
(1,N)
(1,1) (1,1)
Produtos Está Venda_Itens
ESTUDO DE CASO
141
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 44: Exemplo da tabela Vendedor e seus atributos
Fonte: os autores.
ESTUDO DE CASO
143
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Criando as Tabelas
■■ PRODUTOS
PROD_DESCRI VARCHAR(60),
PROD_VPRECO NUMERIC(18,4),
PROD_UNIDAD VARCHAR(5),
PROD_FAMILI VARCHAR(10)
);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ CLIENTES
CLI_TIPOPESSOA CHAR(1),
CLI_STATUS VARCHAR(15),
CLI_BAIRRO VARCHAR(30),
CLI_ESTADO CHAR(2),
CLI_PAIS VARCHAR(6),
CLI_INSCRESTADUAL VARCHAR(25),
CLI_CEP VARCHAR(9),
CLI_CIDADE VARCHAR(35),
CLI_CNPJ_CPF VARCHAR(18),
CLI_ENDERE VARCHAR(60),
CLI_RAZAOSOCIAL VARCHAR(60),
CLI_NOMEFANTASIA VARCHAR(30),
CLI_EMAIL VARCHAR(60)
);
ESTUDO DE CASO
145
■■ VENDEDOR
VEN_NOME VARCHAR(30),
VEN_CNPJ_CPF VARCHAR(18),
VEN_TIPOPESSOA CHAR(1),
VEN_INSCRESTADUAL VARCHAR(25),
VEN_STATUS VARCHAR(15),
VEN_EMAIL VARCHAR(60),
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
VEN_VPERCENT_COMIS NUMERIC(5,4)
);
■■ VENDA
VDA_DMOVTO DATE,
VDA_VDINHEIRO NUMERIC(18,2),
VDA_VCARTAO NUMERIC(18,2),
VDA_VCHEQUE NUMERIC(18,2),
VDA_VPRAZO NUMERIC(18,2),
VDA_VOUTROS NUMERIC(18,2),
VDA_VTOTAL NUMERIC(18,2),
VDA_VRECEB NUMERIC(18,2),
VDA_VTROCO NUMERIC(18,2),
VDA_CODCLI_CLI INTEGER,
VDA_CODVEN_VEN INTEGER,
VDA_VDESC NUMERIC(18,2),
■■ VENDA_ITENS
VDI_CHAVE_VDA INTEGER,
VDI_NSEQUEN INTEGER,
VDI_CODPRO_PROD INTEGER,
VDI_QQUANTI NUMERIC(18,2),
VDI_VPREUNI NUMERIC(18,2),
VDI_VALORITEM NUMERIC(18,2),
VDI_PERCENTDESC NUMERIC(5,2),
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
VDI_QTDEDEVOLV NUMERIC(18,2),
VDI_DESCPROD VARCHAR(255),
PRIMARY KEY(VDI_CHAVE_VDA,VDI_NSEQUEN),
■■ CLIENTES
ESTUDO DE CASO
147
■■ VENDEDOR
■■ VENDA
■■ VENDA_ITENS
■■ CLIENTES
■■ VENDEDOR
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
ALTER TABLE VENDEDOR DROP VEN_STATUS;
■■ VENDA
■■ VENDA_ITENS:
ESTUDO DE CASO
149
■■ Deletando as Tabelas
■■ CLIENTES
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
INSERT INTO CLIENTES (CLI_CHAVE, CLI_TIPOPESSOA, CLI_STATUS, CLI_
VALUES (2, ‘J’, ‘ATIVO’, ‘ZONA 1’, ‘PR’, ‘BRASIL’, ‘123.123.234’, ‘87009-
■■ VENDEDOR
‘vendas@hotmail.com’, 1.5);
ESTUDO DE CASO
151
■■ VENDA
■■ VENDA_ITENS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
VDI_DESCPROD) VALUES (1, 2, 1, 9, 1000, 9000, 0, 0, ‘NOTEBOOK’);
ESTUDO DE CASO
153
■■ PRODUTOS
UPDATE PRODUTOS
WHERE PROD_CHAVE = 1;
UPDATE PRODUTOS
WHERE PROD_CHAVE = 1;
■■ CLIENTES
INATIVO*/
UPDATE CLIENTES
Paulista III*/
UPDATE CLIENTES
WHERE CLI_CHAVE = 1;
■■ VENDEDOR
UPDATE VENDEDOR
WHERE VEN_CHAVE = 1;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
UPDATE VENDEDOR
WHERE VEN_CHAVE = 1;
Produtos*/
a 1 */
WHERE PROD_CHAVE = 1;
ESTUDO DE CASO
155
■■ CLIENTES
WHERE CLI_CHAVE = 1;
■■ VENDEDOR
WHERE VEN_CHAVE = 1;
■■ CLIENTES
SELECT *
FROM CLIENTES
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
WHERE CLI_CHAVE = 1;
SELECT
CLI_CHAVE,
CLI_TIPOPESSOA,
CLI_STATUS,
CLI_NOMEFANTASIA,
CLI_ESTADO,
CLI_PAIS
FROM CLIENTES
ESTUDO DE CASO
157
■■ VENDAS
01/01/2015 */
SELECT *
FROM VENDA
6000.00 */
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SELECT VDA_DMOVTO
FROM VENDA
SELECT MAX(VDA_VTOTAL)
FROM VENDA;
■■ VENDA e VENDAS_ITENS
SELECT
VENDA_ITENS.VDI_QQUANTI AS “Quantidade”,
VDI_CHAVE_VDA;
Nos links abaixo, temos duas vídeoaulas com que você pode complementar seus estudos,
revisando e aprendendo novos conceitos, estudando a criação de bancos de dados, de tabelas e
de alguns conceitos novos, utilizando o PostgreSQL:
VIDEOAULA 1: <https://www.youtube.com/watch?v=IBiw9xXO5_Y>. Acesso em: 8 jul. 2015.
VIDEOAULA 2: <https://www.youtube.com/watch?v=zgFoOg9N43s>. Acesso em: 8 jul. 2015.
CONSIDERAÇÕES FINAIS
No estudo de banco de dados, nada melhor que a prática aliada à teoria. Nesta
unidade, tivemos como objetivo demonstrar um passo-a-passo de como é a cria-
ção de um banco de dados, partindo desde o momento em que as características
são passadas pelo cliente (Análise dos Requisitos) até o momento da criação prá-
tica utilizando a linguagem SQL (Structured Query Language ou Linguagem de
Consulta Estruturada).
Nesta unidade, demonstramos alguns comandos que nos ajudam tanto na
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
criação como na manutenção de um banco de dados. Um ponto importante a
respeito desta unidade é tê-la como base de consulta em seus estudos diários,
assim poderá não apenas saber os comandos ensinados, mas também aplicá-los
de maneira correta, sempre que necessário.
Contudo vale enfatizar que o aprendizado de Banco de dados e SQL demanda
muita leitura e também muita prática/treino. Nossa sugestão é que você tente
sempre fazer os exercícios e, em seguida, possa revisá-los para que a fixação do
conteúdo seja ainda melhor.
ESTUDO DE CASO
163
PROD_DESCRI VARCHAR(60),
PROD_VPRECO NUMERIC(18,4),
PROD_UNIDAD VARCHAR(5),
PROD_FAMILI VARCHAR(10)
);
CREATE TABLE CLIENTES (
CLI_TIPOPESSOA CHAR(1),
CLI_STATUS VARCHAR(15),
CLI_BAIRRO VARCHAR(30),
CLI_ESTADO CHAR(2),
CLI_PAIS VARCHAR(6),
CLI_INSCRESTADUAL VARCHAR(25),
CLI_CEP VARCHAR(9),
CLI_CIDADE VARCHAR(35),
CLI_CNPJ_CPF VARCHAR(18),
CLI_ENDERE VARCHAR(60),
CLI_RAZAOSOCIAL VARCHAR(60),
CLI_NOMEFANTASIA VARCHAR(30),
CLI_EMAIL VARCHAR(60)
);
VEN_NOME VARCHAR(30),
VEN_CNPJ_CPF VARCHAR(18),
VEN_TIPOPESSOA CHAR(1),
VEN_INSCRESTADUAL VARCHAR(25),
VEN_STATUS VARCHAR(15),
VEN_EMAIL VARCHAR(60),
VEN_VPERCENT_COMIS NUMERIC(5,4)
);
165
VDA_DMOVTO DATE,
VDA_VDINHEIRO NUMERIC(18,2),
VDA_VCARTAO NUMERIC(18,2),
VDA_VCHEQUE NUMERIC(18,2),
VDA_VPRAZO NUMERIC(18,2),
VDA_VOUTROS NUMERIC(18,2),
VDA_VTOTAL NUMERIC(18,2),
VDA_VRECEB NUMERIC(18,2),
VDA_VTROCO NUMERIC(18,2),
VDA_CODCLI_CLI INTEGER,
VDA_CODVEN_VEN INTEGER,
VDA_VDESC NUMERIC(18,2),
VDI_CHAVE_VDA INTEGER,
VDI_NSEQUEN INTEGER,
VDI_CODPRO_PROD INTEGER,
VDI_QQUANTI NUMERIC(18,2),
VDI_VPREUNI NUMERIC(18,2),
VDI_VALORITEM NUMERIC(18,2),
VDI_PERCENTDESC NUMERIC(5,2),
VDI_QTDEDEVOLV NUMERIC(18,2),
VDI_DESCPROD VARCHAR(255),
PRIMARY KEY(VDI_CHAVE_VDA,VDI_NSEQUEN),
COMMIT;
VALUES (2, ‘J’, ‘ATIVO’, ‘ZONA 1’, ‘PR’, ‘BRASIL’, ‘123.123.234’, ‘87009-
678’, ‘MARINGÁ’, ‘73.486.451/0001-54’, ‘AV. BRASIL 1001’, ‘MERCADO REDE
COMMIT;
Se há uma palavra que possa descrever meu sentimento ao concluir este livro, essa
talvez seja “alívio”. Sim, entre outras emoções que certamente passam pela minha
cabeça neste momento, o alívio de poder concluir este material se destaca. Já dizia
um antigo ditado sobre a arte da escrita e que era direcionado àqueles que preten-
diam produzir qualquer texto: “o que é escrito sem esforço é lido sem prazer”.
Não posso assegurar que você, caríssimo(a) leitor(a), conseguirá ler este material
com o prazer que eu gostaria que lhe proporcionasse – mas não duvide, certamen-
te, as palavras organizadas neste material foram fruto de um enorme esforço. E não
somente de esforço, mas também de dor, privação de certas liberdades que me fo-
ram tomadas pelo tempo dedicado, desespero por querer mais tempo para poder
esculpir melhor alguns parágrafos e a angústia de saber que, na verdade, o trabalho
nunca termina – ele apenas possui uma data de término. Tivesse mais seis meses ou
um ano, certamente não o terminaria antes do prazo final. Mas assim o é também
em tudo aquilo a que nos dedicamos.
Certamente, durante a leitura de alguns pontos do material, você pôde perceber a
grande inspiração que tenho ao falar de desenvolvimento de software. Sou partidário
da corrente que acredita que o mais importante de todo e qualquer software é o
problema que ele resolve e o quão satisfatório ele é para seus usuários. Considero
a utilidade do software como mecanismo fundamental para qualquer inovação
do conhecimento humano atual. Não me agrada observar alguns programadores
valorizando uma ferramenta qualquer em detrimento da utilidade do software
sendo desenvolvido. Esse é um dos motivos pelos quais eu considero o banco de
dados como apenas um detalhe diante de um projeto maior, que é o uso do próprio
software. Como já enfatizado nas unidades do material, o banco de dados é apenas
um detalhe, um detalhe importante, é verdade, mas apenas um detalhe dentro de
um escopo muito maior, que é a inovação que o software pode proporcionar.
Ao término deste material, você provavelmente já terá todas as habilidades ne-
cessárias para integrar um sistema de banco de dados relacional ao software que
você desenvolve. Saberá escolher as opções do mercado baseado(a) nos critérios
de classificação que apresentamos – e terá, com certeza, uma pontinha de dúvida a
respeito de se deve mesmo utilizar um banco de dados relacional. Afinal, as leituras
complementares, os vídeos e os estudos de caso apresentados no material tinham
como objetivo provocar o senso crítico para libertá-lo(a) da “prisão relacional”. Abra
a sua mente e liberte-se de paradigmas preestabelecidos! Saiba decidir qual sistema
de banco de dados deve escolher baseado(a) nos requisitos e utilidade da sua apli-
cação, ao invés de tomar decisões baseadas em medo, incerteza e dúvida.
Se optar por manter-se no ambiente dos sistemas de bancos de dados relacionais,
já terá todos os meios para criar, manipular, popular e consultar bancos de dados re-
lacionais, graças aos conhecimentos de SQL adquiridos. A lista deste material certa-
mente não é exaustiva, mas é um bom começo. Afinal, a jornada do conhecimento
nunca acaba.
CONCLUSÃO
Baseado(a) em tudo o que você pôde aprender, aproveite bem e utilize todo o con-
teúdo que tentamos transmitir para desenvolver um bom software, software inova-
dor. É isso o que nós, sinceramente, desejamos para sua frutífera jornada, que está
apenas começando. Bom proveito, boa sorte e, acima de tudo, muito sucesso!
Um grande abraço!
171
REFERÊNCIAS
TAURION, C. Banco de dados Open Source: presente ou futuro? IBM. Disponível em:
<https://www.ibm.com/developerworks/mydeveloperworks/blogs/ctaurion/en-
try/bancos_de_dados_open_source?lang=pt_br>. Acesso em: 6 jul. 2015.
ZHANG, J. Banco de dados na nuvem. IBM. Disponível em: <http://www.ibm.com/
developerworks/br/data/library/dmmag/DMMag_2011_Issue2/cloudDBaaS/>.
Acesso em: 6 jul. 2015..
173
GABARITO
UNIDADE I
1. Atomicidade se reflete, por exemplo, em transações bancárias. Enquanto o com-
provante ou outra forma de confirmação da transação não é recebido por um clien-
te em um caixa eletrônico, a transação não é concretizada, pois esta característica
visa garantir que as operações sempre ocorram por completo.
Consistência se aplica a situações onde a impressão de um extrato bancário só é
impresso se todos os dados que devam estar contidos nele já tenham sido proces-
sados de forma confiável, garantindo que a informação exibida é fiel aos dados reais
do banco de dados.
Isolamento é extremamente útil em bancos de dados com acesso remoto de mul-
tiusuários como ocorre em terminais de autoatendimento de bancos onde mais de
uma pessoa pode estar simultaneamente acessando os mesmos dados, como em
sistemas de consulta de preços em lojas.
Durabilidade se refere a situações como a de transações bancárias terem a garantia
de terem ocorrido de maneira completa, e sem o risco de interrupções não progra-
madas que possam gerar a perda de informações parciais ou totais da transação
por motivos diversos como interrupções na corrente elétrica, ou incidentes naturais.
3. Uma base de dados pode ser acessada por mais de um sistema SGBD simulta-
neamente, e este isolamento, aumenta a consistência da base de dados, pois cada
acesso de um SGBD a base funciona de forma mais segura.
GABARITO
UNIDADE II
1) A partir do estudado nesta unidade, defina Entidades Concretas e Entidades Abs-
tratas.
R: Entidades Concretas são entendidas como objetos do mundo real que podem ser
separadas e distinguíveis de outro objeto. Já as Entidades Abstratas são aquelas que
não temos de maneira tangível (intangível).
2) Crie uma Entidade Produtos com os seguintes atributos:
a) Código do Produto
b) Descrição do Produto
c) Unidade do Produto
d) Valor do Produto
e) Classificação do Produto
f ) Valor Custo do Produto
Agenda ou
Secretária Pacientes Médico
Atendimento
175
GABARITO
UNIDADE III
INSERT INTO aluno (id, nome, sobrenome, ra, email) VALUES (“1”, “João”, “Silva”,
“100000”, “jao@email.com”);
UNIDADE IV
1.
CREATE TABLE plano (
id INT PRIMARY KEY,
nome VARCHAR(30),
valor DECIMAL(7,2)
);
CREATE TABLE beneficiario (
id INT PRIMARY KEY,
nome VARCHAR(30),
sobrenome VARCHAR(30),
altura DECIMAL(3,2),
plano_fk INT,
FOREIGN KEY (plano_fk) REFERENCES plano(id)
);
CREATE TABLE dependente (
id INT PRIMARY KEY,
nome VARCHAR(30),
sobrenome VARCHAR(30),
beneficiario_fk INT NOT NULL,
FOREIGN KEY (beneficiario_fk) REFERENCES beneficiario(id)
);
3.c. SELECT plano.nome FROM plano WHERE ( SELECT COUNT(*) FROM benefi-
ciario WHERE beneficiario.altura > 1.75 AND beneficiario.plano_fk = plano.id );