Buscar

Exercicios_Processamento_Consultas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Faculdade de Computação – FACOM/UFMS
Disciplina: Banco de Dados II
Processamento de Consultas
Considere o esquema de banco de dados relacional Biblioteca mostrado abaixo, que é usado para
registrar livros, leitores e empréstimos de livros.
Considere, também, as seguintes consultas especificadas para o banco de dados Biblioteca:
a) Quantas cópias do livro intitulado “A Tribo Perdida” existem na unidade da biblioteca cujo nome
é “Central”?
pi Qt_copia ((σ Nome_unidade='Central' (Unidade_Biblioteca)) ⊗ (Livro_Copias ⊗ ( σ Titulo='A Tribo 
Perdida'(Livro))))
b) Para cada livro que é emprestado da unidade Central e cuja Data_devolucao é hoje, recupere o
título do livro, o nome e o endereço do usuário.
R1 ¬ pi Cod_unidade (σ Nome_unidade='Central' (Unidade_Biblioteca))
R2 ¬ pi Cod_livro, Nr_cartao ((σ Data_devolucao='hoje' (Livro_Emprestimos)) ⊗ R1)
RESULT ¬ pi Titulo, Nome, Endereco (Livro ⊗ Usuario ⊗ R2)
c) Recupere o nome, endereço e número de livros emprestados para todos os usuários que possuem
mais de cinco livros emprestados.
R1 (Nr_cartao, Total_livros_emp) ¬ Nr_cartao ℑ COUNT(Cod_livro) (Livros_Emprestimos)
R2 ¬ σ Total_livros_emp > 5 (R1)
RESULT ¬ pi Nome, Endereco,Total_livros_emp (R2 ⊗ Usuario)
Considere, ainda, as seguintes informações:
– Todas as relações estão ordenadas fisicamente pelo atributo chave.
– Todas as relações possuem um índice primário, especificado sobre o atributo chave.
Exercício 1
Analise as operações de seleção presentes nas três consultas para o banco de dados biblioteca e
defina qual o método (algoritmo) melhor se aplica para implementar cada situação. Faça suposições
adicionais sobre os atributos para refinar sua resposta.
Exercício 2
Implementação de junção por loop aninhado
Exemplo a ser considerado (OP6 vista em sala): Funcionario ⊗ Dnr = Dnumero Departamento
Número de buffers disponíveis na memória: nb = 7 (do mesmo tamanho de um bloco de disco).
A relação Departamento (D) possui rd = 50 registros armazenados em bd = 10 blocos de disco.
A relação Funcionario (F) possui rf = 6000 registros armazenados em bf = 2000 blocos de disco.
Usando a relação F no loop externo (cada bloco de F é lido uma vez e o arquivo D inteiro (cada um
dos blocos) é lido uma vez para cada vez que é lido (nb – 2) blocos de F:
- Número total de blocos acessados para o arquivo de loop externo F: bf = 2000
- Número de vezes que os blocos do arquivo F são carregados para a memória: bf/(nb – 2) = 400
- Número total de blocos acessados para o arquivo D: 10 * 400 = 4000
- Número total de acessos: 2000 + 4000 = 6000.
Usando a relação D no loop externo (cada bloco de D é lido uma vez e o arquivo F inteiro é lido
uma vez para cada nb – 2 blocos de D:
- Número total de blocos acessados para o arquivo de loop externo D: bd = 10
- Número de vezes que os blocos do arquivo D são carregados para a memória: bd/(nb – 2) = 2
- Número total de blocos acessados para o arquivo F: 2000 * 2 = 4000
- Número total de acessos: 10 + 4000 = 4010.
Considere as seguintes junções de duas vias:
a) Unidade_Biblioteca ⊗ Livro_Copias
b) Livro_Copias ⊗ Livro
c) Livro_Emprestimos ⊗ Unidade_Biblioteca
d) Livro_Emprestimos ⊗ Usuario
Com as informações adicionais mostradas a seguir, calcule o número total de acessos para a
implementação das operações de junção através de loop aninhado, como mostrado no exemplo
acima.
- Número de buffers disponíveis na memória: nb = 11 (do mesmo tamanho de um bloco de disco).
- A relação Livro (L) possui rl = 30000 registros armazenados em bl = 10000 blocos de disco.
- A relação Livro_Autor (LA) possui rla = 3000 registros armazenados em bla = 1000 blocos de
disco.
- A relação Editora (E) possui re = 200 registros armazenados em be = 40 blocos de disco.
- A relação Livro_Copias (LC) possui rlc = 50000 registros armazenados em blc = 15000 blocos de
disco.
- A relação Livro_Emprestimos (LE) possui rle = 24000 registros armazenados em ble = 8000
blocos de disco.
- A relação Unidade_Biblioteca (UB) possui rub = 50 registros armazenados em bub = 10 blocos de
disco.
- A relação Usuario (U) possui ru = 18000 registros armazenados em bu = 6000 blocos de disco.
Exercício 3
Implementação de junção por único loop
Exemplo a ser considerado (OP7 vista em sala): Departamento ⊗ Cpf_ger = Cpf Funcionario
A) Primeira opção de implementação – recuperar cada registro de Funcionario e usar índice em
Cpf_ger de Departamento (xcpf_ger representa o número de níveis de índice, considerando um índice
secundário multiníveis sobre o atributo; aqui xcpf_ger = 2).
Número de acessos a bloco: bf + (rf * (xcpf_ger + 1)) = 2000 + (6000 * 3) = 20000 acessos
B) Segunda opção de implementação – recuperar cada registro de Departamento e usar índice em
Cpf de Funcionário (xcpf representa o número de níveis de índice, considerando um índice
secundário multiníveis sobre o atributo; aqui xcpf = 4).
Número de acessos a bloco: bd + (rd * (xcpf + 1)) = 10 + (50 * 5) = 260 acessos
Considere as junções apresentadas a seguir, com os valores de x para cada atributo considerado.
Ainda, considere os dados do Exercício 2. Calcule o número total de acessos para a implementação
das operações de junção através de único loop, como mostrado no exemplo acima.
a) Unidade_Biblioteca ⊗ Livro_Copias
 xcod_unidade = 1; xcod_unidade = 12
b) Livro_Copias ⊗ Livro
 xcod_livro = 8; xcod_livro = 5
c) Livro_Emprestimos ⊗ Unidade_Biblioteca
 xcod_unidade = 4; xcod_unidade = 1
d) Livro_Emprestimos ⊗ Usuario
 xnr_cartao = 4; xnr_cartao = 4

Outros materiais