Prévia do material em texto
BANCO DE DADOS – ATIV 4
______________________________________________________________________________________
Os bancos de dados permitem que dados básicos, provenientes dos processos operacionais de um
negócio, possam ser processados e sumarizados para se obter informações de nível gerencial e
estratégico. Por exemplo, a quantidade de carros locados por semana em uma locadora, a quantidade de
alunos matriculados em uma escola, além de outras situações ilustram o que pode ser processado
facilmente com consultas via SELECT.
Uma determinada Fintech realiza empréstimos para pessoas de uma comunidade e a tabela EMPRESTIMO
mostrada a seguir apresenta os registros de empréstimos realizados:
CPF Data Sexo Valor
02311220012 10/04/2019 M R$ 1.200,00
91311770028 13/04/2019 F R$ 3.500,00
84911560025 21/04/2019 F R$ 4.100,00
73923560458 23/04/2019 M R$ 1.000,00
64821569228 02/05/2019 M R$ 1.600,00
A consulta que calcula o total de empréstimo em reais realizado pela Fintech é
Resposta correta. A alternativa está correta pois basta que seja usada a função SUM associada ao campo VALOR totalizando toda a
tabela (sem group by).
RES. SELECT SUM(valor) from EMPRESTIMO
______________________________________________________________________________________
A ordenação de registros é expressa em uma cláusula parte de uma consulta com um SELECT que contém
ainda as cláusulas where para realizar os filtros e pode ainda conter cláusulas “group by” para realizar
agrupamentos. Quando se está fazendo a ordenação de registros os campos são especificados com as
palavras chaves ‘ASC’ e ‘DESC’ indicando ordem ascendente e decrescente.
Ao escrever uma consulta proveniente da junção entre a tabela de Categoria e Produto em um sistema de
papelaria os registros encontrados foram os seguintes:
DCR_PRODUTO VALOR DCR_CATEGORIA
Caderno Matérias 15,60 Cadernos
Caderno Simples 11,45 Cadernos
Caneta 1,35 Canetas e afins
Grafite 7,50 Canetas e afins
Lapiseira 20,40 Canetas e afins
Fonte: Elaborado pelo autor (2019).
Qual cláusula de ordenação foi escrita na consulta?
Resposta correta. A alternativa está correta pois na listagem perceba que a categoria está em ordem crescente e dentro de cada
categoria os produtos estão em ordem crescente também.
RES. ORDER BY DCR_CATEGORIA ASC, DCR_PRODUTO ASC
______________________________________________________________________________________
O banco de dados serve de fonte para atender às diversas demandas de setores informatizados por um
determinado sistema, por exemplo, um setor de recursos humanos pode recuperar o total da folha de
pagamento, um setor de vendas pode requisitar a quantidade de produtos vendidos por categoria e um
setor de marketing pode requisitar alguns relatórios sobre os clientes.
Em um sistema de locação de automóveis, a tabela de cliente apresenta o seguinte formato e com uma
breve amostra de dados.
Cod Nome Sexo Idade Cidade
2 Ademar M 22 São Paulo
1 Fabrício M 41 Salvador
5 Joelma F 60 Rio de Janeiro
4 Carlos M 21 São Paulo
3 Adriana F 30 Curitiba
O setor de marketing está avaliando as regiões onde a empresa atua e o volume de clientes em cada
região. Daí, surgiu a necessidade de recuperar as cidades nesta tabela e para cada cidade, o total de
clientes existentes. A consulta que melhor atende à esta necessidade é:
Resposta correta. A alternativa está correta. Para atender a esta demanda de para cada cidade recuperar a quantidade de clientes é
necessário realizar uma consulta com agrupamento (CROUP BY), no caso um agrupamento por cidade e contabilizando (COUNT)
valores de outros campos.
RES.
SELECT CIDADE, COUNT(COD) FROM
CLIENTE GROUP BY CIDADE
______________________________________________________________________________________
A modelagem de um banco de dados permite compreender como as tabelas estão relacionadas entre si,
permite identificar chaves primárias e as chaves estrangeiras envolvidas nos relacionamentos e assim serve
de suporte para construção de consultas, especificamente para saber quais campos usar em junções.
Em um banco de dados, a parte referente ao cadastro de produtos associado ao itens de compras (tabela
PRODUTO_COMPRA) está mostrado a seguir.
Fonte: Elaborado pelo Autor (2019)
Em certo setor da empresa, houve a necessidade de recuperar todos os produtos (com sua descrição e a
descrição da sua categoria) que possuem compra e apenas aqueles que de fato possuem compras
associadas e que possuem a categoria cadastrada. A cláusula de junção após a palavra chave FROM na
consulta deve ser:
Resposta Correta: A Alternativa está correta pois pela especificação da consulta, que envolve da recuperar todos os produtos e apenas
os produtos que possuem compras associadas e com as categorias cadastradas deve ser expressada como INNER JOIN tanto entre
as tabelas CATEGORIAS e PRODUTOS quanto também com PRODUTO_COMPRA e que está sendo feito nesta resposta
RES.
FROM (CATEGORIA as C INNER JOIN PRODUTO as P
.ON C. COD_CATEGORIA = P.COD_CATEGORIA)
INNER JOIN PDUTO = COMPRA AS PC
ON P.COD_PRODUTO = PC.COD_PRODUTO)
______________________________________________________________________________________
Dados em tabelas diferentes podem compor um conjunto de resultados em um comando de SELECT
através das junções. Alguns tipos de junções são as junções internas e as junções externas, estas últimas
podem ser pela esquerda ou pela direita.
Em um sistema de uma universidade existe o cadastro de Alunos e o de Cursos, onde em aluno pode conter
apenas um curso e em curso pode conter vários cursos. Em uma consulta foi feita uma junção (join) entre
as tabelas Alunos e Cursos e na consulta SELECT, Alunos e Cursos estão escritas nesta ordem (Alunos
primeiro, antes de Cursos). O resultado da consulta está expresso na tabela a seguir:
Matrícula Nome Cod_Curso Dcr_Curso
322871 Joana Vieira 2 Engenharia Elétrica
322609 Márcio Nogueira 2 Engenharia Elétrica
212320 Cristiano Azevedo 12 Direito
212201 Lúcia Vergamini 12 Direito
NULL NULL 4 Gestão Ambiental
Quadro - Resultado de consulta com junção entre Alunos e Cursos
Fonte: Elaborado pelo autor (2019).
Qual foi a junção realizada nesta consulta?
Resposta correta. A resposta está correta pois perceba que na última linha existe o curso Gestão Ambiental que não possui aluno
correspondente, e o curso está a direita na escrita do SELECT porque aparece depois de aluno (está à esquerda). E se o campo de
aluno ficou NULL é por que os valores direita prevaleceram (right outer join).
RES. Right Outer Join
______________________________________________________________________________________
A criação de consultas em um banco de dados através do comando SELECT pode utilizar diversos
recursos, ordenação, agrupamentos, filtros e outros. Um destes recursos, que permite consultas mais
avançadas, é o uso de subconsultas em que um comando de SELECT pode conter um outro comando
SELECT em alguma de suas outras cláusulas.
Em um sistema de uma loja, imagine que existe uma tabela de COMPRAS com os seguintes dados.
NOME DATA VLR_COMPRA
Renato Nogueira 12/03/2019 35.60
Renato Nogueira 21/03/2019 120.70
Renato Nogueira 25/04/2019 81.50
Rodrigo Gonçalves 14/03/2019 57.80
Rodrigo Gonçalves 04/04/2019 31.00
Vanessa Aquino 16/03/2019 23.70
Vanessa Aquino 10/04/2019 92.50
Fonte: Elaborado pelo Autor (2019)
Para avaliar o volume de vendas dos clientes, o setor de marketing solicitou uma listagem com os clientes e
o seu volume total de compras e ordenados pelo volume de compras em ordem decrescente. A consulta que
reflete esta necessidade do setor de marketing é
Resposta correta: A alternativa está correta. Perceba que a subconsulta realiza a totalização de vendas e abrevia o somatório
SUM(VLR_COMPRA) como TOTAL. Este campo é o empregado na ordenação com a palavra DESC, em ordem decrescente, os
maiores primeiro.
RES.
SELECT *
FROM (SEL ECT NOME,
SUM(VLR_COMPRA) as TOTAL
FROM COMPRAS) AS
VOLUME_COMPRAS
ORDER BY TOTAL DESC______________________________________________________________________________________
As views permitem simplificar a forma como as consultas podem ser feitas pois uma view abstrai a
complexidade das consultas, por exemplo consultas com muitas junções, funções de agregação e outras.
Daí, uma consulta utiliza a view como se fosse uma tabela virtual cuja definição é baseada na consulta mais
complexa.
Em um determinado sistema de compras, foi criada a seguinte view.
CREATE VIEW functionbodyOnloadHandler(){ if(typeof(parent.feedHtmlOnLoadFn)=='function')
{ parent.feedHtmlOnLoadFn(this); } returntrue; } window.onload=bodyOnloadHandler; return; " />
COMPRAS_CLIENTES_VW AS (NOME, BAIRRO, DATA_NASC, SEXO,
COD_CIDADE, CIDADE, DATA_COMPRA, VALOR) AS SELECT CLI.NOME,
CLI.BAIRRO, CLI.DATA_NASC, CLI.SEXO, CID.COD_CIDADE,
CID.DCR_CIDADE, CMP.DATA_COMPRA, CMP.VLR_COMPRA FROM CLIENTE
CLI INNER JOIN COMPRA CMP ON CLI.COD_CLIENTE = CMP.COD_CLIENTE
INNER JOIN CIDADE AS CID ON CLI.COD_CIDADE = CID.COD_CIDADE
Assinale qual sentença apresenta uma consulta correta feita com o uso da View.
Resposta correta. A alternativa está correta pois o campo NOME está definido como um dos campos da VIEW no cabeçalho do
CREATE VIEW e o count(*) vai contar quantas compras por cliente, via recurso de GROUP BY.
RES. SELECT NOME, COUNT(*) FROM COMPRAS_CLIENTES_VW GROUP BY NOME
______________________________________________________________________________________
O comando de SELECT é um dos comandos de DML (Data Manipulation Language) responsável por
recuperar os registros de tabelas e ele possui vários recursos como filtros, ordenação, subconsultas e
junções, além de outros e isso permite que este comando atenda às mais variadas necessidade de
informação de seus usuários.
Em um sistema de Locadora, um determinado gerente solicitou à equipe de Tecnologia de Informação uma
listagem com o volume de locações de carros organizadas por modelo de carro. A listagem apresenta cada
modelo e para cada modelo apresenta a quantidade de locações.
A cláusula do comando SELECT que atende esta demanda de avaliar a quantidade de locações por modelo
de carro é o:
Resposta correta. A alternativa está correta, a cláusula de GROUP BY no comando de SELECT processa os agrupamentos em que os
registros com o mesmo valor de modelo são agrupados e com a contabilização (COUNT) associado a algum outro campo. Portanto,
para cada modelo serão contabilizadas as locações como requer o enunciado.
RES. GROUP BY
______________________________________________________________________________________
Em um banco de dados, os registros são armazenados e decompostos em tabelas e o relacionamento entre
elas ocorre através de chaves estrangeiras que permitem combinar os dados. Por exemplo, os dados de
cliente estão armazenados em uma tabela e os dados de compras estão armazenados em outra tabela,
para se listar os dados de clientes com os dados de compras em conjunto, usa-se a chave estrangeira
código do cliente para este elo.
Neste sistema de loja, a seguinte consulta foi realizada:
SELECT CLI.*, COMP.*
FROM CLIENTE AS CLI LEFT OUTER JOIN COMPRAS AS COMP
ON CLI.COD_CLIENTE = COMP.COD_CLIENTE
A respeito desta consulta assinale a afirmação correta:
Resposta correta. A alternativa está correta pois o tipo de junção empregado é o LEFT OUTER JOIN, isto é, a tabela da esquerda vai
ser usada como base e como CLIENTE foi escrita primeiro (é a tabela da esquerda) todos os registros dela serão recuperados.
RES. Todos os registros de clientes, mesmo que não tenham compras, serão visualizados
______________________________________________________________________________________
Um banco de dados pode ser composto de diversos componentes, existem as tabelas que são os principais
componentes mas existem também outros. Sobre um destes componentes, (ELMASRI, 2011, p.88) diz que
“não necessariamente existe em forma física, ela é considerada uma tabela virtual, ao contrário das tabelas
de base, cujas tuplas sempre estão armazenadas fisicamente no banco de dados. Isso limita possíveis
operações de atualização mas não oferece quaisquer limitações sobre a consulta.“
ELMASRI, R.; NAVATHE, S. Sistemas de Banco de Dados. São Paulo: Pearson Addison Wesley, 2011, p.88.
O componente objeto do comentário do EMASRI é
Resposta correta. A alternativa está correta. De fato uma view é uma tabela virtual, que não possui dados fisicamente e que por isso
oferece limitações para atualizações porém não oferece limitações quanto à consulta.
RES. Uma view
______________________________________________________________________________________