Banco de dados
Por: thiagotallison • 4/5/2015 • Seminário • 1.010 Palavras (5 Páginas) • 690 Visualizações
2.5 Considere o banco de dados relacional da Figura 2.35, no qual as chaves primárias são sublinhadas, forneça uma expressão na álgebra relacional para expressar cada uma das seguintes consultas:
A. Encontre os nomes de todos os funcionários que trabalham para o First Bank Corporation.
( ∂ nome_empresa= “First Bank Corporation” (trabalha) )
∏nome_pessoa
B. Encontre os nomes e cidades de residência de todos os funcionários que trabalham para o First Bank Corporation.
(∂ nome_pessoa= “First Bank Corporation” (trabalha X funcionário) )
∏nome_pessoa
C. Encontre os nomes, ruas e cidades de todos os funcionários que trabalham para o First Bank Corporation e ganham mais de $10.000 por ano.
(trabalha X funcionário)
(∂ nome_empresa=”First Bank Corporation” ˄ salário > R$ 833)
∏nome_pessoa, rua, cidade
D. Encontre os nomes de todos os funcionários nesse banco de dados que moram na mesma cidade da empresa para a qual trabalham.
(trabalha X funcionário) X empresa)
(∂funcionário.nome_pessoa = trabalha.nome_pessoa ˄ trabalha.nome_empresa = empresa.nome_empresa ˄ funcionário.cidade=empresa.cidade
∏funcionário.nome_pessoa
E. Considere que as empresas podem estar localizadas em várias cidades, encontre todas as empresas em cada cidade onde a Small Bank Corporation está localizada.
(ρ tabela_SBC (∂ nome_empresa= “Small Bank Corporation” (empresa) X empresa ))
(∂ tabela_SBC.cidade= empresa.cidade ˄ tabela_SBC.nome_empresa ≠ empresa.nome_empresa
∏ nome_empresa
2.6 Considere a relação da figura 2.20, que mostra o resultado da consulta “encontre os nomes de todos os clientes que tem empréstimos no banco”. Reescreva a consulta para incluir não apenas o nome, mas também a cidade onde mora cada cliente. Observe que, agora, o cliente Jackson não aparece mais no resultado, ainda que ele realmente tenha um empréstimo no banco.
A. Explique porque Jackson não aparece no resultado.
Não aparece, pois quando é feito o cartesiano das duas tabelas, a operação não encontra o atributo número_emprestimo = L-14 na relação empréstimo. Então pela definição da operação, ela irá excluir todas as tuplas correspondentes a Jackson, já que ele não consegue associar “os dois” atributos numero_emprestimo deste.
B. Suponha que você queira que Jackson apareça no resultado. Como modificaria o banco de dados para conseguir esse intento?
Na relação empréstimo há um valor duplicado (L-11), onde causará uma inconsistência nos dados. O correto seria modificar um desses dois para o número correspondente ao de Jackson. Só assim o tomador Jackson iria aparecer na relação resultante tomador x empréstimo.
C. Novamente suponha que você queira que Jackson apareça no resultado. Escreva uma consulta usando junção externa que realize essa tarefa sem modificar o banco de dados.
Tomador (junção externa total) empréstimo
SIGMA nome_cliente = Jackson.
2.9 Considere a figura 2.35. De uma expressão de álgebra relacional para cada uma das seguintes consultas.
A. Encontre a empresa que possui mais funcionários.
A ← (trabalha (junçao natural) empresa (junçao natural) gerencia)
∏nome_empresa, G count.distinc(nome_empresa) (A))
...