Laboratório de Banco de Dados Prof. Luiz Vivacqua Gabarito da Lista de exercícios para A1 Considere o seguinte banco de dados com informações de uma locadora de vídeos com lojas em diversos bairros: filmes (codigo, titulo, duração) clientes (matricula, nome, telefone, bairro, saldo) aluguel (codigo, matricula, data_aluguel) Responda em álgebra relacional: a) Quais são os títulos alugados pelo cliente de matricula 100 Пtitulo ( Ϭmatricula=100 (FILMES * ALUGUEL) ) b) Quais os títulos que nunca foram alugados R1 ← Пcodigo (FILMES) R2 ← Пcodigo (ALUGUEL) Resultado ← Пtitulo (FILMES * (R1-R2)) c)Quais os nomes dos clientes com saldo negativo em Copacabana Пnome ( Ϭ saldo < 0 ^ bairro= ‘copcabana’ ( CLIENTES) ) d) Quais títulos foram alugados por todos os clientes R1 ← ПMATRICULA (CLIENTES) R2 ← ПCODIGO, MATRICULA (ALUGUEL) R3 ← R2 ÷ R1 Resultado ← ПTITULO (FILMES * R3) Responda em SQL: a) Quais os títulos alugados pelo cliente de matricula 100 SELECT TITULO FROM FILMES F INNER JOIN ALUGUEL A ON F.CODIGO = A.CODIGO WHERE MATRICULA = 100; b) Qual o nome dos clientes que alugaram o filme “Gladiador” SELECT C.NOME FROM CLIENTES C, ALUGUEL A, FILMES F WHERE C.MATRICULA = A.MATRICULA AND A.CODIGO = F.CODIGO AND F.TITULO = ‘GLADIADOR’; c) Quais os títulos que nunca foram alugados SELECT TITULO FROM FILME WHERE CODIGO NOT IN(SELECT CODIGO FROM ALUGUEL); d) Quantos alugueis foram feitos por cada bairro SELECT BAIRRO, COUNT(*) FROM CLIENTE C INNER JOIN ALUGUEL A ON C.MATRICULA = A.MATRICULA GROUP BY BAIRRO; e) Qual o filme mais alugado em Copacabana SELECT F.TITULO FROM FILMES F, ( SELECT CODIGO, COUNT(*) AS CONTAGEM FROM ALUGUEL A, CLIENTE C WHERE A.MATRICULA = C.MATRICULA AND C.BAIRRO = ‘COPACABANA’ GROUP BY CODIGO) X WHERE F.CODIGO = X.CODIGO AND X.CONTAGEM = ( SELECT MAX(Y.CONTA) FROM ( SELECT COUNT(*) AS CONTA FROM ALUGUEL AA, CLIENTE CA WHERE AA.MATRICULA = CC.MATRICULA AND CC.BAIRRO = ‘COPACABANA’ GROUP BY CODIGO ) Y ); f) Obter, de acordo com o número de alugueis realizados para cada filme, a taxa de procura segundo a escala abaixo: menos de 20 alugueis - “POUCA PROCURA” de 20 a 40 alugueis - “MEDIA PROCURA” mais de 40 alugueis - “ALTA PROCURA” SELECT TITULO, CASE WHEN COUNT(*) < 20 THEN ‘POUCA PROCURA’ WHEN COUNT(*) >=20 AND COUNT(*) <= 40 THEN ‘MEDIA PROCURA’ WHEN COUNT(*) > 40 THEN ‘ALTA PROCURA’ END FROM FILMES F , ALUGUEL A WHERE F.CODIGO = A.CODIGO GROUP BY TITULO